Skip to main content
← All vulnerabilities
RUSTSEC-2026-0425

`nix-nar`: `Decoder::unpack` writes archive entries outside the destination directory (path traversal)

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 0.6.0
None on Exploit-DB, Metasploit or GitHub

Summary

The `nix-nar` Rust crate, which parses and unpacks Nix NAR archives, is affected. A specially crafted archive can make it create files outside the intended destination directory, which could let an attacker plant files in arbitrary locations writable by the user running the process and potentially lead to code execution.

Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.

Read the original description

`Decoder::unpack` does not safely contain the paths it extracts, so a malicious NAR archive can create files outside the destination directory — a path traversal (CWE-22). In `src/dec.rs` (`Decoder::unpack`): • A symlink entry's target is written without checking where it points (`src/dec.rs:153`), so the archive can create a symlink that escapes the destination directory. • The out-of-destination containment check compares path strings only and does not account for symlinks created earlier in the same unpack (`src/dec.rs:176-181`), before reaching the write sinks (`std::fs::create_dir` at `src/dec.rs:201` and `OpenOptions::open` at `src/dec.rs:218`). • The parser also accepts entry names containing `/` (`src/parser.rs:138-147`). Combined, a malicious archive can include a symlink `a` pointing at an external directory and then an entry named `a/b`, causing `b` to be written to `<external>/b`, outside the destination. This can create new files anywhere the process can write (it cannot overwrite existing files), which is escalatable to code execution by planting files in attacker-chosen locations.

Timeline

  1. First seen by cve.now
  2. Advisory published

Affected versions

  • nix-narcrates.io

    From 0.0.0-0 · fixed in 0.6.0

References 3

crates.io

rustsec.org

codeberg.org