CVE Vulnerabilities

CVE-2026-33056

UNIX Symbolic Link (Symlink) Following

Published: Mar 20, 2026 | Modified: Mar 24, 2026
CVSS 3.x
6.5
MEDIUM
Source:
NVD
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
CVSS 2.x
RedHat/V2
RedHat/V3
4.4 MODERATE
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N
Ubuntu
MEDIUM
root.io logo minimus.io logo echo.ai logo

tar-rs is a tar archive reading/writing library for Rust. In versions 0.4.44 and below, when unpacking a tar archive, the tar crates unpack_dir function uses fs::metadata() to check whether a path that already exists is a directory. Because fs::metadata() follows symbolic links, a crafted tarball containing a symlink entry followed by a directory entry with the same name causes the crate to treat the symlink target as a valid existing directory — and subsequently apply chmod to it. This allows an attacker to modify the permissions of arbitrary directories outside the extraction root. This issue has been fixed in version 0.4.45.

Weakness

The product, when opening a file or directory, does not sufficiently account for when the file is a symbolic link that resolves to a target outside of the intended control sphere. This could allow an attacker to cause the product to operate on unauthorized files.

Affected Software

NameVendorStart VersionEnd Version
TarTar_project*0.4.45 (excluding)
CargoUbuntuesm-apps/xenial*
Rust-cargo-cUbuntuquesting*
Rust-tarUbuntuesm-apps/jammy*
Rust-tarUbuntuesm-apps/noble*
Rust-tarUbuntujammy*
Rust-tarUbuntunoble*
Rust-tarUbuntuquesting*
Rust-tarUbuntuupstream*
RustcUbuntuesm-apps/xenial*
RustcUbuntujammy*
RustcUbuntunoble*
Rustc-1.62Ubuntuesm-apps/jammy*
Rustc-1.62Ubuntujammy*
Rustc-1.74Ubuntuesm-apps/noble*
Rustc-1.74Ubuntunoble*
Rustc-1.76Ubuntuesm-apps/jammy*
Rustc-1.76Ubuntuesm-apps/noble*
Rustc-1.76Ubuntujammy*
Rustc-1.76Ubuntunoble*
Rustc-1.77Ubuntuesm-apps/jammy*
Rustc-1.77Ubuntuesm-apps/noble*
Rustc-1.77Ubuntujammy*
Rustc-1.77Ubuntunoble*
Rustc-1.78Ubuntuesm-apps/jammy*
Rustc-1.78Ubuntuesm-apps/noble*
Rustc-1.78Ubuntujammy*
Rustc-1.78Ubuntunoble*
Rustc-1.79Ubuntuesm-apps/jammy*
Rustc-1.79Ubuntuesm-apps/noble*
Rustc-1.79Ubuntujammy*
Rustc-1.79Ubuntunoble*
Rustc-1.80Ubuntuesm-apps/jammy*
Rustc-1.80Ubuntuesm-apps/noble*
Rustc-1.80Ubuntujammy*
Rustc-1.80Ubuntunoble*
Rustc-1.81Ubuntuesm-apps/jammy*
Rustc-1.81Ubuntuesm-apps/noble*
Rustc-1.81Ubuntujammy*
Rustc-1.81Ubuntunoble*
Rustc-1.82Ubuntuesm-apps/jammy*
Rustc-1.82Ubuntuesm-apps/noble*
Rustc-1.82Ubuntujammy*
Rustc-1.82Ubuntunoble*
Rustc-1.83Ubuntujammy*
Rustc-1.83Ubuntunoble*
Rustc-1.84Ubuntujammy*
Rustc-1.84Ubuntunoble*
Rustc-1.85Ubuntujammy*
Rustc-1.85Ubuntunoble*
Rustc-1.85Ubuntuquesting*
Rustc-1.88Ubuntuquesting*
Rustc-1.89Ubuntujammy*
Rustc-1.89Ubuntunoble*
Rustc-1.91Ubuntujammy*
Rustc-1.91Ubuntunoble*

Potential Mitigations

  • Follow the principle of least privilege when assigning access rights to entities in a software system.
  • Denying access to a file can prevent an attacker from replacing that file with a link to a sensitive file. Ensure good compartmentalization in the system to provide protected areas that can be trusted.

References