Vulnerability advisory

CVE-2026-115908

zip: Arbitrary file write outside the extraction directory, because ZipArchive::extract validates symlink targets lexically. (The defense against CVE-2025-29787 was broken in v7.2.0)

Published Updated OSV record ↗

Also known as GHSA-hjqx-j4rw-g7xv

Severity
  • CVSS 3.xCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H

Affected versions

Repository

Affected commitsFixed by commit
GIT github.com/zip-rs/zip2 ↗
46dc29cda6749736ddb1ec502aff06a65ffe54f8 to before 2b1c4244a6f42906c8b3f21a358bf2321d0baaef2b1c4244a6f42906c8b3f21a358bf2321d0baaef
Not specified09c030eab56e8db8fb3c1c33f554407b30bad8fa
Also listed as affected (17)
  • v7.4.0
  • v8.6.0
  • v9.0.0-pre3
  • v9.0.0-pre2
  • v9.0.0-pre1
  • v8.5.1
  • v8.5.0
  • v8.4.0
  • v8.3.1
  • v8.3.0
  • v8.2.0.bak
  • v8.2.0
  • v8.1.0
  • v8.0.0
  • v7.3.0
  • v7.3.0-pre1
  • v7.2.0

Description

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.

References

  • Codex
  • Claude Code
  • VS Code
  • GitHub Copilot
  • Cursor
  • Cline
  • Windsurf
  • Google Anti-gravity
  • OpenCode
  • Pi
  • Gemini CLI
  • Hermes Agent
  • Zed
  • Junie
  • Qwen Code
  • Kiro
  • Kilo Code
  • Factory Droid

Set up GitHits for your agents

Run this command:

<> bash
npx githits@latest init

What happens next:

  1. Opens your browser to authorize GitHits
  2. Asks whether to set up GitHits at the user or project level
  3. Detects your supported AI coding tools
  4. Lets you choose which tools to configure
  5. Configures the selected tools