🇰🇷 한글 설명
Netty 프레임워크가 HTTP/1.1 표준과 달리 CRLF 대신 단독 LF 문자를 청크 크기 구분자로 잘못 수용하는 취약점입니다. 이로 인해 리버스 프록시와 Netty 간의 해석 차이가 발생하여 HTTP 요청 스머글링 공격이 가능해집니다.
💡 쉬운 설명
웹 서버가 데이터를 읽는 규칙이 프록시 서버와 서로 달라 발생하는 문제입니다. 공격자가 특수하게 조작된 요청을 보내면 서버가 하나의 요청을 두 개로 오해하여 보안을 우회할 수 있습니다.
🇺🇸 원문 (English)
Netty is an asynchronous event-driven network application framework for development of maintainable high performance protocol servers and clients. In versions 4.1.124.Final, and 4.2.0.Alpha3 through 4.2.4.Final, Netty incorrectly accepts standalone newline characters (LF) as a chunk-size line terminator, regardless of a preceding carriage return (CR), instead of requiring CRLF per HTTP/1.1 standards. When combined with reverse proxies that parse LF differently (treating it as part of the chunk extension), attackers can craft requests that the proxy sees as one request but Netty processes as two, enabling request smuggling attacks. This is fixed in versions 4.1.125.Final and 4.2.5.Final.
📍 영향받는 시스템
Netty 4.1.124.Final 및 4.2.0.Alpha3 ~ 4.2.4.Final 버전
⚔️ 공격 벡터
HTTP 요청 내에 표준에 맞지 않는 LF 문자를 삽입하여 프록시와 서버 간의 요청 해석 차이를 유도하는 방식
🛡️ 대응 방법
Netty 버전을 4.1.125.Final 또는 4.2.5.Final 이상으로 업데이트
🔧 검증 코드
명령어 결과에 취약한 버전 범위의 Netty 라이브러리가 출력되면 해당 시스템은 취약한 상태입니다.
mvn dependency:list | grep -E 'netty-all|netty-buffer|netty-common' | grep -E '4.1.124.Final|4.2.[0-4].Final'