---
id: "CVE-2026-114104"
kind: "vulnerability"
aliases: ["CVE-2026-114104"]
title: "adm-zip: duplicate ZIP entry names bypass content validation before extraction"
severity: "high"
cvss: 8.2
epss: 0.00232
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["adm-zip", "node.js", "package", "self-hosted"]
not_affected_if: ["no-untrusted-zip-extraction", "trusted-input-only"]
published_at: "2026-10-21T01:17:36+00:00"
first_seen_at: "2026-10-23T21:57:28+00:00"
updated_at: "2026-10-25T03:03:52+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-114104", "first_seen_at": "2026-10-23T21:57:28+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-114104", "first_seen_at": "2026-10-24T13:15:54+00:00"}]
---

# adm-zip: duplicate ZIP entry names bypass content validation before extraction

adm-zip before 0.6.1 resolves duplicate entry names inconsistently: getEntry() returns the last copy while extractAllTo() writes the first. An attacker can therefore get bytes past a content check and onto disk.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Run `npm ls adm-zip` in each project to find the installed version.
- Check lockfiles (`package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`) for `adm-zip` below `0.6.1`.

## Fix

- Upgrade `adm-zip` to `0.6.1` or later.
- Until upgraded, do not extract untrusted ZIP archives with `extractAllTo()`, or validate entries by reading the same entry that gets written.

## Timeline

- 2026-10-23T21:57:28+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-114104
- 2026-10-24T13:15:54+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-114104

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
