GHSA-4v9h-p7m9-rh26 json
zip: `ZipArchive::extract` creates symbolic links whose attacker-controlled targets are outside the destination directory
published last mo. modified 26d ago also RUSTSEC-2026-0368
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
In `zip` 9.0.0-pre2, `ZipArchive::extract` creates a symbolic link from an archive entry after validating only the output entry path. The link target bytes are passed directly to the platform symlink API, so a malicious archive can create an entry inside the destination that resolves to an attacker-chosen path outside it. This behavior was verified on macOS and Linux. On either platform, a subsequent application read or write through that extracted entry accesses the external target with the extracting process's permissions.
For further details see: https://github.com/zip-rs/zip2/security/advisories/GHSA-4v9h-p7m9-rh26
Patch / fix
- crates.io zip 9.0.0
Is GHSA-4v9h-p7m9-rh26 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| crates.io | zip | >=0.0.0-0, <9.0.0 |
9.0.0 |
References
-
crates.io
/crates/zip
package
-
rustsec.org
/advisories/RUSTSEC-2026-0368.html
advisory
Sources
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.