{"id":"CVE-2020-36439","aliases":["EUVD-2021-1612","GHSA-77m6-x95j-75r5","GHSA-gq4h-f254-7cw9","RUSTSEC-2020-0119"],"status":"published","title":"Data races in ticketed_lock","description":"An issue was discovered in the ticketed_lock crate before 0.3.0 for Rust. There are unconditional implementations of Send for ReadTicket\u003cT\u003e and WriteTicket\u003cT\u003e.","severity":{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-11","score":0.00766,"percentile":0.55902,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-119","CWE-362"],"published":"2020-11-17T12:00:00Z","modified":"2026-06-17T03:15:29Z","fixes":[{"ecosystem":"crates.io","package":"ticketed_lock","fixed_in":["0.3.0"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"ticketed_lock","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.3.0"}]}]},{"source":"osv","ecosystem":"crates.io","package":"ticketed_lock","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.3.0"}]}]},{"source":"osv","ecosystem":"crates.io","package":"ticketed_lock","ranges":[{"type":"SEMVER","events":[{"introduced":"0.0.0-0"},{"fixed":"0.3.0"}]}]}],"products":[{"vendor":"ticketed_lock_project","product":"ticketed_lock"}],"references":[{"url":"https://rustsec.org/advisories/RUSTSEC-2020-0119.html","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","web","advisory"]},{"url":"https://raw.githubusercontent.com/rustsec/advisory-db/main/crates/ticketed_lock/RUSTSEC-2020-0119.md","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-36439","tags":["advisory"]},{"url":"https://github.com/kvark/ticketed_lock/issues/7","tags":["web","report"]},{"url":"https://github.com/kvark/ticketed_lock/commit/a986a9335d591fa5c826157d1674d47aa525357f","tags":["web"]},{"url":"https://github.com/advisories/GHSA-77m6-x95j-75r5"},{"url":"https://github.com/advisories/GHSA-gq4h-f254-7cw9"},{"url":"https://github.com/kvark/ticketed_lock","tags":["web"]},{"url":"https://crates.io/crates/ticketed_lock","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2020-36439","description":"An issue was discovered in the ticketed_lock crate before 0.3.0 for Rust. There are unconditional implementations of Send for ReadTicket\u003cT\u003e and WriteTicket\u003cT\u003e.","status":"published","published":"2021-08-08T05:18:19Z","modified":"2024-08-04T17:30:07.341Z","updated_at":"2026-11-02T14:35:55.128961Z"}],"euvd":[{"id":"EUVD-2021-1612","description":"An issue was discovered in the ticketed_lock crate before 0.3.0 for Rust. There are unconditional implementations of Send for ReadTicket\u003cT\u003e and WriteTicket\u003cT\u003e.","status":"published","published":"2021-08-08T05:18:19Z","modified":"2024-08-04T17:30:07Z","updated_at":"2026-11-03T03:07:03.010139Z"}],"ghsa":[{"id":"GHSA-77m6-x95j-75r5","title":"Data races in ticketed_lock","description":"Affected versions of this crate unconditionally implemented Send for ReadTicket\u003cT\u003e \u0026 WriteTicket\u003cT\u003e. This allows to send non-Send T to other threads. This can allows creating data races by cloning types with internal mutability and sending them to other threads (as T of ReadTicket\u003cT\u003e/WriteTicket\u003cT\u003e). Such data races can cause memory corruption or other undefined behavior. The flaw was corrected in commit `a986a93` by adding T: Send bounds to Send impls of ReadTicket\u003cT\u003e/WriteTicket\u003cT\u003e.","status":"published","published":"2021-08-25T20:58:58Z","modified":"2023-06-13T22:07:15Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-119","CWE-362"],"updated_at":"2026-11-02T14:36:54.225318Z"},{"id":"GHSA-gq4h-f254-7cw9","title":"Duplicate Advisory: Data races in ticketed_lock","description":"## Duplicate Advisory\nThis advisory has been withdrawn because it is a duplicate of GHSA-77m6-x95j-75r5. This link is maintained to preserve external references.\n\n## Original Description\nAffected versions of this crate unconditionally implemented `Send` for `ReadTicket\u003cT\u003e` \u0026 `WriteTicket\u003cT\u003e`.\nThis allows to send non-Send `T` to other threads.\n\nThis can allows creating data races by cloning types with internal mutability and sending them to other threads (as `T` of `ReadTicket\u003cT\u003e`/`WriteTicket\u003cT\u003e`). Such data races can cause memory corruption or other undefined behavior.\n\nThe flaw was corrected in commit `a986a93` by adding `T: Send` bounds to `Send` impls of `ReadTicket\u003cT\u003e`/`WriteTicket\u003cT\u003e`.","status":"withdrawn","published":"2021-08-25T21:00:34Z","modified":"2026-01-23T22:53:30Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-362"],"updated_at":"2026-11-02T14:39:20.563096Z"}],"nvd":[{"id":"CVE-2020-36439","description":"An issue was discovered in the ticketed_lock crate before 0.3.0 for Rust. There are unconditional implementations of Send for ReadTicket\u003cT\u003e and WriteTicket\u003cT\u003e.","status":"published","published":"2021-08-08T06:15:07.087Z","modified":"2026-06-17T03:15:29.69Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"primary"},{"version":"2.0","score":6.8,"vector":"AV:N/AC:M/Au:N/C:P/I:P/A:P","level":"medium","assessor":"primary"}],"cwes":["CWE-362"],"updated_at":"2026-11-02T14:06:44.292752Z"}],"osv":[{"id":"GHSA-77m6-x95j-75r5","title":"Data races in ticketed_lock","description":"Affected versions of this crate unconditionally implemented Send for ReadTicket\u003cT\u003e \u0026 WriteTicket\u003cT\u003e. This allows to send non-Send T to other threads. This can allows creating data races by cloning types with internal mutability and sending them to other threads (as T of ReadTicket\u003cT\u003e/WriteTicket\u003cT\u003e). Such data races can cause memory corruption or other undefined behavior. The flaw was corrected in commit `a986a93` by adding T: Send bounds to Send impls of ReadTicket\u003cT\u003e/WriteTicket\u003cT\u003e.","status":"published","published":"2021-08-25T20:58:58Z","modified":"2023-11-08T04:03:44.903828Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-119","CWE-362"],"updated_at":"2026-11-02T15:46:40.657155Z"},{"id":"GHSA-gq4h-f254-7cw9","title":"Duplicate Advisory: Data races in ticketed_lock","description":"## Duplicate Advisory\nThis advisory has been withdrawn because it is a duplicate of GHSA-77m6-x95j-75r5. This link is maintained to preserve external references.\n\n## Original Description\nAffected versions of this crate unconditionally implemented `Send` for `ReadTicket\u003cT\u003e` \u0026 `WriteTicket\u003cT\u003e`.\nThis allows to send non-Send `T` to other threads.\n\nThis can allows creating data races by cloning types with internal mutability and sending them to other threads (as `T` of `ReadTicket\u003cT\u003e`/`WriteTicket\u003cT\u003e`). Such data races can cause memory corruption or other undefined behavior.\n\nThe flaw was corrected in commit `a986a93` by adding `T: Send` bounds to `Send` impls of `ReadTicket\u003cT\u003e`/`WriteTicket\u003cT\u003e`.","status":"withdrawn","published":"2021-08-25T21:00:34Z","modified":"2026-02-03T03:07:42.680834Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-362"],"updated_at":"2026-11-02T15:46:48.191583Z"},{"id":"RUSTSEC-2020-0119","title":"ReadTicket and WriteTicket should only be sendable when T is Send","description":"Affected versions of this crate unconditionally implemented `Send` for `ReadTicket\u003cT\u003e` \u0026 `WriteTicket\u003cT\u003e`.\nThis allows to send non-Send `T` to other threads.\n\nThis can allows creating data races by cloning types with internal mutability and sending them to other threads (as `T` of `ReadTicket\u003cT\u003e`/`WriteTicket\u003cT\u003e`). Such data races can cause memory corruption or other undefined behavior.\n\nThe flaw was corrected in commit a986a93 by adding `T: Send` bounds to `Send` impls of `ReadTicket\u003cT\u003e`/`WriteTicket\u003cT\u003e`.","status":"published","published":"2020-11-17T12:00:00Z","modified":"2023-11-08T04:03:44.903828Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:39.492624Z"}]}}
