🇰🇷 한글 설명
Netty의 SCTP 트랜스포트 모듈에서 불완전한 메시지 조각을 처리할 때 누적 버퍼가 무한히 중첩되어 재귀 호출을 유발합니다. 공격자가 완료 플래그를 설정하지 않고 작은 데이터 청크를 계속 전송하면 메모리 고갈 또는 서비스 거부(DoS)가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 프레임워크인 Netty의 SCTP 기능에서 데이터 조각을 모을 때 메모리가 무한히 쌓이는 문제가 있습니다. 해커가 이를 악용하여 시스템의 메모리를 모두 소진시켜 서비스를 마비시킬 수 있습니다.
🇺🇸 원문 (English)
Netty is a network application framework for development of protocol servers and clients. In versions of netty-transport-sctp prior to 4.1.135.Final and 4.2.15.Final, for each non-complete SctpMessage fragment the handler does `fragments.put(streamId, Unpooled.wrappedBuffer(frag, byteBuf))`, wrapping the previous accumulator and the new slice into a *new* CompositeByteBuf every time. After N fragments the accumulator is an N-deep chain of composites, each holding references and component arrays; readableBytes()/getBytes() on the final buffer recurse N levels. There is no limit on N, on total bytes, or on the number of streamIdentifiers an attacker can open (each gets its own map entry). A peer that never sets the `complete` flag can grow this structure indefinitely from tiny 1-byte DATA chunks. Versions 4.1.135.Final and 4.2.15.Final patch the issue.
📍 영향받는 시스템
netty-transport-sctp < 4.1.135.Final, < 4.2.15.Final
⚔️ 공격 벡터
SCTP 연결을 통해 완료 플래그 없이 작은 데이터 조각을 무한히 전송하여 메모리 고갈 유도
🛡️ 대응 방법
netty-transport-sctp 라이브러리를 4.1.135.Final 또는 4.2.15.Final 이상으로 업그레이드하십시오.
🔧 검증 코드
출력된 버전이 4.1.135.Final 또는 4.2.15.Final 미만인 경우 취약한 것으로 판단합니다.
mvn dependency:tree -Dincludes=io.netty:netty-transport-sctp 2>/dev/null | grep -E 'io.netty:netty-transport-sctp'
📊 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