{"id":"CVE-2026-35346","aliases":["DEBIAN-CVE-2026-35346","EUVD-2026-24978","GHSA-6gcw-w7cp-94g9","GHSA-hwhf-8p2f-45wr","UBUNTU-CVE-2026-35346"],"status":"published","title":"uutils coreutils comm Silent Data Corruption via Lossy UTF-8 Normalization","description":"The comm utility in uutils coreutils silently corrupts data by performing lossy UTF-8 conversion on all output lines. The implementation uses String::from_utf8_lossy(), which replaces invalid UTF-8 byte sequences with the Unicode replacement character (U+FFFD). This behavior differs from GNU comm, which processes raw bytes and preserves the original input. This results in corrupted output when the utility is used to compare binary files or files using non-UTF-8 legacy encodings.","severity":{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","level":"low","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00176,"percentile":0.07146,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-116","CWE-176"],"published":"2026-04-22T16:07:51Z","modified":"2026-10-28T02:30:33Z","fixes":[{"ecosystem":"crates.io","package":"uu_comm","fixed_in":["0.6.0"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:14","package":"rust-coreutils","fixed_in":["0.6.0-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"uu_comm","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.6.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.6.0-1"}]}],"versions":["0.0.30-2","0.0.30-3","0.0.30-3~exp1","0.0.30-4"]},{"source":"osv","ecosystem":"crates.io","package":"uu_comm","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.6.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/10206","tags":["patch","Issue Tracking","Patch","fix","web","report"]},{"url":"https://github.com/uutils/coreutils/issues/10192","tags":["issue-tracking","exploit","Exploit","Issue Tracking","Vendor Advisory","report","web"]},{"url":"https://github.com/uutils/coreutils/releases/tag/0.6.0","tags":["vendor-advisory","Release Notes","advisory","web"]},{"url":"https://github.com/uutils/coreutils/security/advisories/GHSA-6gcw-w7cp-94g9","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-35346","tags":["advisory"]},{"url":"https://github.com/uutils/coreutils/commit/b9372e509ea9b278fe13763237067a261bb8c946","tags":["web"]},{"url":"https://github.com/advisories/GHSA-6gcw-w7cp-94g9"},{"url":"https://github.com/advisories/GHSA-hwhf-8p2f-45wr"},{"url":"https://github.com/uutils","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/35xxx/CVE-2026-35346.json","tags":["advisory"]},{"url":"https://github.com/uutils/coreutils","tags":["package"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-35346","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-35346","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-35346","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-35346","title":"uutils coreutils comm Silent Data Corruption via Lossy UTF-8 Normalization","description":"The comm utility in uutils coreutils silently corrupts data by performing lossy UTF-8 conversion on all output lines. The implementation uses String::from_utf8_lossy(), which replaces invalid UTF-8 byte sequences with the Unicode replacement character (U+FFFD). This behavior differs from GNU comm, which processes raw bytes and preserves the original input. This results in corrupted output when the utility is used to compare binary files or files using non-UTF-8 legacy encodings.","status":"published","published":"2026-04-22T16:07:51.755Z","modified":"2026-04-22T18:12:21.735Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","level":"low","assessor":"cna"}],"cwes":["CWE-176"],"updated_at":"2026-11-02T14:20:05.505362Z"}],"euvd":[{"id":"EUVD-2026-24978","description":"The comm utility in uutils coreutils silently corrupts data by performing lossy UTF-8 conversion on all output lines. The implementation uses String::from_utf8_lossy(), which replaces invalid UTF-8 byte sequences with the Unicode replacement character (U+FFFD). This behavior differs from GNU comm, which processes raw bytes and preserves the original input. This results in corrupted output when the utility is used to compare binary files or files using non-UTF-8 legacy encodings.","status":"published","published":"2026-04-22T16:07:51Z","modified":"2026-04-22T18:12:21Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","level":"low"}],"updated_at":"2026-11-02T19:24:19.81608Z"}],"ghsa":[{"id":"GHSA-6gcw-w7cp-94g9","title":"comm: lossy UTF-8 conversion silently corrupts non-UTF-8 output","description":"The comm utility in uutils coreutils silently corrupts data by performing lossy UTF-8 conversion on all output lines. The implementation uses String::from_utf8_lossy(), which replaces invalid UTF-8 byte sequences with the Unicode replacement character (U+FFFD). This behavior differs from GNU comm, which processes raw bytes and preserves the original input. This results in corrupted output when the utility is used to compare binary files or files using non-UTF-8 legacy encodings.\n\n---\n_Zellic finding 3.34. Reported in the Zellic *uutils coreutils Program Security Assessment* (for Canonical, Jan 2026), audited commit `3a07ffc5a9bd4c283e75afa548ba1f1957bad242`._","status":"published","published":"2026-07-06T19:51:22Z","modified":"2026-07-06T19:51:23Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","level":"low"}],"cwes":["CWE-116","CWE-176"],"updated_at":"2026-11-02T14:40:39.314643Z"},{"id":"GHSA-hwhf-8p2f-45wr","title":"Duplicate Advisory: coreutils' comm utility silently corrupts data by performing lossy UTF-8 conversion on all output lines","description":"### Duplicate Advisory\nThis advisory has been withdrawn because it is a duplicate of GHSA-6gcw-w7cp-94g9. This link is maintained to preserve external references.\n\n### Original Description\nThe comm utility in uutils coreutils silently corrupts data by performing lossy UTF-8 conversion on all output lines. The implementation uses String::from_utf8_lossy(), which replaces invalid UTF-8 byte sequences with the Unicode replacement character (U+FFFD). This behavior differs from GNU comm, which processes raw bytes and preserves the original input. This results in corrupted output when the utility is used to compare binary files or files using non-UTF-8 legacy encodings.","status":"withdrawn","published":"2026-04-22T18:31:45Z","modified":"2026-07-06T19:51:04Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","level":"low"}],"cwes":["CWE-176"],"updated_at":"2026-11-02T14:40:39.314643Z"}],"nvd":[{"id":"CVE-2026-35346","description":"The comm utility in uutils coreutils silently corrupts data by performing lossy UTF-8 conversion on all output lines. The implementation uses String::from_utf8_lossy(), which replaces invalid UTF-8 byte sequences with the Unicode replacement character (U+FFFD). This behavior differs from GNU comm, which processes raw bytes and preserves the original input. This results in corrupted output when the utility is used to compare binary files or files using non-UTF-8 legacy encodings.","status":"published","published":"2026-04-22T17:16:36.76Z","modified":"2026-10-26T22:10:00.163Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","level":"low","assessor":"secondary"}],"cwes":["CWE-176"],"updated_at":"2026-11-02T14:12:15.867234Z"}],"osv":[{"id":"CVE-2026-35346","title":"uutils coreutils comm Silent Data Corruption via Lossy UTF-8 Normalization","description":"The comm utility in uutils coreutils silently corrupts data by performing lossy UTF-8 conversion on all output lines. The implementation uses String::from_utf8_lossy(), which replaces invalid UTF-8 byte sequences with the Unicode replacement character (U+FFFD). This behavior differs from GNU comm, which processes raw bytes and preserves the original input. This results in corrupted output when the utility is used to compare binary files or files using non-UTF-8 legacy encodings.","status":"published","published":"2026-04-22T16:07:51.755Z","modified":"2026-10-28T02:30:33.796336131Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","level":"low"}],"cwes":["CWE-176"],"updated_at":"2026-11-02T15:45:02.673625Z"},{"id":"DEBIAN-CVE-2026-35346","description":"The comm utility in uutils coreutils silently corrupts data by performing lossy UTF-8 conversion on all output lines. The implementation uses String::from_utf8_lossy(), which replaces invalid UTF-8 byte sequences with the Unicode replacement character (U+FFFD). This behavior differs from GNU comm, which processes raw bytes and preserves the original input. This results in corrupted output when the utility is used to compare binary files or files using non-UTF-8 legacy encodings.","status":"published","published":"2026-04-22T17:16:36.76Z","modified":"2026-10-27T09:47:31.772551626Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","level":"low"}],"updated_at":"2026-11-02T15:45:54.587575Z"},{"id":"GHSA-6gcw-w7cp-94g9","title":"comm: lossy UTF-8 conversion silently corrupts non-UTF-8 output","description":"The comm utility in uutils coreutils silently corrupts data by performing lossy UTF-8 conversion on all output lines. The implementation uses String::from_utf8_lossy(), which replaces invalid UTF-8 byte sequences with the Unicode replacement character (U+FFFD). This behavior differs from GNU comm, which processes raw bytes and preserves the original input. This results in corrupted output when the utility is used to compare binary files or files using non-UTF-8 legacy encodings.\n\n---\n_Zellic finding 3.34. Reported in the Zellic *uutils coreutils Program Security Assessment* (for Canonical, Jan 2026), audited commit `3a07ffc5a9bd4c283e75afa548ba1f1957bad242`._","status":"published","published":"2026-07-06T19:51:22Z","modified":"2026-07-06T20:11:29.621574Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","level":"low"}],"cwes":["CWE-116","CWE-176"],"updated_at":"2026-11-02T15:46:39.618611Z"},{"id":"GHSA-hwhf-8p2f-45wr","title":"Duplicate Advisory: coreutils' comm utility silently corrupts data by performing lossy UTF-8 conversion on all output lines","description":"### Duplicate Advisory\nThis advisory has been withdrawn because it is a duplicate of GHSA-6gcw-w7cp-94g9. This link is maintained to preserve external references.\n\n### Original Description\nThe comm utility in uutils coreutils silently corrupts data by performing lossy UTF-8 conversion on all output lines. The implementation uses String::from_utf8_lossy(), which replaces invalid UTF-8 byte sequences with the Unicode replacement character (U+FFFD). This behavior differs from GNU comm, which processes raw bytes and preserves the original input. This results in corrupted output when the utility is used to compare binary files or files using non-UTF-8 legacy encodings.","status":"withdrawn","published":"2026-04-22T18:31:45Z","modified":"2026-09-10T03:51:02.105263418Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","level":"low"}],"cwes":["CWE-176"],"updated_at":"2026-11-02T15:46:49.621585Z"},{"id":"UBUNTU-CVE-2026-35346","description":"The comm utility in uutils coreutils silently corrupts data by performing lossy UTF-8 conversion on all output lines. The implementation uses String::from_utf8_lossy(), which replaces invalid UTF-8 byte sequences with the Unicode replacement character (U+FFFD). This behavior differs from GNU comm, which processes raw bytes and preserves the original input. This results in corrupted output when the utility is used to compare binary files or files using non-UTF-8 legacy encodings.","status":"published","published":"2026-04-22T17:16:00Z","modified":"2026-05-14T14:41:12.352956Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","level":"low"}],"updated_at":"2026-11-02T16:56:16.686388Z"}]}}
