🇰🇷 한글 설명
PKCS7 서명 또는 signedAndEnveloped 데이터를 검증할 때 NULL 포인터 역참조가 발생할 수 있는 취약점입니다. 서명에 사용된 해시 알고리즘은 알려져 있으나 해당 구현이 사용 불가능할 경우, 초기화 함수의 반환 값을 확인하지 않아 Digest API를 잘못 사용하여 프로그램이 충돌할 수 있습니다.
💡 쉬운 설명
인증된 서명을 확인하는 과정에서 특정 암호화 기술이 준비되지 않았을 때, 프로그램이 이를 제대로 처리하지 못하고 갑자기 꺼져버리는 문제입니다. 공격자가 특수하게 조작된 서명 데이터를 보내면 시스템을 강제로 종료시킬 수 있습니다.
🇺🇸 원문 (English)
A NULL pointer can be dereferenced when signatures are being
verified on PKCS7 signed or signedAndEnveloped data. In case the hash
algorithm used for the signature is known to the OpenSSL library but
the implementation of the hash algorithm is not available the digest
initialization will fail. There is a missing check for the return
value from the initialization function which later leads to invalid
usage of the digest API most likely leading to a crash.
The unavailability of an algorithm can be caused by using FIPS
enabled configuration of providers or more commonly by not loading
the legacy provider.
PKCS7 data is processed by the SMIME library calls and also by the
time stamp (TS) library calls. The TLS implementation in OpenSSL does
not call these functions however third party applications would be
affected if they call these functions to verify signatures on untrusted
data.
📍 영향받는 시스템
OpenSSL 라이브러리를 사용하여 PKCS7 또는 타임스탬프(TS) 검증 기능을 사용하는 애플리케이션
⚔️ 공격 벡터
신뢰할 수 없는 소스로부터 조작된 PKCS7 서명 또는 타임스탬프 데이터를 전달하여 서비스 거부(DoS) 유발
🛡️ 대응 방법
OpenSSL을 최신 보안 패치 버전으로 업데이트하거나, 필요한 레거시 프로바이더(Legacy Provider)를 명시적으로 로드하도록 설정
🔧 검증 코드
출력된 OpenSSL 버전이 해당 취약점이 해결된 패치 버전인지 확인