Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft ZIP with duplicate entry names
-
DeliverySubmit archive to validating application
-
ExploitgetEntry() returns benign last duplicate
-
ExecutionextractAllTo() writes malicious first duplicate
-
ImpactUnvalidated bytes written to disk
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service Interpretation consistency
|
| Exploitation Conditions | Exploitation requires the consuming application to follow a validate-then-extract pattern on untrusted input: it must inspect a named entry's content via getEntry(name).getData() and trust that result, then call extractAllTo() (synchronous, default overwrite policy) on the same archive. The attacker must craft a ZIP containing two entries with the identical name so getEntry() resolves the last duplicate (via entryTable) while extractAllTo() writes the first (via entryList). LIMITING FACTORS: this is NOT exploitable against applications that simply extract without a getEntry-based content check, nor against versions 0.6.1 and later; the AC:H and AT:P metrics reflect that the specific duplicate-name ordering and the application's check-then-extract logic must both align for the bypass to succeed. |
| Impact | This is a genuine-but-conditional integrity risk rather than a blanket critical flaw. The CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N) scores 8.2 with impact confined to integrity (VI:H; VC:N, VA:N), which is consistent with a classic TOCTOU-style validate-then-extract bypass (CWE-436, interpretation conflict). The high attack complexity (AC:H) and present attack requirements (AT:P) are the key moderating signals: exploitation does not work against arbitrary deployments but only against applications that follow a specific check-then-use pattern, so the headline score overstates universal risk. A working PoC is published in the GHSA advisory (publicly available exploit code exists), which raises practical concern, but there is NO CISA KEV listing and NO EPSS score was provided in the input, so there is no evidence of active or widespread exploitation - the risk is best read as library-supply-chain/targeted rather than mass-exploited. Note a signal tension: PR:N labels this unauthenticated, yet real-world impact depends entirely on how the downstream application uses adm-zip, so the 'network unauthenticated' framing applies to delivering the malicious archive, not to a direct service compromise. |
| Exploit ScenarioDerived | An application accepts an untrusted ZIP, calls getEntry('b.txt').getData() to validate that entry's contents against a policy, and after the check passes calls extractAllTo() to unpack the archive. An attacker submits a crafted ZIP containing two entries both named 'b.txt' - a benign one that getEntry() returns for validation and a malicious one that extractAllTo() actually writes to disk. A public PoC demonstrating this exact divergence (validated bytes 'SECOND' vs. written bytes 'FIRST') is included in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 21, 2026
Integrity bypass in adm-zip through 0.6.0 allows an unauthenticated attacker who supplies a crafted ZIP to a validate-then-extract application to have getEntry() approve one duplicate entry while extractAllTo() writes a different entry's bytes to disk. The flaw is conditional: the consuming application must inspect a named entry's content via getEntry() and then extract the same archive, and the archive must contain duplicate entry names with the relevant ordering; applications that only extract without a getEntry-based content check are not affected. Public proof-of-concept code is present in the upstream advisory, and no CISA KEV active-exploitation listing is associated with this CVE.
RemediationAI
Upgrade adm-zip to 0.6.1 or later, which contains the upstream fix for duplicate-name entry resolution; the fix commit is https://github.com/cthackers/adm-zip/commit/05101d47b3b983b705cc3e66fc34366118ba7b99 and the advisory is https://github.com/cthackers/adm-zip/security/advisories/GHSA-p634-w6r4-rjp2. If immediate upgrade is not possible, do not use getEntry(name).getData() as the sole validation step before extractAllTo(); instead pre-scan the archive entry list and reject archives containing duplicate entry names (trade-off: may reject rare but legitimate archives with duplicate names), or extract into an isolated quarantine directory and validate the actual files written to disk before trusting or moving them (trade-off: additional storage, I/O, and cleanup, plus validation must complete before any extracted content is used). Earlier versions remain vulnerable, so compensating controls should be treated as temporary.
Affected VersionsENISA
Affected Packages
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 Node.js ZIP library used to read, create, and extract ZIP archives. ZIP archives can contain multiple entries with identical names, and the format does not require unique names. In vulnerable versions, adm-zip stores all entries in an internal entryList but maintains a name-keyed entryTable that overwrites earlier entries, so getEntry(name) resolves the last duplicate while extractAllTo() iterates entryList and writes the first duplicate. This is an interpretation conflict (CWE-436) between lookup and extraction that breaks the common validate-then-extract pattern when an application trusts getEntry() output before extracting untrusted input. The independently assessed CVSS 3.1 vector is AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N, reflecting integrity-only impact and high attack complexity tied to the required duplicate-name ordering and application behavior.
Know when npm 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:H/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
Malicious archive is delivered remotely (AV:N) with no auth (PR:N), but success depends on the app's specific validate-then-extract logic and crafted duplicate ordering (AC:H); impact is integrity-only (I:H, C:N, A:N).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
adm-zip before 0.6.1 contains an inconsistent entry resolution vulnerability that allows attackers to bypass content validation by supplying ZIP archives with duplicate entry names. Attackers can craft archives where getEntry() returns the last duplicate while extractAllTo() writes the first, causing unvalidated bytes to be written to disk.
Blast Radius
ecosystem impact- 4,747 npm packages depend on adm-zip (704 direct, 4,072 indirect)
Ecosystem-wide dependent count for version 0.6.1.
Technical POC Analysis
CWE-436 (Interpretation Conflict), with CWE-696 (Incorrect Behavior Order) as a secondary classification per the advisory.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Organizations using the adm-zip library through 0.6.0 face a high-severity integrity weakness in ZIP handling that can make file-validation results unreliable when an application inspects an entry before extracting the same archive. Publicly available exploit code exists, and no vendor-released patch is identified at time of analysis, leaving file-upload and content-processing workflows exposed until mitigations are applied. Leadership should prioritize this because the issue can undermine assurance in business processes that depend on inspecting package contents before they are written to disk.
No vendor-released patch identified at time of analysis; interim mitigations include rejecting ZIP archives with duplicate entry names before processing, avoiding validate-then-extract patterns that use getEntry() followed by extractAllTo() on the same archive, extracting to an isolated temporary location and validating the actual extracted file rather than the pre-extraction entry, and replacing adm-zip through 0.6.0 with a maintained alternative or wrapper that enforces unique entry names where feasible.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Related Vulnerabilities in adm-zip ZIP Processing Vulnerabilities
View all 4The npm ci command in npm 7.x and 8.x through 8.1.3 proceeds with an installation even if dependency information in pack
DNS rebinding against the local Streamable HTTP MCP listener in @zereight/mcp-gitlab before 2.1.30 lets a malicious web
Archive extraction in the Node.js decompress package allows a crafted archive containing chained symlink entries to reso
The legacy DOC renderer in File Viewer emits document-controlled hyperlink targets into generated HTML after character e
Untrusted git configuration includes reachable through simple-git before 4.0.0 let an attacker execute arbitrary command
A remote, unauthenticated denial-of-service condition in the NestJS (Nest) microservices framework lets an attacker cras
Deeply nested brace patterns cause unbounded recursion in the npm brace-expansion library, exhausting the native stack a
Stack exhaustion in the npm library brace-expansion (all versions prior to 1.1.19, 2.1.5, 3.0.7, and 5.0.10) lets a craf
The JavaScript library ip-address (npm) fails to treat the NAT64 local-use prefix 64:ff9b:1::/48 as private, so applicat
Cross-family subnet comparisons in the ip-address npm library (all versions before 10.7.1) can cause isInSubnet and isHo
Denial of service in the ip-address JavaScript/npm library (all versions prior to 10.7.1) lets remote attackers stall or
A credential-isolation flaw in geelen mcp-remote 0.1.16 through 0.1.38 allows a remote attacker who controls or can pred
EUVD-2026-106907
GHSA-mr8q-rv22-x3fr
NVD
CVE.org
EPSS
Exploit-DB