В DecodeObjectId() в wolfcrypt/src/asn.c существовало два потенциальных места записи за пределами кучи. Во-первых, проверка границ проверяет только один доступный слот перед записью двух значений дуги OID (out[0] и out[1]), что позволяет выполнить 2-байтовую запись за пределами границ, когда outSz равно 1. Во-вторых, несколько вызывающих программ передают sizeof(decOid) (64 байта на 64-битных платформах) вместо счетчика элементов MAX_OID_SZ (32), в результате чего функция принимает созданные OID с 33 или более дугами, которые записывают за пределы конец выделенного буфера.
Показать оригинальное описание (EN)
Two potential heap out-of-bounds write locations existed in DecodeObjectId() in wolfcrypt/src/asn.c. First, a bounds check only validates one available slot before writing two OID arc values (out[0] and out[1]), enabling a 2-byte out-of-bounds write when outSz equals 1. Second, multiple callers pass sizeof(decOid) (64 bytes on 64-bit platforms) instead of the element count MAX_OID_SZ (32), causing the function to accept crafted OIDs with 33 or more arcs that write past the end of the allocated buffer.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Wolfssl Wolfssl
cpe:2.3:a:wolfssl:wolfssl:*:*:*:*:*:*:*:*
|
— |
<= 5.9.0
|