Description
Archive::Tar versions before 3.08 for Perl extract hardlinks to attacker controlled paths outside the extraction directory. _make_special_file() passes the tar header's linkname to link() without validating it against absolute paths or .. segments, creating a hardlink that shares the victim file's inode. A subsequent write through the extracted name modifies the victim file, and the post-extraction chmod, chown, and utime block in _extract_file() (guarded only against symlinks via -l) applies the tar header's mode, owner, and timestamps to the shared inode during extraction alone.
Problem types
CWE-59 Improper Link Resolution Before File Access ('Link Following')
CWE-732 Incorrect Permission Assignment for Critical Resource
Product status
Any version before 3.08
Timeline
| 2026-04-12: | Issue reported. |
| 2026-05-10: | Version 3.06 released, disabling hardlink extraction by default. |
| 2026-05-22: | Version 3.08 released. |
References
github.com/...17c873492a05eddc0de18c1485e0b2cccd5a9158.patch
metacpan.org/release/BINGOS/Archive-Tar-3.08/changes
www.cve.org/CVERecord?id=CVE-2026-42496