CVE-2025-69419
Severity CVSS v4.0:
Pending analysis
Type:
CWE-787
Out-of-bounds Write
Publication date:
27/01/2026
Last modified:
27/01/2026
Description
Issue summary: Calling PKCS12_get_friendlyname() function on a maliciously<br />
crafted PKCS#12 file with a BMPString (UTF-16BE) friendly name containing<br />
non-ASCII BMP code point can trigger a one byte write before the allocated<br />
buffer.<br />
<br />
Impact summary: The out-of-bounds write can cause a memory corruption<br />
which can have various consequences including a Denial of Service.<br />
<br />
The OPENSSL_uni2utf8() function performs a two-pass conversion of a PKCS#12<br />
BMPString (UTF-16BE) to UTF-8. In the second pass, when emitting UTF-8 bytes,<br />
the helper function bmp_to_utf8() incorrectly forwards the remaining UTF-16<br />
source byte count as the destination buffer capacity to UTF8_putc(). For BMP<br />
code points above U+07FF, UTF-8 requires three bytes, but the forwarded<br />
capacity can be just two bytes. UTF8_putc() then returns -1, and this negative<br />
value is added to the output length without validation, causing the<br />
length to become negative. The subsequent trailing NUL byte is then written<br />
at a negative offset, causing write outside of heap allocated buffer.<br />
<br />
The vulnerability is reachable via the public PKCS12_get_friendlyname() API<br />
when parsing attacker-controlled PKCS#12 files. While PKCS12_parse() uses a<br />
different code path that avoids this issue, PKCS12_get_friendlyname() directly<br />
invokes the vulnerable function. Exploitation requires an attacker to provide<br />
a malicious PKCS#12 file to be parsed by the application and the attacker<br />
can just trigger a one zero byte write before the allocated buffer.<br />
For that reason the issue was assessed as Low severity according to our<br />
Security Policy.<br />
<br />
The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue,<br />
as the PKCS#12 implementation is outside the OpenSSL FIPS module boundary.<br />
<br />
OpenSSL 3.6, 3.5, 3.4, 3.3, 3.0 and 1.1.1 are vulnerable to this issue.<br />
<br />
OpenSSL 1.0.2 is not affected by this issue.
Impact
References to Advisories, Solutions, and Tools
- https://github.com/openssl/openssl/commit/41be0f216404f14457bbf3b9cc488dba60b49296
- https://github.com/openssl/openssl/commit/7e9cac9832e4705b91987c2474ed06a37a93cecb
- https://github.com/openssl/openssl/commit/a26a90d38edec3748566129d824e664b54bee2e2
- https://github.com/openssl/openssl/commit/cda12de3bc0e333ea8d2c6fd15001dbdaf280015
- https://github.com/openssl/openssl/commit/ff628933755075446bca8307e8417c14d164b535
- https://openssl-library.org/news/secadv/20260127.txt



