Skip to main content

OpenSSL CVE-2026-31789

| EUVDEUVD-2026-19968 CRITICAL
Out-of-bounds Write (CWE-787)
2026-04-07 openssl GHSA-j79m-9jxq-788r
Critical
Disputed · 9.8 NVD
Share

Severity by source

Sources disagree (Low–Critical)
NVD PRIMARY
9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
5.6 MEDIUM

AC:H because exploitation needs a 32-bit build, a >1 GB certificate, and an app that logs untrusted certs; impact is most likely a crash with only possible, unproven code execution, so C/I/A:L.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
SUSE
CRITICAL
qualitative
Red Hat
5.8 LOW
qualitative

vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

7
Source Code Evidence Fetched
Jul 24, 2026 - 08:12 vuln.today
Analysis Generated
Jul 24, 2026 - 08:12 vuln.today
CVSS changed
Apr 23, 2026 - 16:12 NVD
9.8 (CRITICAL)
EUVD ID Assigned
Apr 07, 2026 - 22:16 euvd
EUVD-2026-19968
Patch released
Apr 07, 2026 - 22:16 nvd
Patch available
CVE Published
Apr 07, 2026 - 22:00 cve.org
CRITICAL 9.8
CVE Published
Apr 07, 2026 - 22:00 nvd
N/A

DescriptionNVD

Issue summary: Converting an excessively large OCTET STRING value to a hexadecimal string leads to a heap buffer overflow on 32 bit platforms.

Impact summary: A heap buffer overflow may lead to a crash or possibly an attacker controlled code execution or other undefined behavior.

If an attacker can supply a crafted X.509 certificate with an excessively large OCTET STRING value in extensions such as the Subject Key Identifier (SKID) or Authority Key Identifier (AKID) which are being converted to hex, the size of the buffer needed for the result is calculated as multiplication of the input length by 3. On 32 bit platforms, this multiplication may overflow resulting in the allocation of a smaller buffer and a heap buffer overflow.

Applications and services that print or log contents of untrusted X.509 certificates are vulnerable to this issue. As the certificates would have to have sizes of over 1 Gigabyte, printing or logging such certificates is a fairly unlikely operation and only 32 bit platforms are affected, this issue was assigned Low severity.

The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.

AnalysisAI

Heap buffer overflow in OpenSSL's OCTET STRING-to-hexadecimal conversion routine (crypto/o_str.c) affects 32-bit builds of OpenSSL 3.0, 3.3, 3.4, 3.5 and 3.6. When an application parses and prints or logs an untrusted X.509 certificate whose SKID or AKID extension carries an OCTET STRING larger than ~1.4 GB, the buffer-size calculation (length x 3) overflows a 32-bit size_t, allocating an undersized buffer and writing past it. OpenSSL rates this Low severity because it requires >1 GB certificates and 32-bit platforms; there is no public exploit identified at time of analysis and EPSS is 0.01%, despite the input's headline CVSS of 9.8.

Technical ContextAI

The flaw lives in OpenSSL's generic string utilities (ossl_buf2hexstr_sep / buf2hexstr_sep in crypto/o_str.c), which convert arbitrary byte buffers into human-readable hex, optionally with a separator byte. For separated output the code computes the result length as buflen * 3 (two hex digits plus a separator per input byte); for unseparated output it uses 1 + buflen * 2. This is the classic CWE-787 (out-of-bounds write) rooted in an integer/size miscalculation: on ILP32 (32-bit) platforms size_t is 32 bits, so multiplying a buflen just over ~1.43 GB by 3 wraps around, yielding a small allocation while the subsequent write loop iterates over the true, huge input length. The affected code path is reached through X.509 certificate display of OCTET STRING-typed extension values such as Subject Key Identifier and Authority Key Identifier, which OpenSSL renders as colon-separated hex. The CPE cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:* confirms the OpenSSL library itself is the vulnerable component. The official fix adds explicit guards rejecting buflen > SIZE_MAX/3 (or (SIZE_MAX-1)/2 without a separator) with CRYPTO_R_TOO_MANY_BYTES before the multiplication. The FIPS provider modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are unaffected because this code sits outside the FIPS module boundary.

RemediationAI

Upgrade OpenSSL to a fixed release for your branch: 3.0.20, 3.3.7, 3.4.5, 3.5.6, or 3.6.2 (Vendor-released patch per the OpenSSL advisory at https://openssl-library.org/news/secadv/20260407.txt; upstream fix commit a24216018e1ede8ff01a4ff5afff7dfbd443e2f9). On managed distributions apply the vendor packages instead - RHSA-2026:7261, USN-8155-1, or the SUSE-SU-2026:1213/1214/1215/1216/1255 updates - and restart or reload services that link OpenSSL so the patched library is loaded. Where immediate patching is not possible, the practical compensating controls are: prefer 64-bit builds, since the integer overflow cannot occur there and this fully neutralizes the bug; and, on any application that displays or logs untrusted certificates, cap accepted certificate/input size well below 1 GB at the ingestion layer (a reverse proxy, TLS terminator, or application limit), which prevents the oversized OCTET STRING from reaching the hex conversion at the cost of rejecting abnormally large but legitimate inputs (in practice there are none this large). Avoid printing or logging attacker-supplied certificates on 32-bit hosts until patched.

CVE-2014-0160 HIGH POC
7.5 Apr 07

The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packe

CVE-2014-0195 MEDIUM POC
6.8 Jun 05

The dtls1_reassemble_fragment function in d1_both.c in OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2016-0800 MEDIUM POC
5.9 Mar 01

The SSLv2 protocol, as used in OpenSSL before 1.0.1s and 1.0.2 before 1.0.2g and other products, requires a server to se

CVE-2015-0204 MEDIUM POC
4.3 Jan 09

The ssl3_get_key_exchange function in s3_clnt.c in OpenSSL before 0.9.8zd, 1.0.0 before 1.0.0p, and 1.0.1 before 1.0.1k

CVE-2015-4000 LOW POC
3.7 May 21

The TLS protocol 1.2 and earlier, when a DHE_EXPORT ciphersuite is enabled on a server but not on a client, does not pro

CVE-2014-3566 LOW POC
3.4 Oct 15

The SSL protocol 3.0, as used in OpenSSL through 1.0.1i and other products, uses nondeterministic CBC padding, which mak

CVE-2016-2107 MEDIUM POC
5.9 May 05

The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a

CVE-2015-1793 MEDIUM POC
6.5 Jul 09

The X509_verify_cert function in crypto/x509/x509_vfy.c in OpenSSL 1.0.1n, 1.0.1o, 1.0.2b, and 1.0.2c does not properly

CVE-2022-3602 HIGH
7.5 Nov 01

A buffer overrun can be triggered in X.509 certificate verification, specifically in name constraint checking. Rated hig

CVE-2014-3470 MEDIUM
4.3 Jun 05

The ssl3_send_client_key_exchange function in s3_clnt.c in OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before

CVE-2017-3730 HIGH POC
7.5 May 04

In OpenSSL 1.1.0 before 1.1.0d, if a malicious server supplies bad parameters for a DHE or ECDHE key exchange then this

Vendor StatusVendor

SUSE

Severity: Critical
Product Status
Container private-registry/1.2/harbor-portal:1.2.0-1.8 Container private-registry/harbor-portal:1.1.2-2.17 Container suse/multi-linux-manager/5.1/x86_64/server-postgresql:5.1.3.6.18.1 Affected
Container suse/manager/4.3/proxy-httpd:4.3.17.9.76.9 Container suse/manager/4.3/proxy-squid:4.3.17.9.75.7 Container suse/manager/4.3/proxy-ssh:4.3.17.9.66.7 Affected
Container suse/manager/4.3/proxy-salt-broker:4.3.17.9.66.9 Container suse/manager/4.3/proxy-tftpd:4.3.17.9.66.8 Affected
Container suse/multi-linux-manager/5.1/x86_64/proxy-httpd:5.1.3.8.18.1 Container suse/multi-linux-manager/5.1/x86_64/proxy-squid:5.1.3.8.16.1 Container suse/multi-linux-manager/5.1/x86_64/proxy-ssh:5.1.3.8.16.1 Container suse/multi-linux-manager/5.1/x86_64/server-migration-14-16:5.1.3.8.16.1 Affected
Container suse/multi-linux-manager/5.1/x86_64/proxy-salt-broker:5.1.3.9.16.1 Container suse/multi-linux-manager/5.1/x86_64/proxy-tftpd:5.1.3.8.16.1 Container suse/multi-linux-manager/5.1/x86_64/server-saline:5.1.3.9.16.1 Container suse/multi-linux-manager/5.1/x86_64/server:5.1.3.8.16.1 Affected

Share

CVE-2026-31789 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy