{"id":"GHSA-9c9f-7x9p-4wqp","aliases":["RUSTSEC-2022-0007"],"status":"published","title":"A malicious coder can get unsound access to TCell or TLCell memory","description":"This is impossible to do by accident, but by carefully constructing\nmarker types to be covariant, a malicious coder can cheat the\nsingleton check in `TCellOwner` and `TLCellOwner`, giving unsound\naccess to cell memory.  This could take the form of getting two\nmutable references to the same memory, or a mutable reference and an\nimmutable reference.\n\nThe fix is for the crate to internally force the marker type to be\ninvariant.  This blocks the conversion between covariant types which\nRust normally allows.","facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"published":"2022-01-24T12:00:00Z","modified":"2023-11-08T04:17:51Z","fixes":[{"ecosystem":"crates.io","package":"qcell","fixed_in":["0.4.3"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"qcell","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.4.3"}]}]},{"source":"osv","ecosystem":"crates.io","package":"qcell","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.4.3"}]}]},{"source":"osv","ecosystem":"crates.io","package":"qcell","ranges":[{"type":"SEMVER","events":[{"introduced":"0.0.0-0"},{"fixed":"0.4.3"}]}]}],"references":[{"url":"https://github.com/uazu/qcell/issues/20","tags":["web","report"]},{"url":"https://rustsec.org/advisories/RUSTSEC-2022-0007.html","tags":["web","advisory"]},{"url":"https://github.com/advisories/GHSA-9c9f-7x9p-4wqp"},{"url":"https://github.com/uazu/qcell","tags":["package"]},{"url":"https://crates.io/crates/qcell","tags":["package"]}],"sources":{"ghsa":[{"id":"GHSA-9c9f-7x9p-4wqp","title":"A malicious coder can get unsound access to TCell or TLCell memory","description":"This is impossible to do by accident, but by carefully constructing\nmarker types to be covariant, a malicious coder can cheat the\nsingleton check in `TCellOwner` and `TLCellOwner`, giving unsound\naccess to cell memory.  This could take the form of getting two\nmutable references to the same memory, or a mutable reference and an\nimmutable reference.\n\nThe fix is for the crate to internally force the marker type to be\ninvariant.  This blocks the conversion between covariant types which\nRust normally allows.\n","status":"published","published":"2022-06-17T00:16:11Z","modified":"2023-01-12T05:01:02Z","updated_at":"2026-11-02T14:36:13.23016Z"}],"osv":[{"id":"GHSA-9c9f-7x9p-4wqp","title":"A malicious coder can get unsound access to TCell or TLCell memory","description":"This is impossible to do by accident, but by carefully constructing\nmarker types to be covariant, a malicious coder can cheat the\nsingleton check in `TCellOwner` and `TLCellOwner`, giving unsound\naccess to cell memory.  This could take the form of getting two\nmutable references to the same memory, or a mutable reference and an\nimmutable reference.\n\nThe fix is for the crate to internally force the marker type to be\ninvariant.  This blocks the conversion between covariant types which\nRust normally allows.\n","status":"published","published":"2022-06-17T00:16:11Z","modified":"2023-11-08T04:17:51.156433Z","updated_at":"2026-11-02T15:46:43.524801Z"},{"id":"RUSTSEC-2022-0007","title":"A malicious coder can get unsound access to TCell or TLCell memory","description":"This is impossible to do by accident, but by carefully constructing\nmarker types to be covariant, a malicious coder can cheat the\nsingleton check in `TCellOwner` and `TLCellOwner`, giving unsound\naccess to cell memory.  This could take the form of getting two\nmutable references to the same memory, or a mutable reference and an\nimmutable reference.\n\nThe fix is for the crate to internally force the marker type to be\ninvariant.  This blocks the conversion between covariant types which\nRust normally allows.","status":"published","published":"2022-01-24T12:00:00Z","modified":"2023-11-08T04:17:51.156433Z","updated_at":"2026-11-02T15:53:39.971022Z"}]}}
