Vulnerability Details CVE-2026-63072
Issue summary: OpenSSL CMS decryption sizes the key-unwrap output buffer based
on querying the unwrapped key size, but the AES-WRAP-PAD unwrap primitive
can write and cleanse more bytes than that query reports, causing an 8-byte
out-of-bounds heap write.
Impact summary: An attacker who supplies a crafted CMS message can trigger a
deterministic 8-byte out-of-bounds heap write when the victim decrypts it
with CMS_decrypt(), corrupting the heap and typically resulting in a Denial
of Service.
CWE: CWE-787: Out-of-bounds Write
Description: The key-wrap OID is potentially attacker-controlled on the wire.
CMS unwrapping allows both id-aesNNN-wrap-pad and id-aesNNN-wrap ciphers.
An attacker can take a legitimate message and change a single OID byte to
select the padded variant while leaving the message otherwise valid. Since
the unwrap key is derived from the recipient's private operation (ECDH key
agreement or ML-KEM decapsulation), the RFC 5649 integrity check cannot
pass, and the decryption fails with integrity failure.
The write is a fixed-size (8-byte), fixed-value (zero) heap overflow
immediately past the allocation, requires no special configuration, and is
reachable from the public CMS_decrypt() function. The consequence is
a heap corruption leading to a Denial of Service. The fix in the CMS code
sizes the unwrap output buffer for the worst case so a failed unwrap cannot
write past the allocation.
FIPS impact: no
As the CMS code lives outside the FIPS module boundary, no FIPS
modules are affected by this CVE.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.006
EPSS Ranking 47.4%
CVSS Severity
CVSS v3 Score 7.5
Products affected by CVE-2026-63072
-
cpe:2.3:a:openssl:openssl:3.0.0
-
cpe:2.3:a:openssl:openssl:3.0.1
-
cpe:2.3:a:openssl:openssl:3.0.10
-
cpe:2.3:a:openssl:openssl:3.0.11
-
cpe:2.3:a:openssl:openssl:3.0.12
-
cpe:2.3:a:openssl:openssl:3.0.13
-
cpe:2.3:a:openssl:openssl:3.0.14
-
cpe:2.3:a:openssl:openssl:3.0.15
-
cpe:2.3:a:openssl:openssl:3.0.19
-
cpe:2.3:a:openssl:openssl:3.0.2
-
cpe:2.3:a:openssl:openssl:3.0.20
-
cpe:2.3:a:openssl:openssl:3.0.21
-
cpe:2.3:a:openssl:openssl:3.0.3
-
cpe:2.3:a:openssl:openssl:3.0.4
-
cpe:2.3:a:openssl:openssl:3.0.5
-
cpe:2.3:a:openssl:openssl:3.0.6
-
cpe:2.3:a:openssl:openssl:3.0.7
-
cpe:2.3:a:openssl:openssl:3.0.8
-
cpe:2.3:a:openssl:openssl:3.0.9
-
cpe:2.3:a:openssl:openssl:3.4.0
-
cpe:2.3:a:openssl:openssl:3.4.1
-
cpe:2.3:a:openssl:openssl:3.4.2
-
cpe:2.3:a:openssl:openssl:3.4.3
-
cpe:2.3:a:openssl:openssl:3.4.4
-
cpe:2.3:a:openssl:openssl:3.4.5
-
cpe:2.3:a:openssl:openssl:3.4.6
-
cpe:2.3:a:openssl:openssl:3.5.0
-
cpe:2.3:a:openssl:openssl:3.5.1
-
cpe:2.3:a:openssl:openssl:3.5.2
-
cpe:2.3:a:openssl:openssl:3.5.3
-
cpe:2.3:a:openssl:openssl:3.5.4
-
cpe:2.3:a:openssl:openssl:3.5.5
-
cpe:2.3:a:openssl:openssl:3.5.6
-
cpe:2.3:a:openssl:openssl:3.5.7
-
cpe:2.3:a:openssl:openssl:3.6.0
-
cpe:2.3:a:openssl:openssl:3.6.1
-
cpe:2.3:a:openssl:openssl:3.6.2
-
cpe:2.3:a:openssl:openssl:3.6.3
-
cpe:2.3:a:openssl:openssl:4.0.0