Description
gix-worktree-state before 0.33.0 (part of gitoxide) allows writing files outside the worktree on Windows. gix_worktree_state::checkout() follows an existing terminal symlink during non-exclusive (incremental) materialization (destination_is_initially_empty: false) when core.symlinks is true. If a symlink entry (mode 120000) is first checked out at a path P pointing outside the worktree, a subsequent incremental checkout of a regular-file entry (mode 100644) at the same path follows the existing reparse point and writes the blob content through the link, overwriting files outside the worktree.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| GitoxideLabs | gitoxide | < 0.33.0, < 0.55.0, < 0.49.0, < 0.86.0 | 0.33.0 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 26.10 | rust-gix +3 | No fix yet | — |
| Ubuntu 26.04 LTS | rust-gix +3 | No fix yet | — |
| Ubuntu 24.04 LTS | rust-gix-features | No fix yet | — |
References
- GitHub Security Advisory (GHSA-pmm9-4h7q-24c8) vendor-advisory
- VulnCheck Advisory: gitoxide before 0.33.0 Path Traversal via symlink following third-party-advisory