Ad

CVE-2026-17510

HIGH CVSS 3.1: 7,5 EPSS 0.45%
Обновлено 12 августа 2026
Jonasbn
Параметр Значение
CVSS 7,5 (HIGH)
Уязвимые версии до 1.98
Тип уязвимости CWE-476 (Разыменование нулевого указателя)
Поставщик Jonasbn
Публичный эксплойт Нет

Версии Crypt::OpenSSL::PKCS12 до 1.98 для Perl допускают разыменование NULL-указателя в print_attribute через атрибут BMPSTRING нулевой длины. print_attribute() определяет размер буфера назначения для атрибута BMPSTRING по его объявленной длине в байтах с помощью `Renew(*attribute, length, char)`. Атрибут нулевой длины приводит к перераспределению нулевого размера, которое Perl реализует как свободное возвращение NULL, поэтому указатель буфера становится NULL, следующий `strncpy` ничего не копирует, а вызывающая сторона разыменовывает NULL в `strlen()`, который передается в `newSVpvn()`. Нулевая длина BMPSTRING является четной, поэтому декодер ASN.1 принимает ее, и значение достигает этого кода.

Размер плеч UTF8STRING, OCTET STRING и BIT STRING равен `length + 1` или `length * 4 + 1` и не затрагивается. Любой вызывающий объект, который передает ненадежный файл PKCS#12 в info_as_hash(), может привести к сбою процесса. info() печатает значения атрибутов напрямую, не изменяя размер буфера, и на это не влияет.

Показать оригинальное описание (EN)

Crypt::OpenSSL::PKCS12 versions before 1.98 for Perl allow a NULL pointer dereference in print_attribute via a zero length BMPSTRING attribute. print_attribute() sizes the destination buffer for a BMPSTRING attribute from its declared byte length with `Renew(*attribute, length, char)`. A zero length attribute makes that a zero size reallocation, which Perl implements as a free returning NULL, so the buffer pointer becomes NULL, the following `strncpy` copies nothing, and the caller dereferences NULL in the `strlen()` it passes to `newSVpvn()`. A zero length BMPSTRING is even length, so the ASN.1 decoder accepts it and the value reaches this code. The UTF8STRING, OCTET STRING and BIT STRING arms size on `length + 1` or `length * 4 + 1` and are unaffected. Any caller that passes an untrusted PKCS#12 file to info_as_hash() can crash the process. info() prints attribute values directly without sizing a buffer and is unaffected.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Нет
Нет модификации данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1

Уязвимые продукты

jonasbn:crypt::openssl::pkcs12

Связанные уязвимости