Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend crafted framed Snappy stream
-
DeliveryDeclare oversized chunk length
-
ExploitTrigger OutOfMemoryError on buffer reallocation
-
ExecutionDouble-release buffer into shared pool
-
ImpactRead or overwrite other streams' decompressed data
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Double free prevention
|
| Exploitation Conditions | Exploitation requires that the target application decompress attacker-supplied Snappy *framed* data specifically through SnappyFramedInputStream, and that this stream draw from a buffer pool shared across multiple concurrently-active streams - the cross-stream exposure only manifests when a double-released pooled buffer is handed to another live stream. The concrete trigger is a frame whose declared chunk length is large enough that the replacement allocation fails with OutOfMemoryError along the path near SnappyFramedInputStream.java:243. Limiting factors: the leak is opportunistic, not deterministic (reflected by AT:P), there is no impact on single-stream or non-pooled usage, applications using the classic SnappyInputStream rather than the framed variant are not affected by this specific path, and only versions 1.1.7.4 through 1.1.10.9 are vulnerable. |
| Impact | This is a medium-severity (CVSS 4.0 base 6.3) memory-safety flaw in a widely-embedded Java library, best characterized as a real-but-conditional risk rather than an urgent emergency. The provided CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N) indicates network-reachable, unauthenticated exploitation but with AT:P - meaning a specific attack requirement (the race/allocation-failure condition) must be met, which materially lowers reliability. Impact is limited and split: VC:L and VI:L (low confidentiality and integrity) with VA:N (no availability impact claimed in the vendor vector, even though the trigger itself is an OutOfMemoryError). No KEV listing, no EPSS score, and no public exploit were provided, so exploitation is currently theoretical: no public exploit identified at time of analysis. The strongest mitigating signals are the AT:P attack requirement and the need for a shared buffer pool serving multiple concurrent streams, which make the cross-stream data leak opportunistic rather than attacker-controlled. The strongest aggravating signal is the library's enormous transitive-dependency footprint across the Java data ecosystem. Net: patch on a normal cadence, prioritized above cosmetic issues but below any network-facing unauthenticated RCE. Note: no EPSS data was supplied, so exploitation probability cannot be quantified from the input. |
| Exploit ScenarioDerived | An attacker submits a specially crafted Snappy framed stream whose frame header declares an extremely large chunk length to a service that decompresses untrusted input via SnappyFramedInputStream from a shared buffer pool. The oversized declaration forces a replacement buffer allocation that fails with OutOfMemoryError, causing the same pooled buffer to be released twice; a second, concurrent stream then draws that same backing array and reads or clobbers the attacker's-or-victim's decompressed data. No public exploit code is known, and the AT:P attack requirement makes the cross-stream leak opportunistic rather than deterministic. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Double-release of pooled decompression buffers in Xerial snappy-java 1.1.7.4 through 1.1.10.9 lets a crafted Snappy framed stream corrupt or expose data belonging to another, concurrently active stream. An attacker-supplied frame that declares an oversized chunk length forces the replacement buffer allocation to fail with OutOfMemoryError, after which the failed path still treats the already-released pooled buffer as live and returns it to the pool a second time, so the same backing array can be handed to a second stream. The flaw is remote and unauthenticated (CVSS:4.0 vector PR:N) but opportunistic rather than deterministic, requires the target to decompress untrusted framed input through SnappyFramedInputStream while drawing from a shared buffer pool, and carries no public exploit identified at time of analysis; overall risk is medium severity rather than urgent emergency.
RemediationAI
Vendor-released patch: upgrade snappy-java to 1.1.10.10 or later, which nulls the released buffer references before reallocation so close() cannot perform the second release (fix commit 139a53090a6662298924fd75d21f4769b4a219ea; release notes at https://github.com/xerial/snappy-java/releases/tag/v1.1.10.10; advisory at https://github.com/xerial/snappy-java/security/advisories/GHSA-c73m-r934-8qvg). Because the library is usually a transitive dependency, prioritize by locating the snappy-java version in your dependency tree (Maven/Gradle dependency resolution or SBOM) and pin it to 1.1.10.10 or newer rather than relying on a parent framework's upgrade cadence. Until patching is complete, the most effective compensating control is to stop feeding attacker-controlled data into SnappyFramedInputStream: where the wire format is under your control, use the non-framed SnappyInputStream path, which is not affected by this double-release, or terminate the framed format at a boundary where the decompressed payload is not mixed with other tenants' streams - the trade-off is loss of framed-format compatibility for external producers. If framed input must be accepted from untrusted sources, enforce a hard cap on the declared chunk length and on total input size before decompression so the oversized-allocation failure that triggers the double release cannot occur, accepting that legitimate large frames above the cap will be rejected. Additional defensive controls include disabling or bypassing shared buffer pooling for untrusted decompression (higher allocation and GC overhead) and, where the JVM allows it, catching OutOfMemoryError at the decompression boundary rather than letting it propagate through stream teardown, though that is a best-effort guard and not a substitute for the upgrade.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-415 (double free) in the buffer lifecycle of org.xerial.snappy.SnappyFramedInputStream, part of the snappy-java pure-Java binding to Google's Snappy compression codec. snappy-java is widely embedded transitively (Hadoop, Kafka, Spark, Cassandra, Elasticsearch and similar JVM data pipelines), and its framed stream implementation - not the classic SnappyInputStream format - manages heap and direct ByteBuffers through a pool to avoid per-stream allocation and GC pressure. In the vulnerable code path around SnappyFramedInputStream.java:243, buffers are released back to that pool before the replacement allocation is attempted; if the allocation then throws OutOfMemoryError, the stale fields (input, uncompressedDirect, buffer) are not cleared, so close() releases the same buffers again. Because the pool is shared, the doubly-released array can be re-issued to a different live stream, producing cross-stream disclosure or overwrite of decompressed bytes. The vendor fix (commit 139a53090a6662298924fd75d21f4769b4a219ea, released as v1.1.10.10) nulls the released references before allocation so a second release cannot occur; the same commit also documents the unchecked memory bounds of the off-heap rawCompress/rawUncompress entry points and rewrites SnappyInputStream's concatenated-header skipping as an iterative loop with lazily grown chunk buffers, hardening adjacent parsing paths. The CVSS 4.0 AT:P metric reflects the conditional, non-deterministic nature of exploitation, and the independent assessment scores it CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N.
Know when Java gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
AV:N and PR:N since attacker-controlled framed input needs no auth; AC:H because the leak depends on an OOM-triggered double-release racing a shared-pool reuse; C:L/I:L for partial cross-stream data exposure/overwrite, A:N per vendor.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Xerial snappy-java from 1.1.7.4 before 1.1.10.10 contains a double release vulnerability in SnappyFramedInputStream that returns pooled buffers twice when replacement allocation fails. Attackers can supply framed data with a large declared chunk length to trigger OutOfMemoryError, causing shared backing arrays that expose or overwrite other streams' decompressed data.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
EUVD-2026-95806
GHSA-2xrm-qggp-hr4m
NVD
CVE.org
EPSS
VulDB
Exploit-DB