Уязвимость обработки строк ASN.1 в OpenSSL, приводящая к некорректному завершению строки и возможным ошибкам
Описание
Строки ASN.1 в OpenSSL представляются как структура ASN1_STRING
, содержащая буфер с данными строки и поле, определяющее длину буфера. В отличие от обычных C-строк, строки ASN.1 не обязательно завершаются NUL
(0) байтом. Хотя это и не является обязательным требованием, строки ASN.1, разбираемые с использованием функций d2i
OpenSSL (и других аналогичных функций), а также любые строки, значение которых установлено с помощью функции ASN1_STRING_set()
, обычно содержат NUL
завершающий байт в структуре ASN1_STRING
. Однако приложения могут напрямую формировать корректные структуры ASN1_STRING
, которые не содержат NUL
завершающего байта, путем непосредственного задания полей data
и length
в массиве ASN1_STRING
. Это также возможно при использовании функции ASN1_STRING_set0()
. Обнаружено, что множество функций OpenSSL, выводящих данные ASN.1, предполагают, что байтовый массив ASN1_STRING
завершается NUL
.
Затронутое ПО
OpenSSL
Тип уязвимости
Ошибка в обработке данных, связанная с некорректным завершением строк
Ссылки
- Mailing ListThird Party Advisory
- PatchThird Party Advisory
- PatchThird Party Advisory
- Third Party Advisory
- Mailing ListThird Party Advisory
- Mailing ListThird Party Advisory
- Third Party Advisory
- Third Party Advisory
- Third Party Advisory
- Third Party Advisory
- Vendor Advisory
- PatchThird Party Advisory
- Third Party Advisory
- PatchThird Party Advisory
- Third Party Advisory
Уязвимые конфигурации
Одно из
Одно из
Одно из
Одно из
Одно из
Одно из
Одно из
EPSS
7.4 High
CVSS3
5.8 Medium
CVSS2
Дефекты
Связанные уязвимости
ASN.1 strings are represented internally within OpenSSL as an ASN1_STRING structure which contains a buffer holding the string data and a field holding the buffer length. This contrasts with normal C strings which are repesented as a buffer for the string data which is terminated with a NUL (0) byte. Although not a strict requirement, ASN.1 strings that are parsed using OpenSSL's own "d2i" functions (and other similar parsing functions) as well as any string whose value has been set with the ASN1_STRING_set() function will additionally NUL terminate the byte array in the ASN1_STRING structure. However, it is possible for applications to directly construct valid ASN1_STRING structures which do not NUL terminate the byte array by directly setting the "data" and "length" fields in the ASN1_STRING array. This can also happen by using the ASN1_STRING_set0() function. Numerous OpenSSL functions that print ASN.1 data have been found to assume that the ASN1_STRING byte array will be NUL ter...
ASN.1 strings are represented internally within OpenSSL as an ASN1_STRING structure which contains a buffer holding the string data and a field holding the buffer length. This contrasts with normal C strings which are repesented as a buffer for the string data which is terminated with a NUL (0) byte. Although not a strict requirement, ASN.1 strings that are parsed using OpenSSL's own "d2i" functions (and other similar parsing functions) as well as any string whose value has been set with the ASN1_STRING_set() function will additionally NUL terminate the byte array in the ASN1_STRING structure. However, it is possible for applications to directly construct valid ASN1_STRING structures which do not NUL terminate the byte array by directly setting the "data" and "length" fields in the ASN1_STRING array. This can also happen by using the ASN1_STRING_set0() function. Numerous OpenSSL functions that print ASN.1 data have been found to assume that the ASN1_STRING byte array will be NUL ter...
ASN.1 strings are represented internally within OpenSSL as an ASN1_STR ...
EPSS
7.4 High
CVSS3
5.8 Medium
CVSS2