🇰🇷 한글 설명
OpenSSL의 CMS 복호화 과정에서 AES-WRAP-PAD 프리미티브가 보고된 키 크기보다 더 많은 바이트를 작성하여 8바이트 힙 경계 외 쓰기(Out-of-bounds write)가 발생합니다. 공격자가 조작된 CMS 메시지를 제공할 경우 힙 메모리가 손상되어 서비스 거부(DoS) 상태가 될 수 있습니다.
💡 쉬운 설명
암호화된 메시지를 해독하는 과정에서 메모리의 정해진 범위를 벗어나 데이터를 쓰는 오류가 발견되었습니다. 이로 인해 프로그램이 갑자기 종료되거나 시스템이 멈출 수 있습니다.
🇺🇸 원문 (English)
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.
📍 영향받는 시스템
OpenSSL CMS_decrypt() 함수를 사용하는 시스템 (버전 미상)
⚔️ 공격 벡터
조작된 OID를 포함한 악의적인 CMS 메시지를 전송하여 복호화 함수를 호출하도록 유도
🛡️ 대응 방법
AES-WRAP-PAD의 최악의 경우를 고려하여 출력 버퍼 크기를 조정하는 최신 OpenSSL 패치 적용
🔧 검증 코드
출력된 OpenSSL 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 보안 공지(Advisory)와 대조