{"id":"RUSTSEC-2021-0031","summary":"split_at allows obtaining multiple mutable references to the same data","details":"Affected versions of this crate assumed that `Borrow\u003cIdx\u003e` was guaranteed to\nreturn the same value on `.borrow()`. The borrowed index value was used to\nretrieve a mutable reference to a value.\n\nIf the `Borrow\u003cIdx\u003e` implementation returned a different index, the split arena\nwould allow retrieving the index as a mutable reference creating two mutable\nreferences to the same element. This violates Rust's aliasing rules and allows\nfor memory safety issues such as writing out of bounds and use-after-frees.\n\nThe flaw was corrected in commit `6b83f9d` by storing the `.borrow()` value in\na temporary variable.","aliases":["CVE-2021-28032","GHSA-wp34-mqw5-jj85"],"modified":"2023-11-08T04:05:27.788398Z","published":"2021-01-31T12:00:00Z","database_specific":{"license":"CC0-1.0"},"references":[{"type":"PACKAGE","url":"https://crates.io/crates/nano_arena"},{"type":"ADVISORY","url":"https://rustsec.org/advisories/RUSTSEC-2021-0031.html"},{"type":"REPORT","url":"https://github.com/bennetthardwick/nano-arena/issues/1"}],"affected":[{"package":{"name":"nano_arena","ecosystem":"crates.io","purl":"pkg:cargo/nano_arena"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0.0.0-0"},{"fixed":"0.5.2"}]}],"ecosystem_specific":{"affected_functions":null,"affects":{"arch":[],"functions":["nano_arena::Arena::split_at","nano_arena::ArenaSplit::split_at"],"os":[]}},"database_specific":{"categories":["memory-corruption"],"cvss":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","informational":null,"source":"https://github.com/rustsec/advisory-db/blob/osv/crates/RUSTSEC-2021-0031.json"}}],"schema_version":"1.7.3","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}]}