All vulnerabilities

CVE-2021-3712

Read buffer overruns processing ASN.1 strings

Description

ASN.1 strings are represented internally within OpenSSL as an ASN1_STRINGstructure which contains a buffer holding the string data and a field holdingthe buffer length. This contrasts with normal C strings which are represented asa 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'sown "d2i" functions (and other similar parsing functions) as well as any stringwhose value has been set with the ASN1_STRING_set() function will additionallyNUL terminate the byte array in the ASN1_STRING structure.

However, it is possible for applications to directly construct valid ASN1_STRINGstructures 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 byusing the ASN1_STRING_set0() function.

Numerous OpenSSL functions that print ASN.1 data have been found to assume thatthe ASN1_STRING byte array will be NUL terminated, even though this is notguaranteed for strings that have been directly constructed. Where an applicationrequests an ASN.1 structure to be printed, and where that ASN.1 structurecontains ASN1_STRINGs that have been directly constructed by the applicationwithout NUL terminating the "data" field, then a read buffer overrun can occur.

The same thing can also occur during name constraints processing of certificates(for example if a certificate has been directly constructed by the applicationinstead of loading it via the OpenSSL parsing functions, and the certificatecontains non NUL terminated ASN1_STRING structures). It can also occur in theX509_get1_email(), X509_REQ_get1_email() and X509_get1_ocsp() functions.

If a malicious actor can cause an application to directly construct anASN1_STRING and then process it through one of the affected OpenSSL functionsthen this issue could be hit. This might result in a crash (causing a Denial ofService attack). It could also result in the disclosure of private memorycontents (such as private keys, or sensitive plaintext).

Patch Available

Fix available through Seal Security. 

No upgrade required, protect your application instantly.

Fix without upgrading
Score
Severity
Ecosystem
RPM
Publish Date
August 24, 2021
Modified Date
November 7, 2023
Score Vector
Affected Versions