Cloudanix VulnDB

CVE-2025-58057

None

Netty's decoders vulnerable to DoS via zip bomb style attack

CVSS

—

EPSS

0.6%

Published

Sep 3, 2025

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A malformed compressed request can make affected Netty-based services run out of memory and become unavailable.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Moderate
Impact
Denial Of Service
Component
Library
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The flaw is a denial-of-service condition in Netty decompression handling. Specially crafted compressed input processed by BrotliDecoder and some other decompressing decoders can cause allocation of a large number of reachable byte buffers. Because the buffers remain reachable, normal garbage collection may not quickly reclaim them, resulting in excessive heap or direct-memory consumption, garbage-collection pressure, event-loop stalls, OutOfMemoryError conditions, and potential process termination. The issue impacts availability; it does not inherently provide code execution or data disclosure.

Why it matters to the business

Applications and gateways built on affected Netty code may be taken offline or degraded by malicious compressed traffic, causing service interruptions, failed requests, latency spikes, autoscaling cost increases, and operational incident response. Although this vulnerability is not listed in CISA KEV, is not currently associated with ransomware use, and has a low EPSS score, it has been public for 341 days and affects a widely used networking framework, so exposed services that accept Brotli or other compressed untrusted input should still be prioritized for upgrade or mitigation.

How an attack unfolds

An attacker identifies an internet-facing or otherwise reachable service that uses Netty with BrotliDecoder or another affected decompression decoder enabled in the request-processing pipeline. The attacker sends specially crafted compressed payloads, commonly through HTTP requests or streams that advertise compressed content. When the service attempts to decode the input, the vulnerable decoder allocates many byte buffers and keeps them reachable. Repeated or concurrent attempts increase memory pressure until the JVM experiences severe garbage-collection churn, direct-memory exhaustion, heap exhaustion, event-loop starvation, or process failure. Reported threat context includes MadeYouReset, so defenders should treat suspicious reset-heavy or compression-abuse traffic patterns as relevant during triage, even though broad weaponization is not indicated by the provided exploit maturity.

How to fix it

Upgrade Netty to a version that includes the fix, or apply the upstream source fix identified as commit 9d804c54ce962408ae6418255a83a13924f7145d. For source builds of netty/netty, verify that this commit or an equivalent backport is present. If consuming Netty through package managers or transitive dependencies, update all dependent components to releases that incorporate the fixed Netty code and rebuild/redeploy affected services. As interim mitigations, disable Brotli decompression for untrusted request bodies where not required, restrict accepted Content-Encoding values, enforce strict compressed and decompressed body-size limits, cap per-connection and per-request memory use, apply request-rate and concurrency limits, and place externally exposed services behind load balancers or gateways that can reject abnormal compressed payloads before they reach Netty.

How to confirm the fix worked

Confirm dependency exposure using software composition analysis, dependency trees, SBOMs, build manifests, or source review to identify Netty versions or source builds containing vulnerable decompression code. For source-based deployments, verify that commit 9d804c54ce962408ae6418255a83a13924f7145d or an equivalent patch is present. For binary deployments, confirm the running artifact was rebuilt against a fixed Netty release or patched commit, not only that the repository was updated. In staging, send representative valid and malformed compressed requests and confirm memory usage remains bounded, the service returns controlled errors for rejected payloads, and no OutOfMemoryError, direct-memory exhaustion, event-loop stalls, or abnormal garbage-collection behavior occurs. Validate that edge controls enforce request-size, decompressed-size, encoding, rate, and concurrency limits.

Typical attack path

  1. Reconnoiter services that expose Netty-based HTTP, proxy, API gateway, or streaming endpoints.
  2. Confirm that the service accepts compressed request bodies or streams, especially Brotli-encoded input.
  3. Send specially crafted compressed input that reaches BrotliDecoder or another affected decompression decoder.
  4. Trigger excessive allocation of reachable byte buffers during decompression.
  5. Repeat the requests or open concurrent streams to accelerate heap or direct-memory exhaustion.
  6. Cause latency spikes, garbage-collection pressure, request failures, event-loop stalls, or process termination.
  7. Optionally continue sending traffic to prevent recovery or repeatedly crash restarted instances.

How to detect it

To determine whether exploitation already occurred, correlate application access logs, reverse-proxy logs, load-balancer logs, JVM logs, container orchestration events, and infrastructure metrics. Look for bursts of requests using compressed request bodies, especially Content-Encoding: br, followed by high heap or direct-memory usage, long garbage-collection pauses, request timeouts, 5xx responses, pod or process restarts, or OutOfMemoryError events. Review application logs for Netty decompression stack traces involving BrotliDecoder or ByteBuf allocation failures. Examine edge telemetry for high request concurrency, abnormal compressed payload sizes, repeated connection resets, or reset-heavy patterns consistent with the provided MadeYouReset threat context. If available, inspect preserved heap dumps for unusually large numbers of Netty ByteBuf, byte array, or direct-buffer objects retained by decompression paths. Successful exploitation may leave few durable file artifacts because the primary effect is memory exhaustion, so time-based correlation between compressed traffic and service instability is critical.

  • Content-Encoding: br
  • content-encoding: br
  • io.netty.handler.codec.compression.BrotliDecoder
  • io.netty.handler.codec.compression
  • io.netty.buffer.ByteBuf
  • io.netty.util.internal.OutOfDirectMemoryError
  • java.lang.OutOfMemoryError: Direct buffer memory
  • java.lang.OutOfMemoryError: Java heap space
  • Cannot reserve memory
  • failed to allocate
  • LEAK: ByteBuf.release() was not called
  • TooLongFrameException
  • OutOfMemoryError
  • Killed process
  • OOMKilled
  • CrashLoopBackOff

What your security team should do

  • Inventory applications, gateways, proxies, and services that use Netty and accept compressed untrusted input.
  • Prioritize externally reachable systems and high-availability services where Brotli or automatic decompression is enabled.
  • Upgrade or rebuild affected components with the Netty fix containing commit 9d804c54ce962408ae6418255a83a13924f7145d or a release that includes it.
  • Temporarily disable Brotli request decompression or restrict Content-Encoding to required values only until patching is complete.
  • Enforce maximum compressed body size, decompressed output size, request duration, connection concurrency, and per-client rate limits.
  • Add monitoring for JVM heap exhaustion, direct-memory exhaustion, garbage-collection spikes, Netty decoder exceptions, and sudden increases in compressed requests.
  • Review historical logs for suspicious Brotli/compressed traffic correlated with memory pressure, process restarts, or availability incidents.
  • Ensure incident runbooks include rapid rollback, traffic filtering, heap dump preservation, and restart throttling to avoid repeated crash loops.

The record

With specially crafted input, `BrotliDecoder` and some other decompressing decoders will allocate a large number of reachable byte buffers, which can lead to denial of service.

Affected packages

Ecosystem Package Introduced Fixed
Maven io.netty:netty-codec 0 4.1.125.Final
Maven io.netty:netty-codec-compression 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.16.0-r0
Chainguard apache-hop-fips 0 2.16.0-r0
Chainguard apache-nifi 0 2.5.0-r6
Chainguard apache-nifi-compat 0 2.5.0-r6
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-r6
Chainguard apache-pulsar 0 4.0.6-r2
Chainguard apache-pulsar-compat 0 4.0.6-r2
Chainguard apicurio-registry 0 3.0.13-r1
Chainguard apicurio-registry-nginx-config 0 3.0.13-r1
Chainguard apicurio-registry-ui 0 3.0.13-r1
Chainguard camunda-zeebe-8.6 0 8.6.27-r1
Chainguard camunda-zeebe-8.6-compat 0 8.6.27-r1
Chainguard camunda-zeebe-8.7 0 8.7.12-r2
Chainguard camunda-zeebe-8.7-compat 0 8.7.12-r2
Chainguard cassandra-5.0 0 5.0.5-r5
Chainguard cassandra-5.0-compat 0 5.0.5-r5
Chainguard cassandra-5.0-entrypoint-compat 0 5.0.5-r5
Chainguard cassandra-5.0-iamguarded-compat 0 5.0.5-r5
Chainguard cassandra-fips-5.0 0 5.0.3-r10
Chainguard cassandra-fips-5.0-compat 0 5.0.3-r10
Chainguard cassandra-reaper 0 3.8.0-r11
Chainguard celeborn-0.5-compat 0 0.5.4-r9
Chainguard celeborn-0.6 0 0.6.2-r0
Chainguard celeborn-0.6-compat 0 0.6.1-r0
Chainguard cloudwatch-exporter 0 0.16.0-r7
Chainguard cqlsh-5.0 0 5.0.5-r5
Chainguard cqlsh-fips-5.0 0 5.0.3-r10
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-r3
Chainguard druid-compat 0 34.0.0-r3
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.11.2-r1
Chainguard grpc-java-fips-1.56.0 0 1.56.0-r3
Chainguard hadoop-fips-3.3.6 0 3.3.6-r6
Chainguard hadoop-fips-3.3.6-compat 0 3.3.6-r6
Chainguard hadoop-fips-3.3.6-dev 0 3.3.6-r6
Chainguard hadoop-fips-3.3.6-m2 0 3.3.6-r6
Chainguard infinispan-15.0 0 15.0.21-r0
Chainguard infinispan-15.0-compat 0 15.0.21-r0
Chainguard infinispan-15.0-images 0 15.0.21-r0
Chainguard infinispan-15.1 0 15.1.7-r2
Chainguard infinispan-15.1-compat 0 15.1.7-r2
Chainguard infinispan-15.1-images 0 15.1.7-r2
Chainguard infinispan-15.2 0 15.2.6-r0
Chainguard infinispan-15.2-compat 0 15.2.6-r0
Chainguard infinispan-15.2-images 0 15.2.6-r0
Chainguard kafka-3.7 0 3.7.2-r46
Chainguard kafka-3.8 0 3.8.1-r46
Chainguard kafka-3.9 0 3.9.1-r5
Chainguard kafka-bitnami-compat-3.7 0 3.7.2-r46
Chainguard kafka-bitnami-compat-3.8 0 3.8.1-r46
Chainguard kafka-bitnami-compat-3.9 0 3.9.1-r5
Chainguard kafka-strimzi-compat 0 0.47.0-r7
Chainguard kafka_exporter-strimzi-compat 0 0.47.0-r7
Chainguard keycloak-21.1 0 21.1.2-r5
Chainguard keycloak-21.1-bitnami-compat 0 21.1.2-r5
Chainguard keycloak-21.1-compat 0 21.1.2-r5
Chainguard keycloak-26.2 0 26.2.5-r2
Chainguard keycloak-26.2-bitnami-compat 0 26.2.5-r2
Chainguard keycloak-26.2-compat 0 26.2.5-r2
Chainguard keycloak-26.2-iamguarded-compat 0 26.2.5-r2
Chainguard keycloak-26.3 0 26.3.3-r5
Chainguard keycloak-26.3-bitnami-compat 0 26.3.3-r5
Chainguard keycloak-26.3-compat 0 26.3.3-r5
Chainguard keycloak-26.3-iamguarded-compat 0 26.3.3-r5
Chainguard keycloak-fips-26.2 0 26.2.5-r3
Chainguard keycloak-fips-26.2-bitnami-fips 0 26.2.5-r3
Chainguard keycloak-fips-26.2-iamguarded-fips 0 26.2.5-r3
Chainguard keycloak-fips-26.3 0 26.3.3-r4
Chainguard keycloak-fips-26.3-bitnami-fips 0 26.3.3-r4
Chainguard keycloak-fips-26.3-iamguarded-fips 0 26.3.3-r4
Chainguard keycloak-fips-26.3-operator 0 26.3.3-r4
Chainguard keycloak-fips-26.3-operator-compat 0 26.3.3-r4
Chainguard keycloak-operator 0 26.3.3-r2
Chainguard keycloak-operator-compat 0 26.3.3-r2
Chainguard keycloak-operator-fips 0 26.3.3-r1
Chainguard keycloak-operator-fips-compat 0 26.3.3-r1
Chainguard knative-kafka-broker-1.17-dispatcher-loom 0 1.17.3-r9
Chainguard knative-kafka-broker-1.17-receiver-loom 0 1.17.3-r9
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 logstash-input-beats 0 6.9.4-r0
Chainguard logstash-input-http 0 3.10.3-r0
Chainguard logstash-input-tcp 0 6.4.7-r0
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 management-api-for-apache-cassandra-5.0 0 0.1.107-r2
Chainguard management-api-for-apache-cassandra-5.0-compat 0 0.1.107-r2
Chainguard neo4j-2025.02 0 2025.02.0-r8
Chainguard neo4j-2025.02-docker-publish 0 2025.02.0-r8
Chainguard neo4j-2025.03 0 2025.03.0-r8
Chainguard neo4j-2025.03-docker-publish 0 2025.03.0-r8
Chainguard neo4j-2025.04 0 2025.04.0-r6
Chainguard neo4j-2025.04-docker-publish 0 2025.04.0-r6
Chainguard neo4j-2025.05 0 2025.05.1-r5
Chainguard neo4j-2025.05-docker-publish 0 2025.05.1-r5
Chainguard neo4j-2025.06 0 2025.06.2-r5
Chainguard neo4j-2025.06-browser 0 2025.06.2-r5
Chainguard neo4j-2025.06-docker-publish 0 2025.06.2-r5
Chainguard neo4j-2025.07 0 2025.07.1-r3
Chainguard neo4j-2025.07-browser 0 2025.07.1-r3
Chainguard neo4j-2025.07-docker-publish 0 2025.07.1-r3
Chainguard neo4j-4.4 0 4.4.45-r1
Chainguard neo4j-4.4-docker-publish 0 4.4.45-r1
Chainguard neo4j-5.26 0 5.26.12-r0
Chainguard neo4j-5.26-docker-publish 0 5.26.12-r0

Related vulnerabilities