🇰🇷 한글 설명
Netty의 X509TrustManager 처리 로직 결함으로 인해 사용자 지정 TrustManager가 SSL 엔진 정보를 무시하는 문제가 발생합니다. 이로 인해 호스트명 검증이 우회되어 MITM 공격에 취약해집니다.
💡 쉬운 설명
보안 검증 과정에서 호스트명 확인 기능이 작동하지 않는 결함이 있습니다. 공격자가 중간에서 통신을 가로채거나 속일 수 있습니다.
🇺🇸 원문 (English)
Netty is a network application framework for development of protocol servers and clients. Prior to versions 4.1.135.Final and 4.2.15.Final, SimpleTrustManagerFactory.engineGetTrustManagers() and related paths wrap any user-supplied plain X509TrustManager in X509TrustManagerWrapper, which extends X509ExtendedTrustManager but implements the 3-arg checkServerTrusted(chain, authType, SSLEngine) by discarding the SSLEngine and calling the 2-arg delegate. Because the object now IS an X509ExtendedTrustManager, neither SunJSSE's internal AbstractTrustManagerWrapper nor Netty's own OpenSslX509TrustManagerWrapper will re-wrap it to add endpoint-identification. Consequently, even though Netty 4.2 sets endpointIdentificationAlgorithm="HTTPS" by default, a client built with `SslContextBuilder.forClient().trustManager(somePlainX509TrustManager)` performs no hostname verification at all. Versions 4.1.135.Final and 4.2.15.Final patch the issue.
📍 영향받는 시스템
Netty 4.1.135.Final 미만, 4.2.15.Final 미만
⚔️ 공격 벡터
SSL/TLS 연결 시 호스트명 검증을 우회하여 중간자 공격 수행
🛡️ 대응 방법
Netty를 4.1.135.Final 또는 4.2.15.Final 이상으로 업그레이드
🔧 검증 코드
출력된 버전이 4.1.135.Final 또는 4.2.15.Final보다 낮으면 취약합니다.
mvn dependency:tree -Dincludes=io.netty:netty-handler 2>/dev/null | grep -E 'io.netty:netty-handler:[0-9]'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
💻 영향받는 소프트웨어
IBM WebSphere Application Server