Description
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.
Data: CVE.org, NVD, CISA KEV, FIRST EPSS, Ubuntu. Published as the sources state it, in English.
Affected products and versions
| Vendor | Product | Versions | |
| OpenSSL |
OpenSSL |
4.0.0 – < 4.0.2, 3.6.0 – < 3.6.4, 3.5.0 – < 3.5.8, 3.4.0 – < 3.4.7, 3.0.0 – < 3.0.22, 1.1.1 – < 1.1.1zi |
|
CPE matches (NVD) (5)
cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:* ≥ 3.0.0 < 3.0.22cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:* ≥ 3.4.0 < 3.4.7cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:* ≥ 3.5.0 < 3.5.8cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:* ≥ 3.6.0 < 3.6.4cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:* ≥ 4.0.0 < 4.0.2