🇰🇷 한글 설명
Netty의 Redis 코덱 인코더가 CRLF 문자를 검증하지 않고 사용자 제어 문자열을 네트워크 버퍼에 직접 쓰기 때문에, Redis 직렬화 프로토콜의 명령 구분자인 CRLF를 이용해 임의의 Redis 명령어 주입이 가능합니다. 공격자는 이를 통해 Redis 메시지 내용을 제어하여 명령 주입이나 응답 위조를 수행할 수 있습니다.
💡 쉬운 설명
Netty 라이브러리의 Redis 통신 기능이 특수 문자를 제대로 처리하지 못해, 공격자가 악의적인 Redis 명령어를 몰래 삽입할 수 있습니다. 이로 인해 데이터 탈취나 조작이 가능합니다.
🇺🇸 원문 (English)
Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final and 4.1.133.Final, the Netty Redis codec encoder (RedisEncoder) writes user-controlled string content directly to the network output buffer without validating or sanitizing CRLF (\r\n) characters. Since the Redis Serialization Protocol (RESP) uses CRLF as the command/response delimiter, an attacker who can control the content of a Redis message can inject arbitrary Redis commands or forge fake responses. This vulnerability is fixed in 4.2.13.Final and 4.1.133.Final.
📍 영향받는 시스템
Netty 4.2.13.Final 이전 버전, 4.1.133.Final 이전 버전 사용 시스템
⚔️ 공격 벡터
Redis 메시지 콘텐츠를 제어할 수 있는 공격자가 CRLF 문자를 포함한 문자열을 주입하여 임의 명령 실행
🛡️ 대응 방법
Netty를 4.2.13.Final 또는 4.1.133.Final 이상으로 업그레이드
🔧 검증 코드
Maven 프로젝트의 Netty 의존성 버전을 확인하여 4.2.13.Final 또는 4.1.133.Final 이상인지 검증
mvn dependency:tree 2>/dev/null | grep -i netty || grep -r 'io.netty' pom.xml 2>/dev/null | head -1