GHSA-7cr3-h577-g38j

Suggest an improvement
Source
https://github.com/advisories/GHSA-7cr3-h577-g38j
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/07/GHSA-7cr3-h577-g38j/GHSA-7cr3-h577-g38j.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-7cr3-h577-g38j
Aliases
Published
2026-07-06T20:15:27Z
Modified
2026-07-06T20:41:03Z
Severity
  • 6.7 (Medium) CVSS_V3 - CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H CVSS Calculator
Summary
rm: --preserve-root bypassed via a symlink to / (string check instead of dev/inode)
Details

The --preserve-root check uses a path-string test (path.has_root() && path.parent().is_none()) rather than comparing device/inode. A symlink to / (e.g. /tmp/rootlink -> /) has a parent component, so it passes the check. GNU caches /'s dev/inode at startup and compares every traversed directory against it.

Impact: rm -rf --preserve-root on a path that resolves through a symlink to / bypasses protection and can delete system directories. Recommendation: compare each entered directory's dev/inode against cached /.

Remediation: Acknowledged by Canonical; fixed in commit 5e5968cd.


Reported by Zellic in the uutils coreutils Program Security Assessment (prepared for Canonical, Jan 20 2026), audited commit 3a07ffc5a9bd4c283e75afa548ba1f1957bad242. Finding 3.44. Credit: Zellic.

Database specific
{
    "cwe_ids":  [
        "CWE-59",
        "CWE-693"
    ],
    "github_reviewed":  true,
    "github_reviewed_at":  "2026-07-06T20:15:27Z",
    "nvd_published_at":  null,
    "severity":  "MODERATE"
}
References

Affected packages

crates.io / uu_rm

Package

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
0.7.0

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/07/GHSA-7cr3-h577-g38j/GHSA-7cr3-h577-g38j.json"