Cloudanix VulnDB

CVE-2025-58056

None

Netty vulnerable to request smuggling due to incorrect parsing of chunk extensions

CVSS

—

EPSS

0.7%

Published

Sep 4, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A web server component may misunderstand specially formatted web requests when used behind some proxies, allowing attackers to sneak hidden requests past normal front-door checks.

Chainable
Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Moderate
Impact
Data Exposure
Component
Library
Class
Improper Input Validation
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

This vulnerability is an HTTP/1.1 request smuggling weakness in Netty caused by inconsistent parsing of chunk extensions in chunked transfer encoding. When Netty is deployed behind certain reverse proxies, the proxy and the Netty-based backend may disagree about where one HTTP request ends and the next begins. That parser differential can allow an attacker to cause bytes they control to be interpreted as a separate or prefixed backend request, potentially bypassing front-end routing, authentication, header normalization, or security controls that assume the proxy’s interpretation is authoritative.

Why it matters to the business

Systems using vulnerable Netty builds in HTTP-facing services, API gateways, application servers, or embedded Java services may be exposed to request routing confusion, unauthorized access paths, cache poisoning, session interference, or data exposure depending on how the reverse proxy and backend are configured. The current EPSS score is low and the issue is not listed in CISA KEV, but it has been public for an extended period and is associated with the MadeYouReset threat context, so internet-facing services using Netty behind reverse proxies should still be prioritized for review and remediation.

How an attack unfolds

An attacker sends a specially crafted HTTP/1.1 request using Transfer-Encoding: chunked and malformed or ambiguous chunk extension syntax. The front-end reverse proxy parses, normalizes, forwards, or delimits the request differently than the vulnerable Netty backend. Because the two components disagree on message boundaries, attacker-controlled bytes can be queued or interpreted by Netty as part of a subsequent backend request. In a successful attack, the attacker may smuggle a hidden request through the proxy, make the backend process requests that the proxy did not authorize or inspect as intended, poison responses for other users, or interfere with another client connection. Practical impact depends heavily on proxy behavior, connection reuse, backend routing, and whether authentication or authorization decisions are enforced only at the proxy layer.

How to fix it

Upgrade Netty to a version that includes the upstream fix for this issue. For source-based builds, ensure the code includes commit 406a58fd36e351b299553b3ceba5708f40a6153d or a later release containing that change. Because Netty is commonly embedded transitively, review dependency trees for all applications, frameworks, gateways, and vendor components that package Netty. Where immediate upgrade is not possible, mitigate by rejecting ambiguous HTTP/1.1 chunked requests at the edge, disabling backend connection reuse for affected routes where feasible, ensuring the reverse proxy fully normalizes or buffers requests before forwarding, rejecting chunk extensions if not required, and avoiding security decisions that are enforced only at the proxy while trusting the backend to receive identical request boundaries.

How to confirm the fix worked

Confirm that deployed artifacts use a Netty build containing commit 406a58fd36e351b299553b3ceba5708f40a6153d or a later fixed release. Validate application dependency manifests, software bills of materials, shaded JARs, container images, and runtime classpaths because Netty may be bundled indirectly. In staging, test representative reverse proxy and backend combinations with benign malformed chunk-extension requests and verify that the edge rejects them consistently or that both proxy and backend agree on request boundaries. Confirm that HTTP request smuggling test cases no longer produce response desynchronization, unexpected backend requests, or inconsistent status codes. Review proxy configuration to ensure request buffering, normalization, and Transfer-Encoding handling are consistent with vendor guidance.

Typical attack path

  1. Identify an HTTP/1.1 service using Netty behind a reverse proxy, load balancer, CDN, API gateway, or ingress controller.
  2. Confirm that the front end permits or forwards chunked requests to the backend rather than rejecting or fully normalizing them.
  3. Send probe requests with Transfer-Encoding: chunked and unusual chunk extension formatting to test for proxy/backend parsing differences.
  4. Observe timing changes, response desynchronization, unexpected status codes, duplicated responses, or evidence that a queued backend request was processed.
  5. Refine the payload to smuggle a second HTTP request or alter the effective backend request seen by the Netty service.
  6. Use the smuggled request to reach internal paths, bypass proxy-side controls, poison cacheable responses, or interfere with other users’ requests where connection reuse allows it.

How to detect it

Look for evidence of HTTP request smuggling attempts across reverse proxy, WAF, load balancer, CDN, application access, and Netty application logs. Useful telemetry includes raw HTTP request captures, WAF request bodies, proxy error logs, backend access logs, correlation IDs, connection IDs, and timing data. Focus on HTTP/1.1 requests using Transfer-Encoding: chunked with chunk extensions, unusual semicolon-delimited chunk-size lines, conflicting or repeated Transfer-Encoding and Content-Length headers, malformed chunk boundaries, unexpected backend requests that lack matching proxy log entries, multiple responses on a single client connection, bursts of 400/408/502/503 responses around malformed requests, and access to sensitive backend paths immediately following parser errors. Since successful exploitation may leave few application-level traces, compare front-end and backend logs by timestamp, source IP, connection reuse identifier, request ID, and requested path to find requests processed by the backend that were not clearly accepted by the proxy. If MadeYouReset-related activity is being tracked, include these chunked-request anomalies in threat hunting pivots, but do not treat the campaign name alone as a reliable indicator of compromise.

  • Transfer-Encoding: chunked
  • transfer-encoding: chunked
  • Transfer-Encoding: chunked, chunked
  • Transfer-Encoding: identity, chunked
  • Content-Length: 0\r\nTransfer-Encoding: chunked
  • Transfer-Encoding: chunked\r\nContent-Length:
  • 0;
  • 1;
  • chunk-ext
  • invalid chunk length
  • invalid chunk
  • HTTP/1.1 400 Bad Request
  • HTTP/1.1 502 Bad Gateway
  • io.netty.handler.codec.http.HttpObjectDecoder
  • io.netty.handler.codec.http.HttpRequestDecoder
  • TooLongHttpLineException
  • TooLongFrameException
  • DecoderException

What your security team should do

  • Inventory internet-facing and internal HTTP services that use Netty directly or through frameworks, especially services behind reverse proxies, ingress controllers, API gateways, CDNs, or load balancers.
  • Prioritize remediation for externally reachable services, multi-tenant APIs, authentication-adjacent services, and systems where the reverse proxy performs access control, routing, or header-based trust decisions.
  • Upgrade affected Netty dependencies to a fixed build containing commit 406a58fd36e351b299553b3ceba5708f40a6153d or a later fixed release, including transitive and shaded copies.
  • Add WAF, reverse proxy, or gateway rules to reject suspicious chunked requests with unusual chunk extensions while upgrades are being rolled out.
  • Review proxy/backend HTTP parsing settings, request buffering, connection reuse, and Transfer-Encoding normalization to reduce parser differential risk.
  • Run targeted request-smuggling validation tests after patching and after any proxy configuration changes.
  • Hunt historical logs for malformed chunked requests, unexplained 400/502 responses, backend-only path access, response queue desynchronization, and MadeYouReset-related activity patterns where telemetry is available.

The record

A flaw in netty's parsing of chunk extensions in HTTP/1.1 messages with chunked encoding can lead to request smuggling issues with some reverse proxies.

Affected packages

Ecosystem Package Introduced Fixed
Maven io.netty:netty-codec-http 0 4.1.125.Final
Maven io.netty:netty-codec-http 4.2.0.Alpha1 4.2.5.Final
Chainguard akhq 0 0.26.0-r4
Chainguard apache-activemq-artemis 0 2.42.0-r8
Chainguard apache-activemq-artemis-compat 0 2.42.0-r8
Chainguard apache-hop 0 2.15.0-r10
Chainguard apache-hop-fips 0 2.15.0-r11
Chainguard apache-nifi 0 2.5.0-r7
Chainguard apache-nifi-compat 0 2.5.0-r7
Chainguard apache-nifi-registry 0 2.6.0-r4
Chainguard apache-nifi-registry-toolkit 0 2.6.0-r4
Chainguard apache-nifi-toolkit 0 2.5.0-r7
Chainguard apache-pulsar 0 4.0.6-r2
Chainguard apache-pulsar-compat 0 4.0.6-r2
Chainguard apicurio-registry 0 3.0.14-r1
Chainguard apicurio-registry-nginx-config 0 3.0.14-r1
Chainguard apicurio-registry-ui 0 3.0.14-r1
Chainguard camunda-zeebe-8.6 0 8.6.26-r1
Chainguard camunda-zeebe-8.6-compat 0 8.6.26-r1
Chainguard camunda-zeebe-8.7 0 8.7.12-r1
Chainguard camunda-zeebe-8.7-compat 0 8.7.12-r1
Chainguard celeborn-0.5-compat 0 0.5.4-r9
Chainguard celeborn-0.6-compat 0 0.6.1-r0
Chainguard debezium-connector-vitess-3.0 0 3.0.8-r8
Chainguard docker-selenium 0 4.35.0.20250828-r0
Chainguard docker-selenium-base 0 4.35.0.20250828-r0
Chainguard docker-selenium-compat 0 4.35.0.20250828-r0
Chainguard docker-selenium-config 0 4.35.0.20250828-r0
Chainguard docker-selenium-distributor 0 4.35.0.20250828-r0
Chainguard docker-selenium-event-bus 0 4.35.0.20250828-r0
Chainguard docker-selenium-hub 0 4.35.0.20250828-r0
Chainguard docker-selenium-node-base 0 4.35.0.20250828-r0
Chainguard docker-selenium-node-chromium 0 4.35.0.20250828-r0
Chainguard docker-selenium-node-docker 0 4.35.0.20250828-r0
Chainguard docker-selenium-node-firefox 0 4.35.0.20250828-r0
Chainguard docker-selenium-router 0 4.35.0.20250828-r0
Chainguard docker-selenium-session-queue 0 4.35.0.20250828-r0
Chainguard docker-selenium-sessions 0 4.35.0.20250828-r0
Chainguard docker-selenium-standalone 0 4.35.0.20250828-r0
Chainguard docker-selenium-standalone-chrome 0 4.35.0.20250828-r0
Chainguard docker-selenium-standalone-chromium 0 4.35.0.20250828-r0
Chainguard docker-selenium-standalone-docker 0 4.35.0.20250828-r0
Chainguard docker-selenium-standalone-firefox 0 4.35.0.20250828-r0
Chainguard docker-selenium-supervisor-config 0 4.35.0.20250828-r0
Chainguard druid 0 34.0.0-r4
Chainguard druid-compat 0 34.0.0-r4
Chainguard elasticsearch-7 0 7.17.29-r4
Chainguard elasticsearch-7-bitnami 0 7.17.29-r4
Chainguard elasticsearch-7-iamguarded 0 7.17.29-r4
Chainguard elasticsearch-8.17 0 8.17.10-r13
Chainguard elasticsearch-8.17-bitnami 0 8.17.10-r13
Chainguard elasticsearch-8.17-config 0 8.17.10-r13
Chainguard elasticsearch-8.18 0 8.18.6-r13
Chainguard elasticsearch-8.18-bitnami 0 8.18.6-r13
Chainguard elasticsearch-8.18-config 0 8.18.6-r13
Chainguard elasticsearch-8.18-iamguarded 0 8.18.6-r13
Chainguard elasticsearch-8.19 0 8.19.3-r0
Chainguard elasticsearch-8.19-bitnami 0 8.19.3-r0
Chainguard elasticsearch-8.19-config 0 8.19.3-r0
Chainguard elasticsearch-8.19-iamguarded 0 8.19.3-r0
Chainguard elasticsearch-9.0 0 9.0.7-r0
Chainguard elasticsearch-9.0-bitnami 0 9.0.7-r0
Chainguard elasticsearch-9.0-config 0 9.0.7-r0
Chainguard elasticsearch-9.0-iamguarded 0 9.0.7-r0
Chainguard elasticsearch-9.1 0 9.1.3-r1
Chainguard elasticsearch-9.1-bitnami 0 9.1.3-r1
Chainguard elasticsearch-9.1-config 0 9.1.3-r1
Chainguard elasticsearch-9.1-iamguarded 0 9.1.3-r1
Chainguard elasticsearch-fips-8.19 0 8.19.3-r0
Chainguard elasticsearch-fips-8.19-bitnami 0 8.19.3-r0
Chainguard elasticsearch-fips-8.19-config 0 8.19.3-r0
Chainguard elasticsearch-fips-9.0 0 9.0.8-r0
Chainguard elasticsearch-fips-9.0-bitnami 0 9.0.8-r0
Chainguard elasticsearch-fips-9.0-config 0 9.0.8-r0
Chainguard elasticsearch-fips-9.1 0 9.1.3-r1
Chainguard elasticsearch-fips-9.1-bitnami 0 9.1.3-r1
Chainguard elasticsearch-fips-9.1-config 0 9.1.3-r1
Chainguard flyway 0 11.12.0-r1
Chainguard grpc-java-fips-1.56.0 0 1.56.0-r3
Chainguard hadoop-fips-3.3.6 0 3.3.6-r7
Chainguard hadoop-fips-3.3.6-compat 0 3.3.6-r7
Chainguard hadoop-fips-3.3.6-dev 0 3.3.6-r7
Chainguard hadoop-fips-3.3.6-m2 0 3.3.6-r7
Chainguard infinispan-15.0 0 15.0.21-r1
Chainguard infinispan-15.0-compat 0 15.0.21-r1
Chainguard infinispan-15.0-images 0 15.0.21-r1
Chainguard infinispan-15.1 0 15.1.7-r3
Chainguard infinispan-15.1-compat 0 15.1.7-r3
Chainguard infinispan-15.1-images 0 15.1.7-r3
Chainguard infinispan-15.2 0 15.2.6-r1
Chainguard infinispan-15.2-compat 0 15.2.6-r1
Chainguard infinispan-15.2-images 0 15.2.6-r1
Chainguard kafka-strimzi-compat 0 0.47.0-r7
Chainguard kafka_exporter-strimzi-compat 0 0.47.0-r7
Chainguard kayenta-2025.0 0 2025.0.8-r1
Chainguard kayenta-2025.1 0 2025.1.5-r1
Chainguard kayenta-2025.2 0 2025.2.2-r1
Chainguard kayenta-fips-2025.0 0 2025.0.8-r1
Chainguard kayenta-fips-2025.1 0 2025.1.5-r1
Chainguard kayenta-fips-2025.2 0 2025.2.2-r1
Chainguard keycloak-21.1 0 21.1.2-r6
Chainguard keycloak-21.1-bitnami-compat 0 21.1.2-r6
Chainguard keycloak-21.1-compat 0 21.1.2-r6
Chainguard keycloak-26.2 0 26.2.5-r3
Chainguard keycloak-26.2-bitnami-compat 0 26.2.5-r3
Chainguard keycloak-26.2-compat 0 26.2.5-r3
Chainguard keycloak-26.2-iamguarded-compat 0 26.2.5-r3
Chainguard keycloak-26.3 0 26.3.3-r6
Chainguard keycloak-26.3-bitnami-compat 0 26.3.3-r6
Chainguard keycloak-26.3-compat 0 26.3.3-r6
Chainguard keycloak-26.3-iamguarded-compat 0 26.3.3-r6
Chainguard keycloak-fips-26.2 0 26.2.5-r4
Chainguard keycloak-fips-26.2-bitnami-fips 0 26.2.5-r4
Chainguard keycloak-fips-26.2-iamguarded-fips 0 26.2.5-r4
Chainguard keycloak-fips-26.3 0 26.3.3-r5
Chainguard keycloak-fips-26.3-bitnami-fips 0 26.3.3-r5
Chainguard keycloak-fips-26.3-iamguarded-fips 0 26.3.3-r5
Chainguard keycloak-fips-26.3-operator 0 26.3.3-r5
Chainguard keycloak-fips-26.3-operator-compat 0 26.3.3-r5
Chainguard keycloak-operator 0 26.3.3-r3
Chainguard keycloak-operator-compat 0 26.3.3-r3
Chainguard keycloak-operator-fips 0 26.3.3-r2
Chainguard keycloak-operator-fips-compat 0 26.3.3-r2
Chainguard knative-kafka-broker-1.17-dispatcher-loom 0 1.17.3-r11
Chainguard knative-kafka-broker-1.17-receiver-loom 0 1.17.3-r11
Chainguard kserve-modelmesh 0 0.12.0-r16
Chainguard kserve-modelmesh-compat 0 0.12.0-r16
Chainguard localstack-compat 0 4.10.0-r0
Chainguard logstash-8.17 0 8.17.10-r1
Chainguard logstash-8.17-bitnami-compat 0 8.17.10-r1
Chainguard logstash-8.17-compat 0 8.17.10-r1
Chainguard logstash-8.17-env2yaml 0 8.17.10-r1
Chainguard logstash-8.17-iamguarded-compat 0 8.17.10-r1
Chainguard logstash-8.17-with-output-opensearch 0 8.17.10-r1
Chainguard logstash-8.18 0 8.18.6-r1
Chainguard logstash-8.18-bitnami-compat 0 8.18.6-r1
Chainguard logstash-8.18-compat 0 8.18.6-r1
Chainguard logstash-8.18-env2yaml 0 8.18.6-r1
Chainguard logstash-8.18-iamguarded-compat 0 8.18.6-r1
Chainguard logstash-8.18-with-output-opensearch 0 8.18.6-r1
Chainguard logstash-8.19 0 8.19.3-r1
Chainguard logstash-8.19-compat 0 8.19.3-r1
Chainguard logstash-8.19-env2yaml 0 8.19.3-r1
Chainguard logstash-8.19-iamguarded-compat 0 8.19.3-r1
Chainguard logstash-8.19-with-output-opensearch 0 8.19.3-r1
Chainguard logstash-9 0 9.1.3-r1
Chainguard logstash-9-bitnami-compat 0 9.1.3-r1
Chainguard logstash-9-compat 0 9.1.3-r1
Chainguard logstash-9-env2yaml 0 9.1.3-r1
Chainguard logstash-9-iamguarded-compat 0 9.1.3-r1
Chainguard logstash-9-with-output-opensearch 0 9.1.3-r1
Chainguard logstash-9.0 0 9.0.6-r1
Chainguard logstash-9.0-bitnami-compat 0 9.0.6-r1
Chainguard logstash-9.0-compat 0 9.0.6-r1
Chainguard logstash-9.0-env2yaml 0 9.0.6-r1
Chainguard logstash-9.0-iamguarded-compat 0 9.0.6-r1
Chainguard logstash-9.0-with-output-opensearch 0 9.0.6-r1
Chainguard logstash-9.1 0 9.1.3-r2
Chainguard logstash-9.1-bitnami-compat 0 9.1.3-r2
Chainguard logstash-9.1-compat 0 9.1.3-r2
Chainguard logstash-9.1-env2yaml 0 9.1.3-r2
Chainguard logstash-9.1-iamguarded-compat 0 9.1.3-r2
Chainguard logstash-9.1-with-output-opensearch 0 9.1.3-r2
Chainguard management-api-for-apache-cassandra-4.0 0 0.1.107-r1
Chainguard management-api-for-apache-cassandra-4.0-compat 0 0.1.107-r1
Chainguard management-api-for-apache-cassandra-4.1 0 0.1.107-r1
Chainguard management-api-for-apache-cassandra-4.1-compat 0 0.1.107-r1
Chainguard neo4j-2025.02 0 2025.02.0-r9
Chainguard neo4j-2025.02-docker-publish 0 2025.02.0-r9
Chainguard neo4j-2025.03 0 2025.03.0-r9
Chainguard neo4j-2025.03-docker-publish 0 2025.03.0-r9
Chainguard neo4j-2025.04 0 2025.04.0-r7
Chainguard neo4j-2025.04-docker-publish 0 2025.04.0-r7
Chainguard neo4j-2025.05 0 2025.05.1-r6
Chainguard neo4j-2025.05-docker-publish 0 2025.05.1-r6
Chainguard neo4j-2025.06 0 2025.06.2-r6
Chainguard neo4j-2025.06-browser 0 2025.06.2-r6
Chainguard neo4j-2025.06-docker-publish 0 2025.06.2-r6
Chainguard neo4j-2025.07 0 2025.07.1-r5
Chainguard neo4j-2025.07-browser 0 2025.07.1-r5
Chainguard neo4j-2025.07-docker-publish 0 2025.07.1-r5
Chainguard neo4j-2025.08 0 2025.08.0-r1
Chainguard neo4j-2025.08-browser 0 2025.08.0-r1
Chainguard neo4j-2025.08-docker-publish 0 2025.08.0-r1
Chainguard neo4j-5.26 0 5.26.12-r0
Chainguard neo4j-5.26-docker-publish 0 5.26.12-r0
Chainguard neo4j-5.26-oci-entrypoint 0 5.26.12-r0
Chainguard opensearch-2 0 2.19.4-r0
Chainguard opensearch-2-alerting 0 2.19.4-r0
Chainguard opensearch-2-analysis-icu 0 2.19.4-r0
Chainguard opensearch-2-analysis-kuromoji 0 2.19.4-r0
Chainguard opensearch-2-analysis-nori 0 2.19.4-r0
Chainguard opensearch-2-analysis-phonetic 0 2.19.4-r0
Chainguard opensearch-2-analysis-smartcn 0 2.19.4-r0
Chainguard opensearch-2-analysis-stempel 0 2.19.4-r0
Chainguard opensearch-2-analysis-ukrainian 0 2.19.4-r0
Chainguard opensearch-2-anomaly-detection 0 2.19.4-r0
Chainguard opensearch-2-asynchronous-search 0 2.19.4-r0
Chainguard opensearch-2-cross-cluster-replication 0 2.19.4-r0
Chainguard opensearch-2-crypto-kms 0 2.19.4-r0

Related vulnerabilities