CVE-2026-106070
Low · 3.7CVSS
3.7
EPSS
0.4%
Published
Oct 23, 2026
CISA due date
—
Cloudanix analysis
A bug in how certain Node.js versions read ZIP files can let a specially made archive deliver different content than expected, potentially allowing bad files to slip past checks.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Data Tampering
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The zlib.ZipFile implementation in Node.js 26.x caches a parsed local header lacking a valid content offset after catching a header mismatch validation error; subsequent reads return attacker-controlled bytes from the file start while the attacker-supplied central-directory CRC still passes verification, causing the API to surface content that differs from what other ZIP parsers extract.
Why it matters to the business
Organizations relying on Node.js 26.x for ZIP processing in scanners, archivers, or build pipelines risk inconsistent file handling that can silently approve altered or malicious archives, leading to supply-chain integrity failures and potential bypass of automated security checks.
How an attack unfolds
An attacker crafts a ZIP archive whose local header does not match the central directory, supplies a matching CRC-32 in the central directory, and triggers either direct modified-property access or archive compaction; the validation error is swallowed, the malformed header remains cached, and a later content read returns attacker-chosen bytes from the file beginning instead of rejecting the entry.
How to fix it
Upgrade to a patched Node.js release that correctly rejects mismatched ZIP headers and clears cached state on validation failure; until a fix is available, replace zlib.ZipFile usage with a well-tested third-party ZIP library that enforces strict header consistency checks.
How to confirm the fix worked
Test affected code paths with ZIP archives containing deliberately mismatched local and central headers; confirm that the patched version raises a validation error and returns no content instead of attacker-controlled bytes, and that CRC verification fails for tampered central directories.
Typical attack path
- Craft a ZIP archive with mismatched local and central headers but attacker-controlled CRC values
- Deliver the archive to a Node.js 26.x application that uses zlib.ZipFile
- Trigger header validation (via modified access or compaction)
- Cause a subsequent content read that returns bytes from the file start
- Obtain approval or extraction of different content than other ZIP implementations would produce
How to detect it
Review application logs for ZIP processing errors that are caught and ignored, followed by successful content reads on the same archive; look for unusual file-start byte sequences appearing in extracted or scanned output where header validation was previously triggered.
What your security team should do
- Inventory all Node.js 26.x deployments that process untrusted ZIP archives
- Prioritize upgrade to the next Node.js maintenance release containing the fix
- Temporarily isolate or replace ZipFile-dependent scanning pipelines with alternative libraries
- Add runtime assertions that reject archives showing header mismatches before any content read
The record
A flaw in the Node.js `zlib.ZipFile` API can cause it to return bytes that do not belong to the requested entry after the local and central header validation fails. When `zipEntry.modified` is read on an archive whose local header does not match its central directory, either directly or while compacting the archive, the validation error is caught but the parsed local header is left cached without a content offset. A later content read then returns attacker-controlled bytes from the start of the file instead of rejecting the archive, and CRC-32 verification still passes because the attacker controls the central directory CRC. A Node.js-based scanner can therefore approve different content from what another ZIP implementation extracts from the same archive. This vulnerability affects Node.js **26.x**.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-115248 A vulnerability was detected in subhajitkhan online-clinic-management-system up to… CWE-840
- CVE-2026-85030 A vulnerability has been found in HKUDS AI-Trader up to… CWE-840
- CVE-2026-82423 A vulnerability has been found in macrozheng mall up to 1.0.3. CWE-840
- CVE-2026-79406 A security vulnerability has been detected in macrozheng mall up to 1.0.3. CWE-840
- CVE-2026-75081 A vulnerability was detected in Webkul Bagisto up to 2.4.4. CWE-840
- CVE-2026-19993 A vulnerability has been found in Webkul Bagisto up to 2.4.4. CWE-840
- CVE-2026-13571 A flaw has been found in SourceCodester Simple Food Ordering System 1.0. CWE-840
- CVE-2026-41973 Permission control vulnerability in calls. Impact: Successful exploitation of this… CWE-840