Vulnerability · CVE-2026-115906
zip: AES Entry HMAC Authentication Bypass on Premature EOF
Published Oct 26, 2026 · catalog updated Oct 31, 2026 · zip: AES Entry HMAC
Last checked Nov 8, 2026. A connected source was read within the last 7 days.
Check if you run it
No confirmed exploitation is on record for CVE-2026-115906. EPSS is 0.15%. Act only if a listed version of zip: AES Entry HMAC is installed.
Gaps on this record
- The stored product name is a package slug. The name on this page is taken from the title (zip: AES Entry HMAC).
- No vendor fix or required action is stored. Compare the linked advisory before you change production.
- Severity
- Medium6.5
- Known exploitation
- Not in CISA/VulnCheck KEV
- EPSS
- 0.15%
- Remediation
- Version ranges on file
- Affected products
- cargo zip · rust zip
### Summary An AES-encrypted (AE-x) entry's authentication code is verified only when the reader's byte counter lands exactly on zero. If the bounded entry reader reaches the archive's actual EOF before the attacker-controlled, header-declared , the counter remains positive, the HMAC is never read or compared, and the truncated, unauthenticated plaintext is returned as a clean end of stream. A zero-payload entry also returns before authentication. An attacker who does not know the password can modify an archive so chosen or modified plaintext is accepted with no error. ### Details [ ](https://github.com/zip-rs/zip2/blob/6f09b3064ec87c3a69ea9f3413f9f9638b4aa446/src/aes.rs#L246-L292): starts at ([ ](https://github.com/zip-rs/zip2/blob/6f09b3064ec87c3a69ea9f3413f9f9638b4aa446/src/aes.rs#L144-L145)), where comes straight from the attacker-controlled central directory. Nothing cross-checks the declared data span against the archive's structural boundaries: is just ([ ](https://github.com/zip-rs/zip2/blob/6f09b3064ec87c3a69ea9f3413f9f9638b4aa446/src/types.rs#L214-L223)), and passes the declared value into ([ ](https://github.com/zip-rs/zip2/blob/6f09b3064ec87c3a69ea9f3413f9f9638b4aa446/src/read/readers.rs#L219-L223)). When the entry's bounded reader reaches true EOF before the declared size, the inner reader returns , the subtraction takes away nothing, and the finalisation block — the only place the 10-byte HMAC-SHA1-80 tag is read and compared — never runs. If bytes such as the central directory follow the entry, they are consumed as payload until the limit is reached; the HMAC then usually fails. The bypass therefore requires true EOF at the premature end (as in the PoC) or the zero-payload case. The early return at the top of means an entry whose declared size leaves zero payload bytes is never authenticated either, even though its tag is present in the file. This defeats the guarantee the type documents: *"After the data has been read and decrypted an HMAC will be ch
Are you affected?
Enter the version you run. The result uses only the ranges stored on this record.
The check returns affected, not affected, or incomplete. It does not guess a version that is missing from the record.
- cargo zip>=0.6.0 <9.0.0
- rust zip>= 0.6.0, < 9.0.0
How to fix CVE-2026-115906
Upgrade
CVE-2026-115906 lists a fix boundary at 9.0.0. Compare the installed build with that boundary before you change production.
Version check
Affected < 9.0.0
Advisory
Open the cve_org record and follow its fix.
Official advisories
What to do
Three questions, each answered from this record only. Confirm the vendor advisory before you patch.
Should you patch?
No confirmed exploitation is on record for CVE-2026-115906. EPSS is 0.15%. Act only if a listed version of zip: AES Entry HMAC is installed.
Which versions are affected?
Compare what you have installed with >=0.6.0 <9.0.0, >= 0.6.0, < 9.0.0. Compare the installed version with the linked vendor advisory before you change production.
What should an analyst verify?
CWE-1284; CWE-354. EPSS 0.15%. There is no CISA KEV listing. No Exploit-DB or Metasploit reference is linked. Use the source links for the original advisory.
Code
The project this record applies to. Exploit listings stay in References.
Timeline
Detection, updates, and resolution for this record.
Oct 29, 2026 · GitHub Advisory Database
Detected
### Summary An AES-encrypted (AE-x) entry's authentication code is verified only when the reader's byte counter lands exactly on zero. If the bounded entry reader reaches the archive's actual EOF before the attacker-controlled, header-declared , the counter remains positive, the HMAC is never read or compared, and the truncated, unauthenticated plaintext is returned as a clean end of stream. A zer
Oct 29, 2026 · GitHub Advisory Database
Updated
### Summary An AES-encrypted (AE-x) entry's authentication code is verified only when the reader's byte counter lands exactly on zero. If the bounded entry reader reaches the archive's actual EOF before the attacker-controlled, header-declared , the counter remains positive, the HMAC is never read or compared, and the truncated, unauthenticated plaintext is returned as a clean end of stream. A zer
Oct 31, 2026 · NIST NVD
Updated
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
Sources
- CVE.orgVulnerability recordCVE-2026-115906
Official CVE identifier
cve.org - FIRST EPSSExploitation probabilityCVE-2026-115906
30-day exploitation probability 0.15%
first.org - GitHub Advisory DatabasePackage advisoryGHSA-8hxf-qr8p-62x4
zip: AES Entry HMAC Authentication Bypass on Premature EOF
github.com - GitLab Advisory DatabasePackage advisoryCVE-2026-115906
An AES-encrypted (AE-x) entry's authentication code is verified only when the reader's byte counter lands exactly on zero. If the bounded entry reader reaches the archive's actual EOF before the attacker-controlled, header-declared compressed_size, the counter remains positive, the HMAC is never read or compared, and the truncated, unauthenticated plaintext is returned as a clean end of stream. A
advisories.gitlab.com - GitLab Advisory DatabasePackage advisorycargo/zip/CVE-2026-115906.yml
An AES-encrypted (AE-x) entry's authentication code is verified only + when the reader's byte counter lands exactly on zero. If the bounded entry reader + reaches the archive's actual EOF before the attacker-controlled, header-declared + , the counter remains positive, the HMAC is never read or compared, + and the truncated, unauthenticated plaintext is returned as a clean end of stream. + A zero-
gitlab.com - NIST NVDVulnerability recordCVE-2026-115906
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
nvd.nist.gov
References
Freshness
Last verified in this catalog Nov 8, 2026. Significant claims (KEV, EPSS, CVSS, affected ranges) come from the source rows above — open the original publisher for the authoritative advisory.
- FIRST EPSSNov 8, 2026
- GitLab Advisory DatabaseNov 1, 2026
- NIST NVDOct 31, 2026
- CVE.orgOct 30, 2026
- GitLab Advisory DatabaseOct 30, 2026
- GitHub Advisory DatabaseOct 30, 2026