NetSight
critical9.8

CVE-2021-28032

Use after free in nano_arena

Impact

Affected versions of this crate assumed that Borrow<Idx> was guaranteed to return the same value on .borrow(). The borrowed index value was used to retrieve a mutable reference to a value. If the Borrow<Idx> implementation returned a different index, the split arena would allow retrieving the index as a mutable reference creating two mutable references to the same element. This violates Rust's aliasing rules and allows for memory safety issues such as writing out of bounds and use-after-frees. The flaw was corrected in commit `6b83f9d` by storing the .borrow() value in a temporary variable.

Affected packages

EcosystemPackageAffectedFixed in
rustnano_arena< 0.5.20.5.2

Affected products

VendorProductAffected versions
Nano Arena ProjectNano Arena
before 0.5.2

Weakness classification

References