Decompression bomb via unbounded zlib:inflate in jose_jwe_zip:uncompress/2
Impact
Improper Handling of Highly Compressed Data (Data Amplification) vulnerability in potatosalad jose (erlang-jose) allows a remote attacker to exhaust a node's memory with a small crafted JWE token.
Source excerpt · OSVWhat to do
Reject JWE tokens that carry a zip header before passing them to jose_jwe:block_decrypt/2. DEFLATE compression is rarely used in legitimate JWE traffic, so untrusted tokens whose protected header contains zip: DEF can be inspected and filtered out before decryption.
Affected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
| Affected range | Recorded fix |
|---|---|
| From 1.0.0 before 1.11.13Semantic versions | 1.11.13 |
Version evidence: OSV · EEF-CVE-2026-65627
View original version evidence (46 explicit versions)
Affected products
Vendor version evidence. Product records are separate from automatic dependency matching.
potatosalad · jose
Other versions: unaffected
| Version / range | Source status |
|---|---|
| 1.0.0 to before 1.11.13 | affected |
potatosalad · jose
Other versions: unaffected
| Version / range | Source status |
|---|---|
| a7746ecd4950f85a393136e449a91dac62b5c429 to before 857eb8e7f2d33e2c9ca2189e77226561cacaf2ad | affected |
Original source description
Summary
Improper Handling of Highly Compressed Data (Data Amplification) vulnerability in potatosalad jose (erlang-jose) allows a remote attacker to exhaust a node's memory with a small crafted JWE token.
The jose_jwe_zip:uncompress/2 function in src/jwe/jose_jwe_zip.erl decompresses the DEFLATE-compressed plaintext of a JWE that carries the optional zip: DEF header by calling zlib:inflate/2 on the entire attacker-controlled stream, with no bound on the output size or the inflation ratio. Raw DEFLATE reaches ratios around 1000:1 on highly repetitive input, so a few-kilobyte token inflates to hundreds of megabytes or gigabytes in a single call.
Decompression runs automatically during decryption through jose_jwe:block_decrypt/2 (JOSE.JWE.block_decrypt/2 in Elixir), before the recipient can inspect or reject the payload. With the common asymmetric key-management algorithms (RSA-OAEP, ECDH-ES) an attacker needs only the recipient's public key to craft such a token, so no authentication or secret material is required. A single small token can exhaust the node's memory and crash the BEAM, denying service to all users.
This issue affects jose: from 1.0.0 before 1.11.13.
Workarounds
Reject JWE tokens that carry a zip header before passing them to jose_jwe:block_decrypt/2. DEFLATE compression is rarely used in legitimate JWE traffic, so untrusted tokens whose protected header contains zip: DEF can be inspected and filtered out before decryption.
Source version evidence
This source records affected versions without identifying a package ecosystem and name. This evidence is not used for package matching.
References
- Security advisory github.com/potatosalad/erlang-jose/security/advisories/GHSA-wfpv-qxp8-x5gm
- Security advisory cna.erlef.org/cves/CVE-2026-65627.html
- Patch github.com/potatosalad/erlang-jose/commit/a7746ecd4950f85a393136e449a91dac62b5c429
- Patch github.com/potatosalad/erlang-jose/commit/857eb8e7f2d33e2c9ca2189e77226561cacaf2ad
- Source reference hex.pm/packages/jose
- Security advisory osv.dev/vulnerability/EEF-CVE-2026-65627