Cloudanix VulnDB

CVE-2026-115906

Medium · 6.5

CVSS

6.5

EPSS

—

Published

Oct 26, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

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

  1. Generate a ZIP with a modified AES-encrypted entry that avoids HMAC comparison
  2. Deliver the archive to a target application using by_index_decrypt or equivalent
  3. Trigger decryption through normal library usage
  4. 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