Security Resilience

CVE-2026-31790

Openssl 3.0.0 – 3.0.20

Published
07 April 2026
Modified
24 July 2026
Patch / advisory
CVSS Score v3.1 7.5
Click a component to see what it means
Raw vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
EPSS Score 0.010 63th percentile
Risk Priority 60 floored blend · peak EPSS

CVSS and EPSS are reproduced from their sources (NVD, FIRST EPSS). Risk Priority is our own derived reading, not an NVD score.

Summary

CVE-2026-31790 is a high-severity Improper Check for Unusual or Exceptional Conditions (CWE-754) vulnerability in Openssl Openssl. Its CVSS base score is 7.5 (High).

Operationally, ranked in the top 37% of CVEs by exploit likelihood; it is not currently listed in the CISA KEV catalog.

The strongest mitigations our analysis identified map to SA-11 (Developer Testing and Evaluation) and SI-10 (Information Input Validation) — see the control section below for these in your framework.

Deeper analysis AI-assisted summary

Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.

CVE-2026-31790 is a vulnerability in the RSASVE key encapsulation mechanism implemented via EVP_PKEY_encapsulate() in OpenSSL. It affects applications that use RSA/RSASVE without validating attacker-supplied RSA public keys beforehand. Specifically, when RSA_public_encrypt() fails on an invalid key, the code incorrectly treats a non-zero return value (which could be -1 masked as success) as valid, causing the uninitialized contents of the caller-provided ciphertext buffer to be sent to the peer instead of a proper KEM ciphertext. This issue impacts the FIPS modules in OpenSSL versions 3.0, 3.1, 3.3, 3.4, 3.5, and 3.6, with a CVSS v3.1 score of 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) and is classified under CWE-754 (Improper Check for Unusual or Exceptional Conditions).

A network-adjacent or remote attacker can exploit this by providing an invalid RSA public key during key encapsulation. No authentication or user interaction is required, allowing unauthenticated attackers to trigger the flaw in vulnerable applications. Successful exploitation results in the disclosure of sensitive data potentially lingering in the uninitialized buffer from prior process executions, leading to information leakage without impacting integrity or availability.

OpenSSL advisories recommend validating public keys prior to encapsulation by calling EVP_PKEY_public_check() or EVP_PKEY_public_check_quick() as a workaround. Patches are available in multiple OpenSSL GitHub commits, including 001e01db3e996e13ffc72386fe79d03a6683b5ac, abd8b2eec7e3f3fda60ecfb68498b246b52af482, b922e24e5b23ffb9cb9e14cadff23d91e9f7e406, d5f8e71cd0a54e961d0c3b174348f8308486f790, and eed200f58cd8645ed77e46b7e9f764e284df379e, which fix the return value handling in RSA_public_encrypt().

OWASP Top 10 for Web (2025)

EU & UK References

Vulnerability Data

Issue summary: Applications using RSASVE key encapsulation to establish a secret encryption key can send contents of an uninitialized memory buffer to a malicious peer. Impact summary: The uninitialized buffer might contain sensitive data from the previous execution of the…

more

application process which leads to sensitive data leakage to an attacker. RSA_public_encrypt() returns the number of bytes written on success and -1 on error. The affected code tests only whether the return value is non-zero. As a result, if RSA encryption fails, encapsulation can still return success to the caller, set the output lengths, and leave the caller to use the contents of the ciphertext buffer as if a valid KEM ciphertext had been produced. If applications use EVP_PKEY_encapsulate() with RSA/RSASVE on an attacker-supplied invalid RSA public key without first validating that key, then this may cause stale or uninitialized contents of the caller-provided ciphertext buffer to be disclosed to the attacker in place of the KEM ciphertext. As a workaround calling EVP_PKEY_public_check() or EVP_PKEY_public_check_quick() before EVP_PKEY_encapsulate() will mitigate the issue. The FIPS modules in 3.6, 3.5, 3.4, 3.3, 3.1 and 3.0 are affected by this issue.

CWE(s)

Related Threats

CVEs Like This One

CVE-2026-22796Same product: Openssl Openssl
CVE-2025-69420Same product: Openssl Openssl
CVE-2026-22795Same product: Openssl Openssl
CVE-2023-5678Same product: Openssl Openssl
CVE-2026-9076Same product: Openssl Openssl
CVE-2025-15468Same product: Openssl Openssl
CVE-2025-68160Same product: Openssl Openssl
CVE-2026-28389Same product: Openssl Openssl
CVE-2026-54874Same product: Openssl Openssl
CVE-2026-34183Same product: Openssl Openssl

Affected Assets

openssl
openssl
3.0.0 — 3.0.20 · 3.3.0 — 3.3.7 · 3.4.0 — 3.4.5

Mitigating Controls

Mitigating Controls (NIST 800-53 r5) AI

Developer testing and evaluation explicitly exercises unusual conditions to find missing or incorrect checks.

Input validation directly requires checking for unexpected or malformed conditions before they propagate.

Security engineering principles include structured handling of edge cases and exceptions during design.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

A.8.15 Logging partial match
finds

Logging can record unhandled exceptions but does not prevent the weakness itself.

finds

Monitoring may detect symptoms of unhandled conditions but does not eliminate the root weakness.

blocks

Secure development life cycle mandates exception handling and input validation that directly prevent missing checks for unusual conditions.

blocks

Application security requirements explicitly call for handling of exceptional conditions and error paths.

blocks

A.8.27 mandates security-by-design principles (fail securely, least privilege, distrust external input, security-oriented design reviews) that reach some but not most CWE-754 cases; many exceptional-condition checks live in low-level code paths outside architecture-level engineering.

prevents

Secure coding standards directly mandate proper checks for exceptional and unusual conditions.

Hardening callouts derived

DISA STIG baselines are authored against specific weaknesses. Where this CVE cites a broad weakness class, the mapping is not asserted at that abstraction (owner ruling, 2026-09-25: grade only at Base and below), so no rule is shown here rather than a rule shown against the wrong grain.

  • No fine-grained STIG row for CWE-754, a class-level weakness. Rules are authored against its narrower children: CWE-354.

References