Skip to main content

LZ4 Java EUVDEUVD-2026-93871

| CVE-2026-106452 MEDIUM
Memory Allocation with Excessive Size Value (CWE-789)
2026-10-06 security-advisories@github.com GHSA-4v53-57pg-c464
5.3
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Submit crafted LZ4 stream to service
  2. Exploit
    Set near-2GiB compressedLen in legacy block header
  3. Execution
    refill() allocates oversized buffer before reading payload
  4. Impact
    Exhaust JVM heap causing OutOfMemoryError / DoS

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory allocation limits
Exploitation Conditions

The consuming application must use net.jpountz.lz4.LZ4BlockInputStream (or its Builder) to decompress LZ4 legacy-block data that an attacker can influence; against that default configuration no authentication or user interaction is required, since refill() validates only that compressedLen is nonnegative and allocates the buffer before reading payload. The concrete prerequisite is an attacker-supplied non-canonical legacy LZ4Block header whose compressedLen is set greater than or equal to originalLen (up to ~2 GiB) - canonical writers never emit such blocks, so the attacker must forge one. Limiting factors: the vulnerability is only reachable if the application exposes this reader to untrusted compressed input; version 1.11.2+ rejects oversized blocks by default and only reintroduces the risk if an operator explicitly calls withAcceptOversizedBlocks(true), and effective impact depends on the JVM's configured maximum heap relative to the ~2 GiB request.

Impact

This is a memory-allocation denial-of-service flaw (CWE-789), not a priority emergency. The provided CVSS:3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L = 5.3 MEDIUM) is internally consistent with the description: a remote, unauthenticated, low-complexity trigger with availability-only impact and no confidentiality or integrity loss. No EPSS score, no CISA KEV listing, and no standalone public exploit were provided, so exploitation is currently 'no public exploit identified at time of analysis' - though the fix commit (bb83dd1) ships a regression test that demonstrates the oversized-block code path. The signals are non-conflicting and all point to a moderate resource-exhaustion issue rather than code execution: the A:L rating reflects that a single crafted header forces one ~2 GiB heap allocation (transient failure) rather than guaranteed process death, but note that on JVMs with max heap below ~2 GiB the resulting OutOfMemoryError can realistically crash or destabilize the host application, which would push real-world impact toward A:H. Exploitability is entirely gated by whether the consuming application feeds attacker-controlled LZ4 legacy-block streams into LZ4BlockInputStream; the library default is vulnerable (the patch rejects non-canonical oversized blocks unless the new withAcceptOversizedBlocks(true) opt-in is set). Caveat: the input Tag 'Information Disclosure' directly contradicts the CVSS vector (C:N/I:N) - this is an availability/DoS issue, so that label should not drive triage.

Exploit ScenarioDerived

An attacker who can submit LZ4-compressed data to a service that decompresses it via net.jpountz.lz4.LZ4BlockInputStream crafts a header-only legacy LZ4Block whose compressedLen field is set near 2 GiB. Because refill() only checks that the value is nonnegative and allocates the compressed-input buffer before reading any payload, a tiny request forces a massive JVM heap allocation, risking OutOfMemoryError and service disruption. No weaponized public exploit is known, but the vendor's fix commit includes a regression test exercising this exact oversized-block path.

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 06, 2026

Heap exhaustion in the yawkat LZ4 Java library before 1.11.2 allows remote denial of service: net.jpountz.lz4.LZ4BlockInputStream.refill() checks that the compressedLen field of a legacy LZ4Block header is nonnegative but then allocates a compressed-input buffer of exactly that attacker-controlled size before any payload is read. Because each header is only a handful of bytes, a header-only stream can request a near-2 GiB allocation and crash the JVM with OutOfMemoryError, affecting any application that decompresses attacker-influenced LZ4 legacy-block data with the default reader configuration; no public exploit code or active exploitation was identified at time of analysis (CVSS 5.3, availability-only impact). The flaw is fixed in version 1.11.2, which rejects non-canonical oversized blocks by default.

RemediationAI

Vendor-released patch: upgrade to yawkat LZ4 Java 1.11.2 (https://github.com/yawkat/lz4-java/releases/tag/v1.11.2), which rejects legacy LZ4 blocks whose compressedLen is greater than or equal to originalLen by default; after upgrading, ensure no operator re-enables the vulnerable behavior via Builder.withAcceptOversizedBlocks(true), which is intended only for trusted, deliberately noncanonical input. If an immediate upgrade is not possible, the most effective compensating control is to stop feeding untrusted data to LZ4BlockInputStream at all - prefer LZ4FrameInputStream, which applies frame-level sizing constraints, or decode only blocks produced by trusted canonical writers; because the malicious header is only a few bytes, wrapping the stream in a byte-count limiter or capping input size does not mitigate the allocation and should not be relied on. Restricting the exposure of any endpoint, job, or queue that performs LZ4 legacy-block decompression to authenticated or internal callers reduces reachability at the cost of reduced functionality. As a containment measure, running the decoder in a JVM with a modest -Xmx and an OutOfMemoryError-tolerant supervisor limits the blast radius, at the trade-off that OOM conditions can still disrupt other work in the same JVM, so process isolation (separate JVM or container per decoding task) is preferable. Monitor the advisory at https://github.com/yawkat/lz4-java/security/advisories/GHSA-4v53-57pg-c464 and the fixing commit at https://github.com/yawkat/lz4-java/commit/bb83dd16163cdb71231af06b0a5651881148a634 for any backports. No public exploit code was identified at time of analysis, but the flaw is trivially reachable by forging a header, so patching should be prioritized on any internet-facing decoder.

Affected VersionsENISA

lz4-java < 1.11.2

Affected Packages

maven at.yawk.lz4:lz4-java fix: 1.11.2
maven org.lz4:lz4-java no fix
euvd lz4_java fix: 1.11.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 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

LZ4 block-format streams carry a header per block with a compression method byte, a 4-byte compressed length (compressedLen) and a 4-byte original length (originalLen). Canonical writers emit a raw block (COMPRESSION_METHOD_RAW) whenever compression would not shrink the data, so for LZ4-compressed blocks compressedLen is always strictly less than originalLen; a block whose compressed length is greater than or equal to the original length is therefore non-canonical and can only come from a forged or malformed stream. In the vulnerable code path, refill() validated only that compressedLen was nonnegative and then allocated the input buffer of that size before reading payload, a classic CWE-789 (memory allocation with excessive size) pattern in which an attacker-controlled length field drives allocation prior to validation of the actual data. The upstream commit bb83dd16163cdb71231af06b0a5651881148a634 adds an acceptOversizedBlocks flag (default false) to LZ4BlockInputStream and its Builder, extending refill()'s validation to reject COMPRESSION_METHOD_LZ4 blocks where compressedLen >= originalLen, and exposes Builder.withAcceptOversizedBlocks(boolean) (since 1.11.2) documented as safe only for trusted, noncanonical input because it restores the large-allocation behavior. The patch ships as release v1.11.2 and is accompanied by new LZ4BlockStreamingTest coverage.

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) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 5.3 MEDIUM

Remote, low-complexity, unauthenticated parsing of a crafted stream with no UI; impact is availability-only via a single transient oversized heap allocation, hence A:L and C/I:N.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Red Hat 5.3 MEDIUM

Primary rating from Vendor (github).

CVSS VectorVendor: github

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

Lifecycle Timeline

1
Patch available
Oct 06, 2026 - 21:05 EUVD

DescriptionCVE.org

yawkat LZ4 Java provides LZ4 compression for Java. Prior to 1.11.2, net.jpountz.lz4.LZ4BlockInputStream refill() validates that the compressedLen field in a legacy LZ4Block header is nonnegative but allocates a compressed-input buffer of that attacker-controlled size before reading payload data, allowing a header-only stream to request a near-2 GiB allocation and exhaust the JVM heap. Canonical writers emit raw blocks when compression is not smaller than the original block, but vulnerable readers accept non-canonical oversized compressed blocks. This issue is fixed in version 1.11.2.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1,245 maven packages depend on at.yawk.lz4:lz4-java (78 direct, 1,171 indirect)
  • 193 maven packages depend on org.lz4:lz4-java (62 direct, 133 indirect)

Ecosystem-wide dependent count for version 1.11.2 and other introduced versions.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Low
niche maintained fork of lz4-java, limited production adoption
Threat Intel
1
1 sources
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub

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
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
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

Vendor StatusVendor

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