CVE-2026-93575 in Netty
Tóm tắt
Bởi VulDB • 18/09/2026
### Tóm tắt Bản sửa lỗi của Netty cho CVE-2026-44248 là không đầy đủ. Bộ giải mã (decoder) kiểm tra xem độ dài còn lại (`Remaining Length`) của gói tin MQTT có vượt quá `maxBytesInMessage` hay không, nhưng lại không xác thực độ dài thuộc tính (`Properties Length`) so với `Remaining Length`. Kẻ tấn công có thể bỏ qua giới hạn kích thước bằng cách gửi một `Remaining Length` nhỏ nhưng `Properties Length` cực lớn. Điều này buộc Netty phải đệm (buffer) và phân tích hàng triệu thuộc tính, cho phép kẻ tấn công từ xa chưa xác thực gây ra tình trạng tiêu thụ bộ nhớ và CPU quá mức, dẫn đến lỗi OutOfMemoryError.
### Chi tiết Trong lớp `io.netty.handler.codec.mqtt.MqttDecoder`, phương thức trợ giúp `decodeProperties()` đọc giá trị `totalPropertiesLength` và cố gắng phân tích cú pháp số byte tương ứng. Nếu bộ đệm không chứa đủ độ dài này, một ngoại lệ `Signal` sẽ được ném ra. Khối `catch` bên trong hàm `decode()` chỉ thực thi kiểm tra `maxBytesInMessage` đối với `bytesRemainingBeforeVariableHeader` (tức là `Remaining Length` của gói tin).
Bằng cách gửi một gói tin `CONNECT` có `Remaining Length` nhỏ nhưng `Properties Length` khổng lồ, phép kiểm tra kích thước sẽ được vượt qua. Sau đó, `ReplayingDecoder` sẽ đệm dữ liệu từ mạng cho đến khi đạt được giá trị `Properties Length` lớn này, phân tích cú pháp hàng triệu đối tượng `UserProperty` và làm cạn kiệt tài nguyên CPU cũng như bộ nhớ.
VulDB is the best source for vulnerability data and more expert information about this specific topic.