🇰🇷 한글 설명
Netty의 SpdyHttpDecoder 핸들러에서 특정 조건의 SPDY 프레임을 처리할 때 풀링된 ByteBuf를 적절히 해제하지 않는 메모리 누수 취약점이 발견되었습니다. RST_STREAM 프레임이 전송되거나 최대 콘텐츠 길이를 초과할 경우, 할당된 메모리가 해제되지 않아 네이티브 메모리 고갈을 초래할 수 있습니다.
💡 쉬운 설명
네트워크 통신 중에 특정 신호를 보내면 프로그램이 사용한 메모리를 돌려주지 않고 계속 쌓아두는 버그입니다. 이 현상이 반복되면 컴퓨터의 메모리가 가득 차서 시스템이 멈출 수 있습니다.
🇺🇸 원문 (English)
Netty is a network application framework for development of protocol servers and clients. In versions 4.2.0.Final through 4.2.15.Final and 4.1.0.Final through 4.1.135.Final, the `SpdyHttpDecoder` handler in Netty's SPDY-to-HTTP codec allocates a pooled `ByteBuf` when processing a client-initiated `SYN_STREAM` frame with `FLAG_FIN=0` and stores the partially constructed `FullHttpRequest` in `messageMap`; when the remote peer sends `RST_STREAM` for that stream or the accumulated content exceeds `maxContentLength`, the decoder removes the entry but does not release the pooled `ByteBuf`, causing native memory exhaustion. This issue is fixed in versions 4.1.136.Final and 4.2.16.Final.
📍 영향받는 시스템
Netty 4.1.0.Final ~ 4.1.135.Final 및 4.2.0.Final ~ 4.2.15.Final
⚔️ 공격 벡터
조작된 SPDY 프레임을 전송하여 메모리 해제 로직을 우회함으로써 네이티브 메모리 고갈 유도
🛡️ 대응 방법
Netty 버전을 4.1.136.Final 또는 4.2.16.Final 이상으로 업데이트
🔧 검증 코드
명령어 결과에 취약점이 해결된 버전(4.1.136.Final 이상 또는 4.2.16.Final 이상)이 포함되어 있는지 확인
mvn dependency:tree | grep -E 'netty-all|netty-buffer' | grep -E '4.1\.(13[0-6]|13[7-9]|[2-9][0-9]{2,})|4.2\.(1[6-9]|[2-9][0-9])'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
💻 영향받는 소프트웨어
IBM WebSphere Application Server