Skip to main content

snappy-java CVE-2026-116590

| EUVDEUVD-2026-110473 MEDIUM
Improper Validation of Array Index (CWE-129)
2026-10-26 GitHub_M GHSA-xqrx-qh46-34m7
5.9
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Supply crafted compressed or typed-array input
  2. Exploit
    Pass negative/oversized or int-overflowing range to Snappy.arrayCopy
  3. Execution
    Native memcpy reads/writes outside array bounds
  4. Impact
    Crash JVM (denial of service)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Array index validation
Exploitation Conditions

Exploitation requires the embedding application to forward caller-controlled ranges into the vulnerable primitives in snappy-java < 1.1.10.9 - specifically Snappy.arrayCopy(src, offset, byteLength, dest, destOffset), SnappyInputStream.rawRead/read, or SnappyOutputStream.rawWrite/write (including their typed-array variants). The concrete triggers are a negative or oversized byteLength/offset passed through to native memcpy, or a typed-array byte-size calculation that overflows int. A realistic path is an application decompressing untrusted data via SnappyInputStream where byteLength derives from attacker-influenced input. Limiting factors: no authentication is needed (PR:N) and no user interaction (UI:N), but the application must actually expose untrusted offsets/lengths to these methods (reflected by AC:H) - if it validates ranges itself or never passes attacker-controlled sizes, the flaw is not reachable; documented impact is limited to availability (JVM crash). The vendor states the complete fix is upgrading to 1.1.10.9; the only stated workaround is to validate offsets and lengths before calling these methods.

Impact

Signals point to a real but modest priority. The CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H, base 5.9 Medium) scores availability-only impact - the documented consequence is a JVM crash (denial of service), with no confidentiality or integrity impact in the official vector. AC:H reflects that triggering is not straightforward: the flaw lives in a library primitive, so exploitation depends on the embedding application forwarding caller-controlled offsets/lengths to the vulnerable methods. EPSS is low at 0.41% (35th percentile), the CVE is NOT in CISA KEV, and no public exploit code is present among the references (all are vendor advisory/patch/release links, not PoC). The vuln.today Decision label is this_month, not act_now or emergency, consistent with a widely-used library that carries DoS-only risk rather than active exploitation. SSVC-style reasoning: exploitation status is none, technical impact is partial (availability loss, not full control), and automatability is uncertain because it hinges on application-specific data flow. Net: patch on a normal maintenance cadence; this is a genuine but lower-urgency availability issue, not a drop-everything event. Note the tension between the GHSA text (out-of-bounds read AND write, CWE-787) and the official impact metrics (C:N/I:N/A:H); the broader memory-safety wording could in principle imply disclosure/corruption, but only JVM crash is documented as the outcome - verify with vendor if confidentiality/integrity impact matters for your threat model.

Exploit ScenarioDerived

An application decompresses attacker-supplied data through SnappyInputStream (or calls Snappy.arrayCopy / typed-array read/write with attacker-influenced offsets or lengths). A crafted negative or oversized byteLength - or a typed-array byte-size calculation that overflows int - is passed straight to native memcpy, which reads or writes outside the array bounds and crashes the JVM. No public exploit code was identified; reachability depends on whether the host application exposes caller-controlled ranges to untrusted input, consistent with the AC:H rating.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 28, 2026

Unchecked range validation in snappy-java (org.xerial.snappy:snappy-java) prior to 1.1.10.9 lets caller-supplied offsets and lengths reach a native memcpy, so negative or oversized byteLength/offset values can read or write outside Java array bounds and crash the JVM. Unauthenticated remote attackers can only reach the flaw if the embedding application forwards attacker-influenced ranges into Snappy.arrayCopy, SnappyInputStream.rawRead/read, or SnappyOutputStream.rawWrite/write (including typed-array variants), which is why the assessed vector is AV:N/AC:H with availability-only impact. There is no CISA KEV listing and no public exploit identified at time of analysis; EPSS is low at 0.41% (35th percentile) and the vendor has released 1.1.10.9 as the complete fix.

RemediationAI

Upgrade org.xerial.snappy:snappy-java to 1.1.10.9 or later, which the vendor describes as the complete fix: it null-checks and range-validates both the source and destination arrays in Snappy.arrayCopy, validates offsets and lengths in the stream read/write methods, and rejects typed-array ranges whose byte size would overflow int. The fix is visible upstream in pull request https://github.com/xerial/snappy-java/pull/741 and commit https://github.com/xerial/snappy-java/commit/2d7ca71c087a98f1219fb2d51909f3891c3ce77b, with the advisory at https://github.com/xerial/snappy-java/security/advisories/GHSA-xqrx-qh46-34m7 and the release at https://github.com/xerial/snappy-java/releases/tag/v1.1.10.9. If upgrading must be staged, the vendor's only stated workaround is to validate offsets and lengths in the calling application before invoking these methods, i.e. reject negative byteLength, negative offsets, offset plus length combinations that exceed the array length, and typed-array ranges whose element count multiplied by the element width exceeds Integer.MAX_VALUE; the trade-off is that this leaves the vulnerable native path in place and depends entirely on every call site performing the check correctly, so it should be treated as temporary. Prioritisation can follow a normal cycle rather than emergency handling, consistent with the this_month decision label and the low EPSS score.

Affected VersionsENISA

snappy-java < 1.1.10.9

Affected Packages

maven org.xerial.snappy:snappy-java fix: 1.1.10.9
euvd snappy_java fix: 1.1.10.9

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in maven, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

snappy-java is a JNI-backed Java port of Google's Snappy compression library, so the hot path crosses from managed byte arrays or typed arrays into native code. CWE-129 (Improper Validation of Array Index) is the root cause class here: Snappy.arrayCopy(Object src, int offset, int byteLength, Object dest, int destOffset) passed caller-supplied ranges straight to native memcpy without confirming that the range lay inside either array, so a negative length or an offset beyond the array bounds produced an out-of-bounds read or write (the GitHub advisory also classifies the memory-corruption side as CWE-787). The stream wrappers SnappyOutputStream.rawWrite and SnappyInputStream.rawRead, and their typed-array write/read overloads, forward caller-controlled ranges into that primitive. A second, related defect is integer arithmetic: typed-array element counts are converted to byte sizes by multiplying by the element width (1, 2, 4 or 8 bytes), and that product can overflow int for large ranges. The upstream fix adds null checks and checkArrayRange for src/dest, adds checkElementRange that verifies [off, off+len) lies within the array and that the byte size fits in int, rejects negative byteSize in maxCompressedLength, and replaces the internal requiredCompressedLength helper so that int overflow of the native maximum-compressed-length result raises SnappyError TOO_LARGE_INPUT.

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

Vendor (GitHub_M) PRIMARY 5.9 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 5.9 MEDIUM

Reachable via untrusted compressed input so AV:N/PR:N; triggering depends on the host app forwarding caller-controlled ranges, so AC:H; documented outcome is a JVM crash only, hence C:N/I:N/A:H.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Oct 26, 2026 - 22:03 EUVD
CVE Published
Oct 26, 2026 - 21:48 cve.org
MEDIUM 5.9

DescriptionCVE.org

snappy-java is a Java port of the snappy, a fast C++ compresser/decompresser developed by Google. Prior to 1.1.10.9, Snappy.arrayCopy(Object src, int offset, int byteLength, Object dest, int destOffset) passes caller-supplied ranges to native memcpy without validating either array, allowing negative or oversized byteLength and offset values to read or write outside array bounds and crash the JVM. SnappyOutputStream.rawWrite and SnappyInputStream.rawRead, including their typed-array write and read methods, pass caller-controlled ranges through this primitive, and typed-array byte-size calculations can overflow int. This issue is fixed in version 1.1.10.9.

Threat Intelligence Overview

EPSS Score
0.4%
Top 65% exploitable
Prevalence
High
widely-used JVM compression library, common transitive dependency across big-data stacks
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Java

View all
CVE-2012-4681 CRITICAL POC
9.8 Aug 28

Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m

CVE-2015-7450 CRITICAL POC
9.8 Jan 02

Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti

CVE-2013-2465 CRITICAL POC
9.8 Jun 18

Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2010-1871 HIGH POC
8.8 Aug 05

JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to

CVE-2012-1723 CRITICAL POC
9.8 Jun 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2012-0507 CRITICAL POC
9.8 Jun 07

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up

CVE-2015-4852 CRITICAL POC
9.8 Nov 18

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

CVE-2012-5076 CRITICAL POC
9.8 Oct 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow

CVE-2017-3066 CRITICAL POC
9.8 Apr 27

Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla

CVE-2012-0391 CRITICAL POC
9.8 Jan 08

The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy