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):
src/dec.rs:153), so the archive can create a symlink that escapes the
destination directory.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)./ (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.
{
"license": "CC0-1.0"
}