CVE-2026-115906
Medium · 6.5CVSS
6.5
EPSS
—
Published
Oct 26, 2026
CISA due date
—
Cloudanix analysis
A bug in a Rust library used to read encrypted ZIP files can let attackers alter protected contents without being detected, potentially allowing bad data to slip through in affected programs.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Low
- Impact
- Data Tampering
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- High
What it actually does
The AES entry reader in src/aes.rs skips HMAC verification when the attacker-controlled data counter reaches zero or when the bounded reader hits EOF with data_remaining positive or an empty encrypted payload, allowing by_index_decrypt, by_name_decrypt, by_path_decrypt, and password-enabled by_index_with_options to return tampered plaintext without an authentication error.
Why it matters to the business
Applications that rely on encrypted ZIP integrity may silently accept modified content, leading to corrupted data processing, bypassed content validation, or downstream integrity failures with moderate operational risk given the five-day-old disclosure and absence from known exploited lists.
How an attack unfolds
An attacker crafts a ZIP archive containing an AES-encrypted entry whose payload is altered or truncated so that the reader terminates before comparing the authentication tag; the archive is then supplied to a vulnerable application via network or file input, causing the decrypt functions to accept the modified plaintext as authentic.
How to fix it
Upgrade the zip crate to version 9.0.0 or later; rebuild and redeploy all dependent binaries after verifying the new version resolves the HMAC check.
How to confirm the fix worked
Confirm the installed zip crate version is 9.0.0 or newer, then execute unit tests that feed crafted AES entries with altered payloads and assert that an authentication error is raised.
Typical attack path
- Generate a ZIP with a modified AES-encrypted entry that avoids HMAC comparison
- Deliver the archive to a target application using by_index_decrypt or equivalent
- Trigger decryption through normal library usage
- Receive tampered plaintext without authentication failure
How to detect it
Search application dependency manifests and lockfiles for zip versions between 0.6.0 and 9.0.0; examine runtime logs or telemetry for decryption operations on AES-encrypted entries that complete without errors on archives known to be malformed.
What your security team should do
- Immediately inventory all Rust projects using the zip crate and schedule upgrade to 9.0.0
- Prioritize applications handling password-protected or AES-encrypted archives
- Add dependency scanning to CI pipelines to block future vulnerable versions
- Review logging around ZIP decryption calls for unexpected success on malformed inputs
The record
zip is a zip library for Rust that supports reading and writing simple ZIP files. From 0.6.0 until 9.0.0, the AES entry reader in src/aes.rs verifies its HMAC only when the attacker-controlled data counter reaches zero. If the underlying bounded reader reaches the real end of the archive while data_remaining is still positive, or if an encrypted entry has no payload, the reader can return a clean end of stream without reading and comparing the authentication tag. Applications using by_index_decrypt, by_name_decrypt, by_path_decrypt, or password-enabled by_index_with_options can therefore accept modified plaintext without an authentication error. This issue is fixed in version 9.0.0.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-119186 Forge (also called node-forge) is a native implementation of Transport Layer Security in… CWE-354
- CVE-2026-118782 Forge (also called node-forge) is a native implementation of Transport Layer Security in… CWE-354
- CVE-2026-118776 Forge (also called node-forge) is a native implementation of Transport Layer Security in… CWE-354
- CVE-2026-90720 Dell PowerProtect Data Domain, Feature Release versions 7.7.1.0 through 8.8, LTS2024… CWE-354
- CVE-2026-116608 A security vulnerability has been detected in DAMO Academy VideoLLaMA2 up to 1.1. CWE-354
- CVE-2026-65625 The pure-Erlang AES-GCM fallback in jose_jwa_aes derives the number of verified… CWE-354
- CVE-2026-89320 `HmacShaCryptor.Hash` never hashed its input. CWE-354
- CVE-2026-35501 When NLnet Labs Unbound 1.0.1 up to and including version 1.26.1 is configured with both… CWE-354