{"id":"CVE-2026-35349","aliases":["DEBIAN-CVE-2026-35349","EUVD-2026-24981","GHSA-7cr3-h577-g38j","GHSA-v762-x3cf-5mfg","UBUNTU-CVE-2026-35349"],"status":"published","title":"uutils coreutils Path-Based Safety Bypass with --preserve-root","description":"A vulnerability in the rm utility of uutils coreutils allows a bypass of the --preserve-root protection. The implementation uses a path-string check rather than comparing device and inode numbers to identify the root directory. An attacker or accidental user can bypass this safeguard by using a symbolic link that resolves to the root directory (e.g., /tmp/rootlink -\u003e /), potentially leading to the unintended recursive deletion of the entire root filesystem.","severity":{"version":"3.1","score":6.7,"vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00185,"percentile":0.08169,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-59","CWE-693"],"published":"2026-04-22T16:07:59Z","modified":"2026-10-28T02:30:30Z","fixes":[{"ecosystem":"crates.io","package":"uu_rm","fixed_in":["0.7.0"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:14","package":"rust-coreutils","fixed_in":["0.7.0-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"uu_rm","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.7.0"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"rust-coreutils","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.0.17-2","0.0.17-3","0.0.17-4","0.0.17-5","0.0.17-6","0.0.19-1","0.0.19-2","0.0.19-3","0.0.20-1","0.0.21-1","0.0.22-1","0.0.23-1","0.0.23-2","0.0.23-3","0.0.24-1","0.0.24-2","0.0.26-1","0.0.26-2","0.0.26-3","0.0.26-4","0.0.26-5","0.0.27-1","0.0.27-2","0.0.27-3","0.0.30-1","0.0.30-2","0.0.30-3","0.0.30-3~exp1","0.0.30-4","0.10.0-1","0.11.0-1","0.11.0-2","0.12.0-1","0.6.0-1","0.7.0-1","0.8.0-1","0.8.0-2","0.8.0-3","0.8.0-4","0.8.0-5","0.8.0-6","0.9.0-1","0.9.0-2","0.9.0-3"]},{"source":"osv","ecosystem":"Debian:13","package":"rust-coreutils","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.0.30-2","0.0.30-3","0.0.30-3~exp1","0.0.30-4","0.10.0-1","0.11.0-1","0.11.0-2","0.12.0-1","0.6.0-1","0.7.0-1","0.8.0-1","0.8.0-2","0.8.0-3","0.8.0-4","0.8.0-5","0.8.0-6","0.9.0-1","0.9.0-2","0.9.0-3"]},{"source":"osv","ecosystem":"Debian:14","package":"rust-coreutils","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.7.0-1"}]}],"versions":["0.0.30-2","0.0.30-3","0.0.30-3~exp1","0.0.30-4","0.6.0-1"]},{"source":"osv","ecosystem":"crates.io","package":"uu_rm","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.7.0"}]}]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"rust-coreutils","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.0.20-1","0.0.22-1","0.0.23-1","0.0.23-2","0.0.23-3","0.0.24-1","0.0.24-2"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"rust-coreutils","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.0.30-1","0.0.30-2","0.0.30-2ubuntu2","0.1.0-0ubuntu1","0.1.0+git20250711.2ba3a33-0ubuntu1","0.1.0+git20250711.2ba3a33-0ubuntu2","0.1.0+git20250711.2ba3a33-0ubuntu3","0.1.0+git20250711.2ba3a33-0ubuntu4","0.1.0+git20250801.cf79675-0ubuntu1","0.1.0+git20250813.4af2a84-0ubuntu2","0.1.0+git20250813.4af2a84-0ubuntu4","0.1.0+git20250813.4af2a84-0ubuntu6","0.1.0+git20250813.4af2a84-0ubuntu7","0.2.2-0ubuntu1","0.2.2-0ubuntu2","0.2.2-0ubuntu2.1"]}],"products":[{"vendor":"uutils","product":"coreutils"}],"references":[{"url":"https://github.com/uutils/coreutils/pull/9706","tags":["issue-tracking","patch","Issue Tracking","Patch","fix","web","report"]},{"url":"https://github.com/uutils/coreutils/releases/tag/0.7.0","tags":["vendor-advisory","Release Notes","advisory","web"]},{"url":"https://github.com/uutils/coreutils/security/advisories/GHSA-7cr3-h577-g38j","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-35349","tags":["advisory"]},{"url":"https://github.com/uutils/coreutils/commit/5e5968cdbc6618acd6c2402a8a98b503f278835e","tags":["web"]},{"url":"https://github.com/advisories/GHSA-7cr3-h577-g38j"},{"url":"https://github.com/advisories/GHSA-v762-x3cf-5mfg"},{"url":"https://github.com/uutils","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/35xxx/CVE-2026-35349.json","tags":["advisory"]},{"url":"https://github.com/uutils/coreutils","tags":["package"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-35349","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-35349","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-35349","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-35349","title":"uutils coreutils Path-Based Safety Bypass with --preserve-root","description":"A vulnerability in the rm utility of uutils coreutils allows a bypass of the --preserve-root protection. The implementation uses a path-string check rather than comparing device and inode numbers to identify the root directory. An attacker or accidental user can bypass this safeguard by using a symbolic link that resolves to the root directory (e.g., /tmp/rootlink -\u003e /), potentially leading to the unintended recursive deletion of the entire root filesystem.","status":"published","published":"2026-04-22T16:07:59.808Z","modified":"2026-04-22T18:05:13.169Z","cvss":[{"version":"3.1","score":6.7,"vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"medium","assessor":"cna"}],"cwes":["CWE-59"],"updated_at":"2026-11-02T14:20:05.15083Z"}],"euvd":[{"id":"EUVD-2026-24981","description":"A vulnerability in the rm utility of uutils coreutils allows a bypass of the --preserve-root protection. The implementation uses a path-string check rather than comparing device and inode numbers to identify the root directory. An attacker or accidental user can bypass this safeguard by using a symbolic link that resolves to the root directory (e.g., /tmp/rootlink -\u003e /), potentially leading to the unintended recursive deletion of the entire root filesystem.","status":"published","published":"2026-04-22T16:07:59Z","modified":"2026-04-22T18:05:13Z","cvss":[{"version":"3.1","score":6.7,"vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"medium"}],"updated_at":"2026-11-02T19:24:19.81608Z"}],"ghsa":[{"id":"GHSA-7cr3-h577-g38j","title":"rm: --preserve-root bypassed via a symlink to / (string check instead of dev/inode)","description":"The `--preserve-root` check uses a path-string test (`path.has_root() \u0026\u0026 path.parent().is_none()`) rather than comparing device/inode. A symlink to `/` (e.g. `/tmp/rootlink -\u003e /`) has a parent component, so it passes the check. GNU caches `/`'s dev/inode at startup and compares every traversed directory against it.\n\n**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 `/`.\n\n**Remediation:** Acknowledged by Canonical; fixed in commit 5e5968cd.\n\n---\n_Reported by Zellic in the *uutils coreutils Program Security Assessment* (prepared for Canonical, Jan 20 2026), audited commit `3a07ffc5a9bd4c283e75afa548ba1f1957bad242`. Finding 3.44. Credit: Zellic._","status":"published","published":"2026-07-06T20:15:27Z","modified":"2026-07-06T20:15:28Z","cvss":[{"version":"3.1","score":6.7,"vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"medium"}],"cwes":["CWE-59","CWE-693"],"updated_at":"2026-11-02T14:40:39.314643Z"},{"id":"GHSA-v762-x3cf-5mfg","title":"Duplicate Advisory: uutils coreutils has a Link Following Issue Via rm Utility","description":"### Duplicate Advisory\nThis advisory has been withdrawn because it is a duplicate of GHSA-7cr3-h577-g38j. This link is maintained to preserve external references.\n\n### Original Description\nA vulnerability in the rm utility of uutils coreutils allows a bypass of the --preserve-root protection. The implementation uses a path-string check rather than comparing device and inode numbers to identify the root directory. An attacker or accidental user can bypass this safeguard by using a symbolic link that resolves to the root directory (e.g., /tmp/rootlink -\u003e /), potentially leading to the unintended recursive deletion of the entire root filesystem.","status":"withdrawn","published":"2026-04-22T18:31:45Z","modified":"2026-07-06T20:15:21Z","cvss":[{"version":"3.1","score":6.7,"vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"medium"}],"cwes":["CWE-59"],"updated_at":"2026-11-02T14:40:39.314643Z"}],"nvd":[{"id":"CVE-2026-35349","description":"A vulnerability in the rm utility of uutils coreutils allows a bypass of the --preserve-root protection. The implementation uses a path-string check rather than comparing device and inode numbers to identify the root directory. An attacker or accidental user can bypass this safeguard by using a symbolic link that resolves to the root directory (e.g., /tmp/rootlink -\u003e /), potentially leading to the unintended recursive deletion of the entire root filesystem.","status":"published","published":"2026-04-22T17:16:37.19Z","modified":"2026-10-26T21:10:00.17Z","cvss":[{"version":"3.1","score":6.7,"vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"medium","assessor":"secondary"},{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"high","assessor":"primary"}],"cwes":["CWE-59"],"updated_at":"2026-11-02T14:12:15.867234Z"}],"osv":[{"id":"CVE-2026-35349","title":"uutils coreutils Path-Based Safety Bypass with --preserve-root","description":"A vulnerability in the rm utility of uutils coreutils allows a bypass of the --preserve-root protection. The implementation uses a path-string check rather than comparing device and inode numbers to identify the root directory. An attacker or accidental user can bypass this safeguard by using a symbolic link that resolves to the root directory (e.g., /tmp/rootlink -\u003e /), potentially leading to the unintended recursive deletion of the entire root filesystem.","status":"published","published":"2026-04-22T16:07:59.808Z","modified":"2026-10-28T02:30:30.425528094Z","cvss":[{"version":"3.1","score":6.7,"vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"medium"}],"cwes":["CWE-59"],"updated_at":"2026-11-02T15:45:02.673625Z"},{"id":"DEBIAN-CVE-2026-35349","description":"A vulnerability in the rm utility of uutils coreutils allows a bypass of the --preserve-root protection. The implementation uses a path-string check rather than comparing device and inode numbers to identify the root directory. An attacker or accidental user can bypass this safeguard by using a symbolic link that resolves to the root directory (e.g., /tmp/rootlink -\u003e /), potentially leading to the unintended recursive deletion of the entire root filesystem.","status":"published","published":"2026-04-22T17:16:37.19Z","modified":"2026-10-27T09:47:36.719047359Z","cvss":[{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:45:54.587575Z"},{"id":"GHSA-7cr3-h577-g38j","title":"rm: --preserve-root bypassed via a symlink to / (string check instead of dev/inode)","description":"The `--preserve-root` check uses a path-string test (`path.has_root() \u0026\u0026 path.parent().is_none()`) rather than comparing device/inode. A symlink to `/` (e.g. `/tmp/rootlink -\u003e /`) has a parent component, so it passes the check. GNU caches `/`'s dev/inode at startup and compares every traversed directory against it.\n\n**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 `/`.\n\n**Remediation:** Acknowledged by Canonical; fixed in commit 5e5968cd.\n\n---\n_Reported by Zellic in the *uutils coreutils Program Security Assessment* (prepared for Canonical, Jan 20 2026), audited commit `3a07ffc5a9bd4c283e75afa548ba1f1957bad242`. Finding 3.44. Credit: Zellic._","status":"published","published":"2026-07-06T20:15:27Z","modified":"2026-07-06T20:41:03.620763Z","cvss":[{"version":"3.1","score":6.7,"vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"medium"}],"cwes":["CWE-59","CWE-693"],"updated_at":"2026-11-02T15:46:41.002603Z"},{"id":"GHSA-v762-x3cf-5mfg","title":"Duplicate Advisory: uutils coreutils has a Link Following Issue Via rm Utility","description":"### Duplicate Advisory\nThis advisory has been withdrawn because it is a duplicate of GHSA-7cr3-h577-g38j. This link is maintained to preserve external references.\n\n### Original Description\nA vulnerability in the rm utility of uutils coreutils allows a bypass of the --preserve-root protection. The implementation uses a path-string check rather than comparing device and inode numbers to identify the root directory. An attacker or accidental user can bypass this safeguard by using a symbolic link that resolves to the root directory (e.g., /tmp/rootlink -\u003e /), potentially leading to the unintended recursive deletion of the entire root filesystem.","status":"withdrawn","published":"2026-04-22T18:31:45Z","modified":"2026-09-10T03:51:03.209755081Z","cvss":[{"version":"3.1","score":6.7,"vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"medium"}],"cwes":["CWE-59"],"updated_at":"2026-11-02T15:46:56.981655Z"},{"id":"UBUNTU-CVE-2026-35349","description":"A vulnerability in the rm utility of uutils coreutils allows a bypass of the --preserve-root protection. The implementation uses a path-string check rather than comparing device and inode numbers to identify the root directory. An attacker or accidental user can bypass this safeguard by using a symbolic link that resolves to the root directory (e.g., /tmp/rootlink -\u003e /), potentially leading to the unintended recursive deletion of the entire root filesystem.","status":"published","published":"2026-04-22T17:16:00Z","modified":"2026-05-14T14:41:21.241919Z","cvss":[{"version":"3.1","score":6.7,"vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"medium"},{"version":"3.1","score":7.7,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T16:56:16.686388Z"}]}}
