osslsigncode — это инструмент, который реализует подпись и метку времени Authenticode. До версии 2.13 уязвимость, связанная с потерей целочисленного значения, существовала в osslsigncode версии 2.12 и более ранних версиях в коде вычисления хэша страницы PE (pe_page_hash_calc()). Когда обработка хэша страницы выполняется над PE-файлом, функция вычитает размер hdrsize из размера страницы без предварительной проверки того, что размер страницы >= hdrsize.
Если вредоносный PE-файл устанавливает SizeOfHeaders (hdrsize) больше, чем DivisionAlignment (pagesize), вычитание приводит к потере значения и приводит к очень большой беззнаковой длине. Код выделяет заполненный нулями буфер байтов размера страницы, а затем пытается хэшировать байты размера страницы - hdrsize из этого буфера. После опустошения это приводит к чтению из кучи за пределами допустимого диапазона и может привести к сбою процесса.
Уязвимость может возникнуть при подписании вредоносного PE-файла с включенным хешированием страниц (-ph) или при проверке вредоносного подписанного PE-файла, который уже содержит хэши страниц. Проверка уже подписанного файла не требует от проверяющего передать -ph. Эта уязвимость исправлена в версии 2.13.
Показать оригинальное описание (EN)
osslsigncode is a tool that implements Authenticode signing and timestamping. Prior to 2.13, an integer underflow vulnerability exists in osslsigncode version 2.12 and earlier in the PE page-hash computation code (pe_page_hash_calc()). When page hash processing is performed on a PE file, the function subtracts hdrsize from pagesize without first validating that pagesize >= hdrsize. If a malicious PE file sets SizeOfHeaders (hdrsize) larger than SectionAlignment (pagesize), the subtraction underflows and produces a very large unsigned length. The code allocates a zero-filled buffer of pagesize bytes and then attempts to hash pagesize - hdrsize bytes from that buffer. After the underflow, this results in an out-of-bounds read from the heap and can crash the process. The vulnerability can be triggered while signing a malicious PE file with page hashing enabled (-ph), or while verifying a malicious signed PE file that already contains page hashes. Verification of an already signed file does not require the verifier to pass -ph. This vulnerability is fixed in 2.13.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Osslsigncode_Project Osslsigncode
cpe:2.3:a:osslsigncode_project:osslsigncode:*:*:*:*:*:*:*:*
|
— |
2.13
|