CVE-2026-78384: Apache CXF: Unbounded DEFLATE Decompression in CXF JOSE/JWE and SAML Processing (Decompression Bomb)
CompressionUtils.inflate() decompressed attacker-controlled DEFLATE data with no output-size cap. A small (~KB) crafted payload could expand to gigabytes on the heap. Reachable via JWE decryption when zip=DEF (e.g. JoseSessionTokenProvider with RSA-OAEP key wrap) and via SAML redirect/POST binding token inflation — in both cases decompression happens before/independent of trust validation.
Fix: Added a configurable maximum inflated-size cap (default 10 MiB, org.apache.cxf.compression-max-inflated-size system property) to CompressionUtils.inflate(); aborts with DataFormatException once exceeded. Users are recommended to upgrade to versions 4.2.4 or 4.1.9 or 3.6.13, which fix this issue.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Apache CXFto a version that resolves this vulnerability.Fixed in 4.2.4 - Upgrade
Upgrade
Apache CXFto a version that resolves this vulnerability.Fixed in 4.1.9 - Upgrade
Upgrade
Apache CXFto a version that resolves this vulnerability.Fixed in 3.6.13
Event History
Frequently Asked Questions
Which deployments are exposed to this issue?
Deployments are exposed if they process attacker-controlled compressed JWE content using zip=DEF or inflate SAML tokens received through redirect or POST bindings. The affected paths include JWE decryption with configurations such as JoseSessionTokenProvider using RSA-OAEP key wrapping, as well as SAML binding token processing.
Does an attacker need to pass trust validation or provide a valid token?
No. Decompression occurs before, or independently of, trust validation in both the JWE and SAML processing paths. An attacker can therefore trigger excessive decompression with crafted compressed input without relying on successful trust validation.
What can be done if an upgrade cannot be applied immediately?
Set the org.apache.cxf.compression-max-inflated-size system property to impose an inflated-output limit. The fixed releases use a default maximum inflated size of 10 MiB and abort decompression with DataFormatException when that limit is exceeded.
Which versions contain the fix?
The recommended fixed versions are Apache CXF 4.2.4, 4.1.9, and 3.6.13. These releases add the configurable inflated-size cap to CompressionUtils.inflate().