CVE-2021-3712
Переполнение буфера чтения при обработке строк ASN.1
- Опубликовано
- 24 авг. 2021 г.
- Обновлено
- 16 апр. 2026 г.
- Назначение CNA
- openssl
- Наблюдены доказательства
- 8 авг. 2026 г.
Первичный CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:HВысокий · следующие 30 дней
- Процентиль
- 98,9 %
- Дата модели
- 21 сент. 2026 г.
EPSS – это статистическая оценка, а не достоверность или мера воздействия. Объедините это с CVSS, статусом KEV, воздействием и вашей средой.
Резюме
Строки ASN.1 внутри OpenSSL внутренне представлены в виде структуры ASN1_STRING, которая содержит буфер с данными строки и поле, хранящее длину буфера. Это отличается от обычных C-строк, которые представлены в виде буфера с данными строки, завершающегося байтом NUL (0). Хотя это не является строгим требованием, строки ASN.1, разбираемые с помощью собственных функций "d2i" OpenSSL (и других подобных функций разбора), а также любая строка, значение которой было установлено с помощью функции ASN1_STRING_set(), дополнительно завершают байтовый массив в структуре ASN1_STRING байтом NUL. Однако приложения могут напрямую создавать корректные структуры ASN1_STRING, которые не завершают байтовый массив байтом NUL, путём прямой установки полей "data" и "length" в структуре ASN1_STRING. Это также может произойти при использовании функции ASN1_STRING_set0(). Было обнаружено, что многочисленные функции OpenSSL, выводящие данные ASN.1, предполагают, что байтовый массив ASN1_STRING будет завершён байтом NUL, даже если это не гарантируется для строк, созданных напрямую. Если приложение запрашивает вывод структуры ASN.1, и эта структура ASN.1 содержит ASN1_STRING, созданные приложением напрямую без завершения поля "data" байтом NUL, то может произойти переполнение буфера при чтении. То же самое может произойти и при обработке ограничений имён (name constraints) сертификатов (например, если сертификат был напрямую создан приложением, а не загружен через функции разбора OpenSSL, и сертификат содержит структуры ASN1_STRING, не завершённые байтом NUL). Это также может произойти в функциях X509_get1_email(), X509_REQ_get1_email() и X509_get1_ocsp(). Если злоумышленник может заставить приложение напрямую создать ASN1_STRING, а затем обработать его через одну из затронутых функций OpenSSL, то данная проблема может проявиться. Это может привести к сбою (вызывая атаку типа «отказ в обслуживании»). Это также может привести к раскрытию содержимого приватной памяти (например, закрытых ключей или конфиденциального открытого текста). Исправлено в OpenSSL 1.1.1l (затронуты версии 1.1.1-1.1.1k). Исправлено в OpenSSL 1.0.2za (затронуты версии 1.0.2-1.0.2y).
Источники
1Ответственное использование
Используйте информацию об уязвимостях только в тех системах, которыми вы владеете или имеете право тестировать. Kitploit ссылается на метаданные общедоступных исследований и не хранит код эксплойта или вредоносные полезные данные.