CVE-2026-75936 Overview
CVE-2026-75936 affects Amazon ion-java versions before 1.12.0. The library's GZIP auto-decompression handler improperly handles highly compressed input, allowing a crafted Ion document to expand to an arbitrarily large size during parsing. Remote attackers can submit a small compressed payload that triggers memory or CPU exhaustion in the consuming application. This is a classic decompression bomb pattern tracked under CWE-409 (Improper Handling of Highly Compressed Data). The issue is remotely reachable over the network without authentication or user interaction wherever ion-java parses untrusted Ion input with GZIP auto-decompression enabled.
Critical Impact
A single crafted Ion payload can exhaust memory in any Java service that parses untrusted Ion input using ion-java before 1.12.0, resulting in denial of service.
Affected Products
- Amazon ion-java versions prior to 1.12.0
- Java applications and services that consume untrusted Ion documents through ion-java
- Downstream AWS SDKs and libraries that transitively depend on vulnerable ion-java releases
Discovery Timeline
- 2026-08-18 - CVE-2026-75936 published to NVD
- 2026-08-20 - Last updated in NVD database
Technical Details for CVE-2026-75936
Vulnerability Analysis
Amazon ion-java is the reference Java implementation of the Amazon Ion serialization format. The library automatically detects GZIP-compressed input streams and transparently decompresses them before parsing. The auto-decompression handler does not enforce an upper bound on the decompressed output size or on the parser's internal buffer growth. An attacker who supplies a small, highly compressed Ion document can force the parser to allocate memory proportional to the decompressed size rather than the input size. Compression ratios of 1000:1 or higher are trivially achievable with GZIP against repetitive Ion content, so a payload of a few kilobytes can expand into gigabytes of allocated buffer space, exhausting heap memory and stalling or terminating the Java Virtual Machine.
Root Cause
The root cause is missing size enforcement in the GZIP decompression path. The parser trusts the decompressed stream length and grows its buffers to fit, without a configurable ceiling applied by default. This behavior maps directly to CWE-409, where a data handler processes highly compressed input without validating the expansion ratio or resulting size.
Attack Vector
Exploitation requires only network-reachable access to an endpoint that parses attacker-controlled Ion documents through ion-java. The attacker crafts a GZIP-compressed Ion payload containing large runs of repetitive data, submits it to the target, and the auto-decompression handler expands it during parsing. No authentication and no user interaction are required. Technical details are available in the GitHub Security Advisory GHSA-wj53-jv76-65mc and the AWS Security Bulletin 2026-083.
// No verified proof-of-concept code is published for CVE-2026-75936.
// See the linked advisory for maintainer-provided details.
Detection Methods for CVE-2026-75936
Indicators of Compromise
- Java processes hosting Ion parsing workloads exhibiting sudden heap growth followed by OutOfMemoryError in application logs
- Inbound requests containing small GZIP payloads (magic bytes 1f 8b) directed at endpoints that accept Ion (application/x-amz-ion-1.0-binary or application/x-amz-ion-1.0-text)
- Repeated service restarts or health check failures correlated with a narrow set of client source addresses
Detection Strategies
- Inspect dependency manifests (pom.xml, build.gradle, SBOMs) for com.amazon.ion:ion-java at any version below 1.12.0.
- Instrument Ion parsing paths to record decompressed byte counts and alert when the decompressed-to-compressed ratio exceeds a defined threshold.
- Correlate JVM garbage collection pressure and heap allocation spikes with inbound Ion request metadata in your SIEM.
Monitoring Recommendations
- Track heap usage, GC pause time, and OutOfMemoryError frequency on services that ingest Ion documents.
- Log request size, content type, and decompressed size for every Ion parse operation.
- Alert on repeated small compressed payloads that produce disproportionately large parser buffer allocations.
How to Mitigate CVE-2026-75936
Immediate Actions Required
- Upgrade ion-java to version 1.12.0 or later across all direct and transitive dependencies.
- Rebuild and redeploy any AWS SDK or internal library that ships an older ion-java version.
- If an immediate upgrade is not possible, disable GZIP auto-decompression on untrusted input by calling withGzipDecompressionEnabled(false).
- Configure withMaximumBufferSize() with an explicit ceiling appropriate to your workload when parsing untrusted Ion.
Patch Information
The fix ships in ion-java1.12.0. Release notes and artifacts are available at the GitHub Release v1.12.0. AWS-published guidance and affected downstream components are listed in the AWS Security Bulletin 2026-083. After upgrading, callers parsing untrusted input must still apply the configuration hardening described by the maintainers.
Workarounds
- Disable GZIP auto-decompression on parsers that handle untrusted input using IonReaderBuilder.standard().withGzipDecompressionEnabled(false).
- Enforce an explicit maximum buffer size with withMaximumBufferSize() sized to the largest legitimate Ion document your service accepts.
- Terminate GZIP decompression at an upstream proxy or API gateway with a strict decompressed-size limit before requests reach the Java service.
# Configuration example: harden ion-java parsing of untrusted input
# Java (pseudo-configuration shown as shell comments)
# IonReaderBuilder builder = IonReaderBuilder.standard()
# .withGzipDecompressionEnabled(false) // disable auto-gunzip on untrusted input
# .withMaximumBufferSize(16 * 1024 * 1024); // cap parser buffer at 16 MiB
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

