🇰🇷 한글 설명
OpenSSL 3.2의 RFC7250 Raw Public Keys(RPK) 검증 메커니즘에서 서버 인증 실패가 감지되지 않는 취약점입니다. SSL_VERIFY_PEER 모드에서도 서버의 RPK 검증이 실패하면 핸드셰이크가 중단되지 않아 중간자 공격(MITM)에 노출됩니다.
💡 쉬운 설명
OpenSSL에서 RPK를 사용한 TLS 연결 시 서버 신원 확인이 제대로 작동하지 않을 수 있습니다. 공격자가 이를 악용하여 진짜 서버로 위장하고 통신을 도청하거나 변조할 수 있습니다.
🇺🇸 원문 (English)
Issue summary: Clients using RFC7250 Raw Public Keys (RPKs) to authenticate a
server may fail to notice that the server was not authenticated, because
handshakes don't abort as expected when the SSL_VERIFY_PEER verification mode
is set.
Impact summary: TLS and DTLS connections using raw public keys may be
vulnerable to man-in-middle attacks when server authentication failure is not
detected by clients.
RPKs are disabled by default in both TLS clients and TLS servers. The issue
only arises when TLS clients explicitly enable RPK use by the server, and the
server, likewise, enables sending of an RPK instead of an X.509 certificate
chain. The affected clients are those that then rely on the handshake to
fail when the server's RPK fails to match one of the expected public keys,
by setting the verification mode to SSL_VERIFY_PEER.
Clients that enable server-side raw public keys can still find out that raw
public key verification failed by calling SSL_get_verify_result(), and those
that do, and take appropriate action, are not affected. This issue was
introduced in the initial implementation of RPK support in OpenSSL 3.2.
The FIPS modules in 3.4, 3.3, 3.2, 3.1 and 3.0 are not affected by this issue.
📍 영향받는 시스템
OpenSSL 3.2 (RPK 기능 명시적 활성화 시)
⚔️ 공격 벡터
중간자 공격자가 서버를 위장하여 RPK 검증 실패를 감지되지 않게 하고 통신 도청/변조
🛡️ 대응 방법
OpenSSL을 최신 패치 버전으로 업그레이드하거나 SSL_get_verify_result() 호출로 검증 결과 명시적 확인
🔧 검증 코드
OpenSSL 버전이 3.2.x이고 RPK 기능을 사용 중이면 패치 필요. 3.2보다 이전 버전이거나 FIPS 모듈 사용 시 영향 없음
openssl version && dpkg -l | grep openssl