🇰🇷 한글 설명
OpenSSL의 CMP 응답 검증 과정에서 공격자가 제어하는 송신자 식별 이름(Distinguished Name)이 포맷 문자열로 직접 전달되는 취약점이 발견되었습니다. 이로 인해 악의적인 CMP 엔드포인트가 특수하게 조작된 응답을 보낼 경우 CMP 클라이언트가 충돌하여 서비스 거부(DoS) 상태에 빠질 수 있습니다.
💡 쉬운 설명
인증 과정에서 상대방의 이름을 확인하는 도중, 이름에 특수 기호를 섞어 보내면 프로그램이 이를 잘못 해석하여 갑자기 꺼져버리는 문제입니다. 공격자가 가짜 서버를 만들어 이 정보를 보내면 사용자의 보안 프로그램이 멈출 수 있습니다.
🇺🇸 원문 (English)
Issue summary: OpenSSL CMP response validation passed an unexpected response
sender distinguished name directly as the format string to `ERR_raise_data()`.
Impact summary: A malicious or intercepted CMP endpoint can crash a CMP client
that enforces an expected sender or uses a pinned server certificate whose
subject becomes the default expected sender.
CWE: CWE-134 (Use of Externally-Controlled Format String)
Description: When validating a received CMP message, ossl_cmp_msg_check_update()
converts the peer-supplied sender distinguished name with X509_NAME_oneline()
and passes it directly as the format argument to ERR_raise_data(). Percent
characters survive the conversion, so a sender DN such as "CN=%s%n" reaches
BIO_vsnprintf() as an attacker-controlled format string with no matching variadic
arguments. This path is only reached when the caller configures an expected
sender or pins a server certificate, which is the normal configuration for a
CMP client validating server responses.
Since the attacker controls the format string but none of the variadic
arguments, such specifiers as %s and %n dereference or write through unrelated
stack contents and crash the client. The reliable consequence is a denial of
service, when the response comes from a malicious or intercepted CMP endpoint.
There is no controlled memory write, arbitrary-address read, or reliable path
to remote code execution.
FIPS impact: no
No FIPS modules are affected by this issue, as the CMP protocol
implementation is outside the OpenSSL FIPS module boundary.
📍 영향받는 시스템
OpenSSL CMP 클라이언트 기능을 사용하는 시스템 (서버 인증서 핀닝 또는 예상 송신자 설정 시)
⚔️ 공격 벡터
악의적이거나 탈취된 CMP 엔드포인트로부터 조작된 포맷 문자열(%s, %n 등)이 포함된 응답을 수신
🛡️ 대응 방법
OpenSSL을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 OpenSSL 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인하십시오.