CVE-2026-93575 in Netty
요약
\~에 의해 VulDB • 2026. 09. 18.
### 요약 Netty의 CVE-2026-44248 수정은 불완전합니다. 디코더는 MQTT 패킷의 `Remaining Length`가 `maxBytesInMessage`를 초과하는지 확인하지만, `Properties Length`와 `Remaining Length` 간의 유효성 검사는 수행하지 않습니다. 공격자는 작은 `Remaining Length`와 거대한 `Properties Length`를 전송하여 크기 제한을 우회할 수 있습니다. 이로 인해 Netty는 수백만 개의 속성을 버퍼링하고 파싱하게 되어, 인증되지 않은 원격 공격자가 과도한 메모리 및 CPU 소비를 유발하여 OutOfMemoryError를 발생시킬 수 있습니다.
### 상세 `io.netty.handler.codec.mqtt.MqttDecoder`의 `decodeProperties()` 헬퍼 메서드는 `totalPropertiesLength`를 읽은 후 해당 바이트 수만큼 파싱을 시도합니다. 버퍼에 전체 길이가 부족하면 `Signal` 예외가 발생합니다. `decode()` 내부의 `catch` 블록에서는 `bytesRemainingBeforeVariableHeader`(패킷의 `Remaining Length`)에 대해 `maxBytesInMessage`만 강제 적용합니다.
작은 `Remaining Length`와 거대한 `Properties Length`를 가진 `CONNECT` 패킷을 전송하면 크기 검사를 통과할 수 있습니다. 이후 `ReplayingDecoder`는 네트워크에서 데이터가 버퍼링되어 거대한 `Properties Length`에 도달할 때까지 기다리며, 수백만 개의 `UserProperty` 객체를 파싱하여 CPU와 메모리를 고갈시킵니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.