{"id":"CVE-2020-35879","aliases":["EUVD-2021-1831","GHSA-q2gj-9r85-p832","RUSTSEC-2020-0023"],"status":"published","title":"Data races in rulinalg","description":"An issue was discovered in the rulinalg crate through 2020-02-11 for Rust. There are incorrect lifetime-boundary definitions for RowMut::raw_slice and RowMut::raw_slice_mut.","severity":{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-08","score":0.01668,"percentile":0.76917,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-362"],"published":"2020-02-11T12:00:00Z","modified":"2026-06-17T03:14:31Z","affected":[{"source":"ghsa","ecosystem":"crates.io","package":"rulinalg","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.4.0"},{"last_affected":"0.4.2"}]}]},{"source":"osv","ecosystem":"crates.io","package":"rulinalg","ranges":[{"type":"SEMVER","events":[{"introduced":"0.4.0"},{"last_affected":"0.4.2"}]}]},{"source":"osv","ecosystem":"crates.io","package":"rulinalg","ranges":[{"type":"SEMVER","events":[{"introduced":"0.4.0"}]}]}],"products":[{"vendor":"rulinalg_project","product":"rulinalg"}],"references":[{"url":"https://rustsec.org/advisories/RUSTSEC-2020-0023.html","tags":["x_refsource_MISC","x_transferred","Exploit","Patch","Third Party Advisory","web","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-35879","tags":["advisory"]},{"url":"https://github.com/AtheMathmo/rulinalg/issues/201","tags":["web","report"]},{"url":"https://github.com/advisories/GHSA-q2gj-9r85-p832"},{"url":"https://github.com/AtheMathmo/rulinalg","tags":["package"]},{"url":"https://crates.io/crates/rulinalg","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2020-35879","description":"An issue was discovered in the rulinalg crate through 2020-02-11 for Rust. There are incorrect lifetime-boundary definitions for RowMut::raw_slice and RowMut::raw_slice_mut.","status":"published","published":"2020-12-31T08:26:47Z","modified":"2024-08-04T17:16:12.591Z","updated_at":"2026-11-02T14:35:57.67317Z"}],"euvd":[{"id":"EUVD-2021-1831","description":"An issue was discovered in the rulinalg crate through 2020-02-11 for Rust. There are incorrect lifetime-boundary definitions for RowMut::raw_slice and RowMut::raw_slice_mut.","status":"published","published":"2020-12-31T08:26:47Z","modified":"2024-08-04T17:16:12Z","updated_at":"2026-11-03T03:07:04.595509Z"}],"ghsa":[{"id":"GHSA-q2gj-9r85-p832","title":"Data races in rulinalg","description":"The affected version of rulinalg has incorrect lifetime boundary definitions for RowMut::raw_slice and RowMut::raw_slice_mut. They do not conform with Rust's borrowing rule and allows the user to create multiple mutable references to the same location. This may result in unexpected calculation result and data race if both references are used at the same time.","status":"published","published":"2021-08-25T20:48:09Z","modified":"2023-06-13T20:47:13Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-362"],"updated_at":"2026-11-02T14:36:54.225318Z"}],"nvd":[{"id":"CVE-2020-35879","description":"An issue was discovered in the rulinalg crate through 2020-02-11 for Rust. There are incorrect lifetime-boundary definitions for RowMut::raw_slice and RowMut::raw_slice_mut.","status":"published","published":"2020-12-31T10:15:16.05Z","modified":"2026-06-17T03:14:31.3Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"updated_at":"2026-11-02T14:06:28.340168Z"}],"osv":[{"id":"GHSA-q2gj-9r85-p832","title":"Data races in rulinalg","description":"The affected version of rulinalg has incorrect lifetime boundary definitions for RowMut::raw_slice and RowMut::raw_slice_mut. They do not conform with Rust's borrowing rule and allows the user to create multiple mutable references to the same location. This may result in unexpected calculation result and data race if both references are used at the same time.","status":"published","published":"2021-08-25T20:48:09Z","modified":"2023-11-08T04:03:37.134824Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-362"],"updated_at":"2026-11-02T15:46:53.700556Z"},{"id":"RUSTSEC-2020-0023","title":"Lifetime boundary for `raw_slice` and `raw_slice_mut` are incorrect","description":"The affected version of `rulinalg` has incorrect lifetime boundary definitions\nfor `RowMut::raw_slice` and `RowMut::raw_slice_mut`. They do not conform with\nRust's borrowing rule and allows the user to create multiple mutable references\nto the same location. This may result in unexpected calculation result and data\nrace if both references are used at the same time.","status":"published","published":"2020-02-11T12:00:00Z","modified":"2023-11-08T04:03:37.134824Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:53:39.492624Z"}]}}
