CVE-2026-53659
nicheUnauthenticated gzip decompression bomb DoS in http4k Kotlin toolkit
http4k, a functional toolkit for Kotlin HTTP applications, fails to limit the decompressed size of gzip-encoded request bodies handled by ServerFilters.GZip, RequestFilters.GunZip, and the underlying decompression functions (CWE-409). An unauthenticated attacker can send a small, highly compressed gzip request body that expands to gigabytes in memory, exhausting the JVM heap and denying service to all other clients. Any application built on http4k versions prior to 4.51.0.0, 5.42.0.0, or 6.49.0.0 that enables gzip handling of inbound request bodies is affected. The fix enforces a default 10 MiB limit via SizeLimitedInputStream, returning 413 Request Entity Too Large (or throwing SizeLimitExceededException on other decompression paths). No public proof of concept exists and the issue is not in the CISA KEV catalog, so exploitation appears theoretical at this time.
What to do: Upgrade to http4k 4.51.0.0, 5.42.0.0, or 6.49.0.0 (the fixed release in your major version line) as soon as possible. If you cannot upgrade immediately, wrap gzip request-body decompression with a size-limited stream (e.g., SizeLimitedInputStream, default 10 MiB) or place a reverse proxy in front that caps request body sizes. Audit whether your application actually applies ServerFilters.GZip or RequestFilters.GunZip to inbound request bodies, since only those decompression paths are vulnerable.
| http4k | 4.x before 4.51.0.0 |
| http4k | 5.x before 5.42.0.0 |
| http4k | 6.x before 6.49.0.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
http4k is a functional toolkit for Kotlin HTTP applications. Prior to 4.51.0.0, 5.42.0.0, and 6.49.0.0, ServerFilters.GZip, RequestFilters.GunZip, and the underlying Gzip request-body decompression functions impose no limit on decompressed size. An unauthenticated client can send a small gzip-encoded request body that expands to gigabytes, exhausting the JVM heap and denying service to other clients. The fix uses SizeLimitedInputStream to enforce a default 10 MiB limit, causes ServerFilters.GZip and RequestFilters.GunZip to return 413 Request Entity Too Large, and causes other decompression paths to throw SizeLimitExceededException. This issue is fixed in versions 4.51.0.0, 5.42.0.0, and 6.49.0.0.
- Weakness
- CWE-409
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
In the news0 stories
No ingested article mentions this CVE yet.