Skip to main content

adm-zip CVE-2026-114103

| EUVDEUVD-2026-106906 MEDIUM
Uncontrolled Resource Consumption (CWE-400)
2026-10-21 VulnCheck GHSA-x5pg-q574-6h2m
6.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Submit crafted ZIP to app
  2. Delivery
    Falsify small declared entry size
  3. Exploit
    App reads entry via getDataAsync()
  4. Execution
    Guard bypassed, full payload buffered
  5. Impact
    Memory exhaustion / denial of service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The target application must (1) read ZIP entries using adm-zip's asynchronous getDataAsync() path rather than the synchronous getData() path, and (2) rely on the entry's declared uncompressed size as its decompression-bomb protection - the async path in methods/inflater.js passes maxOutputLength to createInflateRaw but never enforces it, accumulating the entire decompressed stream regardless of declared size. The attacker must be able to supply a ZIP whose entries have falsified small declared uncompressed sizes paired with high-ratio DEFLATE payloads. Limiting factors: applications that use the synchronous getData() path are NOT affected (maxOutputLength is enforced there by Node's inflateRawSync); impact is limited to memory consumption (availability only, no code execution or data exposure); and meaningful denial of service typically requires repeated or large crafted submissions. Affected versions are adm-zip <= 0.6.0, fixed in 0.6.1.

Impact

This is a genuine but bounded availability issue, not a top-tier priority. The input CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes a remotely reachable, low-complexity, unauthenticated trigger, but the ONLY impact metric set is VA:L - low availability impact, with no confidentiality or integrity impact (VC:N/VI:N) and no subsequent-system effect. This aligns with CWE-400 (uncontrolled resource consumption) and the Denial Of Service tag. A working PoC is published in the GHSA advisory, so publicly available exploit code exists; however, there is NO CISA KEV listing and NO EPSS score was provided in the input, so there is no signal of active or widespread exploitation - this should be read as a disclosed, POC-backed DoS weakness rather than an actively exploited threat. A key conditional limits real-world risk: exploitation only matters for applications that both (a) read ZIP entries via the asynchronous getDataAsync() path and (b) rely on the declared uncompressed size as their bomb protection; applications using synchronous getData() are already protected. The CVSS AC:L/PR:N signals suggest easy exploitation, but the practical precondition (specific API usage pattern) is an application-level dependency the CVSS vector cannot capture - verify your own code path before prioritizing. Overall: a medium-severity, patch-now-on-next-cycle issue for affected consumers, not an emergency.

Exploit ScenarioDerived

An attacker uploads or supplies a crafted ZIP file to a Node.js service that uses adm-zip and reads entries via getDataAsync() after trusting the entry's declared uncompressed size. The ZIP contains an entry with a falsified tiny declared size (e.g. 1 byte) but a high-ratio DEFLATE payload that decompresses to tens of megabytes, which the async path accumulates fully into memory, bypassing the maxOutputLength guard. A working proof-of-concept demonstrating the 64 MiB-from-1-byte bypass is published in the GHSA advisory, and repeated or larger submissions can drive memory exhaustion.

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

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

Alert me

AnalysisAIv1 – Oct 21, 2026

Memory exhaustion in adm-zip 0.6.0 and earlier allows unauthenticated remote attackers to bypass the library's decompression-bomb guard on the asynchronous getDataAsync() path, causing the full decompressed payload to be allocated regardless of an entry's declared uncompressed size. This is a genuine but bounded availability issue: only Node.js applications that read ZIP entries asynchronously and rely on the declared size as their bomb protection are exposed, there is no confidentiality or integrity impact, and meaningful denial of service typically requires repeated or large crafted submissions. Publicly available exploit code exists in the form of a working proof-of-concept published with the GitHub advisory, and the flaw is fixed in adm-zip 0.6.1.

RemediationAI

Upgrade to adm-zip 0.6.1, the vendor-released patch published alongside advisory GHSA-c6fg-446q-cg94 and commit 491600683dacb6cb9fe0718a0eeb9cb5eb49afa6, which brings the asynchronous inflater in line with the synchronous maxOutputLength enforcement; verify the resolved version in package-lock.json since transitive dependents may pin older releases. If immediate upgrade is not possible, switch entry reads from getDataAsync() to the synchronous getData() path, which delegates maxOutputLength to Node's inflateRawSync and throws ERR_BUFFER_TOO_LARGE on overrun, at the cost of blocking the event loop during decompression and still permitting a single large entry that was honestly declared. Because header sizes are attacker-controlled, add an independent cap by piping createInflateRaw through a counting transform that destroys the stream once a hard byte budget is exceeded, which costs an extra wrapper stream per read but is the only mitigation that measures real output. Alternatively, run archive parsing inside a child process or worker thread with --max-old-space-size or resourceLimits so the worst case is a killed worker rather than a dead primary service, accepting the added IPC and startup overhead, and reject or queue-limit large uploads at the ingress layer to reduce the repetition needed for a sustained outage.

Affected VersionsENISA

adm-zip 0.6.0 <0.6.1

Affected Packages

npm adm-zip fix: 0.6.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

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

Technical ContextAI · show details

adm-zip is a widely used pure-JavaScript ZIP library for Node.js. Node's zlib exposes a maxOutputLength option that is enforced by inflateRawSync, but not by the streaming createInflateRaw interface, which instead emits data chunks that the caller must bound. In methods/inflater.js the synchronous path (lines 3-10) passes {maxOutputLength: expectedLength} straight to inflateRawSync and Node aborts with ERR_BUFFER_TOO_LARGE when the output exceeds the declared size, while the asynchronous path (lines 12-31) passes the same option to createInflateRaw but never checks accumulated byte counts, buffering every chunk and finally allocating a Buffer of whatever size resulted. Because the declared uncompressed sizes in both the local file header and the central directory are attacker-controlled and never reconciled with actual stream output, a ZIP entry whose headers claim one byte can inflate to tens or hundreds of megabytes of high-ratio DEFLATE data. This is a textbook CWE-400 uncontrolled resource consumption case: the resource limit exists but is applied to only one of two code paths, so the security property the caller believes it has silently disappears when the async API is used.

Know when Adm Zip 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 (VulnCheck) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
vuln.today AI 5.3 MEDIUM

Remotely supplied crafted ZIP, no auth or interaction needed (AV:N/AC:L/PR:N/UI:N); only availability affected via memory exhaustion (A:L), no confidentiality or integrity impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 21, 2026 - 02:01 EUVD
CVE Published
Oct 21, 2026 - 00:37 cve.org
MEDIUM 6.9

DescriptionCVE.org

adm-zip 0.6.0 contains a decompression bomb protection bypass that allows attackers to evade the maxOutputLength guard by targeting the asynchronous getDataAsync() path in methods/inflater.js. Attackers can craft ZIP entries with falsified small declared sizes and high-ratio DEFLATE payloads to exhaust memory in applications reading entries asynchronously.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 4,747 npm packages depend on adm-zip (704 direct, 4,072 indirect)

Ecosystem-wide dependent count for version 0.6.1.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
High
adm-zip is a very widely used npm ZIP library in Node.js apps
Data Quality
4 sources
Confidence: Medium

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.3%
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
Yes
Human Impact· derived
Medium

Priority Score

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

Related Vulnerabilities in adm-zip ZIP Processing Vulnerabilities

View all 4

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