CVE-2026-115908
High · 7.4CVSS
7.4
EPSS
—
Published
Oct 26, 2026
CISA due date
—
Cloudanix analysis
A file-unzipping library can be tricked into writing files outside the folder you chose, letting an attacker replace or damage files on your computer.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Data Tampering
- Component
- Library
- Class
- Path Traversal
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Path traversal in ZipArchive::extract and ZipArchive::extract_unwrapped_root_dir caused by lexical prefix comparison on symlink targets instead of full resolution of intermediate links, allowing writes outside the intended extraction directory; Windows drive/UNC prefix stripping enables single-link escapes when SeCreateSymbolicLinkPrivilege is present.
Why it matters to the business
Attackers can create or overwrite files with the privileges of the extracting process, enabling arbitrary code execution, configuration tampering, or data destruction; the flaw is recent and unexploited in the wild but affects any application using the vulnerable library for untrusted archives.
How an attack unfolds
An attacker crafts a ZIP archive containing a chain of symbolic links whose lexical paths remain under the guessed extraction root while intermediate links resolve outside it; when a victim application extracts the archive the library follows the links and writes attacker-controlled content to arbitrary locations on disk.
How to fix it
Upgrade the zip crate to version 9.0.0 or later; rebuild and redeploy all dependent applications; until upgrade is possible, avoid extracting untrusted archives or run extraction under a restricted user context that lacks symlink creation privileges.
How to confirm the fix worked
Confirm the zip dependency version is 9.0.0 or newer in Cargo.lock; run integration tests that attempt symlink escapes into a monitored directory and verify writes are rejected; scan source for direct calls to the affected extract methods.
Typical attack path
- attacker prepares malicious ZIP with crafted symlink chain
- attacker delivers archive to target (download, attachment, repository)
- victim application calls ZipArchive::extract or extract_unwrapped_root_dir on the archive
- library performs lexical validation and follows unresolved symlinks
- attacker-controlled files are written outside the intended directory
How to detect it
Review application logs for extraction operations on untrusted archives; correlate file-creation events outside expected directories with archive processing; inspect process creation or file writes performed under the context of applications that depend on the zip crate.
What your security team should do
- Immediately inventory all Rust projects using the zip crate and schedule upgrade to 9.0.0
- Add automated dependency scanning to block future vulnerable versions
- Restrict symlink creation privileges for extraction processes on Windows
- Monitor public exploit development given the five-day publication window
The record
zip is a zip library for Rust that supports reading and writing simple ZIP files. From 7.2.0 until 9.0.0, ZipArchive::extract and ZipArchive::extract_unwrapped_root_dir use safe_prepare_path in src/read/zipfile.rs and simplified_components in src/path.rs to validate symbolic link targets with a lexical prefix comparison rather than resolving each intermediate link. An attacker who knows or can guess the absolute extraction destination can create a chain whose apparent target remains under the destination while an intermediate symlink resolves outside it, allowing attacker-controlled files to be created or overwritten with the extracting process's privileges. On Windows, discarded drive and UNC prefixes can permit a single-link escape when the process has SeCreateSymbolicLinkPrivilege, such as through administrator rights or Developer Mode. This regression is distinct from CVE-2025-29787. This issue is fixed in version 9.0.0.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-61725 sevenz-rust2 is a Rust-native 7z compressor and `decompress`or. CWE-22
- CVE-2026-62965 SABnzbd is an open source automated Usenet download tool. CWE-22
- CVE-2026-119342 Stirling-PDF is a locally hosted web application that facilitates various operations on… CWE-22
- CVE-2026-119328 Immich is a high-performance self-hosted photo and video management solution. CWE-22
- CVE-2026-116249 In server mode pgAdmin 4 resolves a server's password file, SSL certificate, key, CRL and… CWE-22
- CVE-2026-116240 In server mode pgAdmin 4 validates a path into the user's storage directory with… CWE-22
- CVE-2026-62331 praktor is a multi-agent Claude Code orchestrator with Telegram input and output, Docker… CWE-22
- CVE-2026-115604 Subscriber Arbitrary File Deletion in SureDash <= 1.12.3 versions. CWE-22