CVE-2026-31790
Openssl 3.0.0 – 3.0.20
Raw vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:NCVSS 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
- 🇪🇺 ENISA EUVD: EUVD-2026-19969
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
Affected Assets
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.
Logging can record unhandled exceptions but does not prevent the weakness itself.
Monitoring may detect symptoms of unhandled conditions but does not eliminate the root weakness.
Secure development life cycle mandates exception handling and input validation that directly prevent missing checks for unusual conditions.
Application security requirements explicitly call for handling of exceptional conditions and error paths.
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.
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.