🇰🇷 한글 설명
Netty netty-tcnative 2.0.84.Final 이전 버전에는 JNI NewStringUTF 디코딩 과정에서 발생하는 SNI 호스트명 스푸핑 취약점이 존재합니다. 원격의 인증되지 않은 클라이언트가 ClientHello의 server_name에 0xC0 0x80 같은 과대 인코딩 값을 삽입하여 호스트명을 변조할 수 있습니다. 이로 인해 SNI 기반 인증서 선택, 접근 통제 및 로깅이 오작동할 수 있습니다.
💡 쉬운 설명
공격자가 웹 서버에 접속할 때 사용하는 주소 이름(호스트명)을 특수한 방식으로 위조할 수 있는 취약점입니다. 이로 인해 서버가 잘못된 인증서를 선택하거나 접근 규칙을 잘못 적용하고, 기록도 부정확해질 수 있습니다.
🇺🇸 원문 (English)
Netty netty-tcnative before 2.0.84.Final contains an SNI hostname spoofing vulnerability that allows remote unauthenticated clients to alter hostnames via JNI NewStringUTF decoding. Attackers can send overlong encodings like 0xC0 0x80 in the ClientHello server_name to confuse SNI-based certificate selection, access decisions, and logging.
📍 영향받는 시스템
netty-tcnative 2.0.84.Final 이전 버전을 사용하는 Java 기반 Netty 애플리케이션 서버
⚔️ 공격 벡터
원격 공격자가 TLS ClientHello의 server_name 확장 필드에 0xC0 0x80 등 과대 UTF-8 인코딩 값을 담아 전송
🛡️ 대응 방법
netty-tcnative를 2.0.84.Final 이상 버전으로 업그레이드
🔧 검증 코드
출력된 JAR 파일 경로와 버전 정보를 확인하여 2.0.84.Final 미만이면 취약, 이상이면 조치 완료로 판단
find / -name 'netty-tcnative*.jar' 2>/dev/null | xargs -I{} sh -c 'echo {}; unzip -p {} META-INF/MANIFEST.MF 2>/dev/null | grep -i version'