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
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| rust | nano_arena | < 0.5.2 | 0.5.2 |
Affected products
| Vendor | Product | Affected versions |
|---|---|---|
| Nano Arena Project | Nano Arena | before 0.5.2 |
Weakness classification
References
- NVD record
- CVE.org record
- GitHub advisory
- https://rustsec.org/advisories/RUSTSEC-2021-0031.html
- https://github.com/advisories/GHSA-wp34-mqw5-jj85
- https://nvd.nist.gov/vuln/detail/CVE-2021-28032
- https://github.com/bennetthardwick/nano-arena/issues/1
- https://github.com/bennetthardwick/nano-arena/commit/6b83f9d0708337a9f8b709c1624a8587021ceba2