{"id":"GHSA-rr8g-9fpq-6wmg","aliases":["RUSTSEC-2025-0023"],"status":"published","title":"Tokio broadcast channel calls clone in parallel, but does not require `Sync`","description":"The broadcast channel internally calls `clone` on the stored value when receiving it, and only requires `T:Send`. This means that using the broadcast channel with values that are `Send` but not `Sync` can trigger unsoundness if the `clone` implementation makes use of the value being `!Sync`.\n\nThank you to Austin Bonander for finding and reporting this issue.","severity":{"version":"4.0","score":2.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:U","level":"low","from":"ghsa"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-664"],"published":"2025-04-07T12:00:00Z","modified":"2026-09-10T03:50:24Z","fixes":[{"ecosystem":"crates.io","package":"tokio","fixed_in":["1.44.2","1.38.2","1.43.1","1.42.1"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"tokio","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.44.0"},{"fixed":"1.44.2"}]}]},{"source":"ghsa","ecosystem":"crates.io","package":"tokio","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.2.5"},{"fixed":"1.38.2"}]}]},{"source":"ghsa","ecosystem":"crates.io","package":"tokio","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.39.0"},{"fixed":"1.43.1"}]}]},{"source":"osv","ecosystem":"crates.io","package":"tokio","ranges":[{"type":"SEMVER","events":[{"introduced":"1.44.0"},{"fixed":"1.44.2"}]}]},{"source":"osv","ecosystem":"crates.io","package":"tokio","ranges":[{"type":"SEMVER","events":[{"introduced":"0.2.5"},{"fixed":"1.38.2"}]}]},{"source":"osv","ecosystem":"crates.io","package":"tokio","ranges":[{"type":"SEMVER","events":[{"introduced":"1.39.0"},{"fixed":"1.43.1"}]}]},{"source":"osv","ecosystem":"crates.io","package":"tokio","ranges":[{"type":"SEMVER","events":[{"introduced":"0.2.5"},{"fixed":"1.38.2"},{"introduced":"1.39.0"},{"fixed":"1.42.1"},{"introduced":"1.43.0"},{"fixed":"1.43.1"},{"introduced":"1.44.0"},{"fixed":"1.44.2"}]}]}],"references":[{"url":"https://github.com/tokio-rs/tokio/pull/7232","tags":["web"]},{"url":"https://github.com/tokio-rs/tokio","tags":["package"]},{"url":"https://rustsec.org/advisories/RUSTSEC-2025-0023.html","tags":["web","advisory"]},{"url":"https://github.com/advisories/GHSA-rr8g-9fpq-6wmg"},{"url":"https://crates.io/crates/tokio","tags":["package"]}],"sources":{"ghsa":[{"id":"GHSA-rr8g-9fpq-6wmg","title":"Tokio broadcast channel calls clone in parallel, but does not require `Sync`","description":"The broadcast channel internally calls `clone` on the stored value when receiving it, and only requires `T:Send`. This means that using the broadcast channel with values that are `Send` but not `Sync` can trigger unsoundness if the `clone` implementation makes use of the value being `!Sync`.\n\nThank you to Austin Bonander for finding and reporting this issue.","status":"published","published":"2025-04-07T21:12:50Z","modified":"2025-04-07T21:12:51Z","cvss":[{"version":"4.0","score":2.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:U","level":"low"}],"cwes":["CWE-664"],"updated_at":"2026-11-02T14:38:38.344711Z"}],"osv":[{"id":"GHSA-rr8g-9fpq-6wmg","title":"Tokio broadcast channel calls clone in parallel, but does not require `Sync`","description":"The broadcast channel internally calls `clone` on the stored value when receiving it, and only requires `T:Send`. This means that using the broadcast channel with values that are `Send` but not `Sync` can trigger unsoundness if the `clone` implementation makes use of the value being `!Sync`.\n\nThank you to Austin Bonander for finding and reporting this issue.","status":"published","published":"2025-04-07T21:12:50Z","modified":"2026-09-10T03:50:24.081979053Z","cvss":[{"version":"4.0","score":2.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:U","level":"low"}],"cwes":["CWE-664"],"updated_at":"2026-11-02T15:46:56.281047Z"},{"id":"RUSTSEC-2025-0023","title":"Broadcast channel calls clone in parallel, but does not require `Sync`","description":"The broadcast channel internally calls `clone` on the stored value when\nreceiving it, and only requires `T:Send`. This means that using the broadcast\nchannel with values that are `Send` but not `Sync` can trigger unsoundness if\nthe `clone` implementation makes use of the value being `!Sync`.\n\nThank you to Austin Bonander for finding and reporting this issue.","status":"published","published":"2025-04-07T12:00:00Z","modified":"2025-10-28T06:29:26.130595Z","updated_at":"2026-11-02T15:53:39.971022Z"}]}}
