Technical impact
The flaw lies in the AES entry reader’s HMAC verification logic. The library defers authentication until the internal data counter reaches zero; if the underlying reader reaches the real end of the archive before this occurs, the function may return a clean end‑of‑stream without comparing the authentication tag. The result is that an attacker can modify the encrypted payload, or supply an entry with no payload, and the library will accept it as valid. This bypass of HMAC checks constitutes an integrity failure, allowing undetected tampering of extracted files.
Affected Systems
The vulnerability affects the Rust zip‑rs/zip2 library, versions 0.6.0 through 9.0.0. Any use of the AES decryption APIs—by_index_decrypt, by_name_decrypt, by_path_decrypt, or password‑enabled by_index_with_options—exposes applications that import and use zip‑rs to ZIP archives containing AES‑encrypted entries.
Risk and Exploitability
The CVSS score of 6.5 indicates moderate severity. The EPSS score is not available, and the vulnerability is not listed in CISA KEV, meaning no widespread exploitation has been reported. The fault can be triggered when an application extracts an AES‑encrypted entry from a crafted ZIP archive. A local or remote attacker who can supply such an archive to an application that uses zip‑rs to read the file may modify the decrypted contents without triggering an authentication error. The risk is confined to the integrity of files extracted by the vulnerable library.
Github GHSA