GHSA-f85w-wvc7-crwc json
bumpalo has use-after-free due to a lifetime error in `Vec::into_iter()`
published 4y ago modified 2mo ago also RUSTSEC-2022-0078
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
In affected versions of this crate, the lifetime of the iterator produced by `Vec::into_iter()` is not constrained to the lifetime of the `Bump` that allocated the vector's memory. Using the iterator after the `Bump` is dropped causes use-after-free accesses.
The following example demonstrates memory corruption arising from a misuse of this unsoundness.
```rust use bumpalo::{collections::Vec, Bump};
fn main() { let bump = Bump::new(); let mut vec = Vec::new_in(&bump); vec.extend([0x01u8; 32]); let into_iter = vec.into_iter(); drop(bump);
for _ in 0..100 { let reuse_bump = Bump::new(); let _reuse_alloc = reuse_bump.alloc([0x41u8; 10]); }
for x in into_iter { print!("0x{:02x} ", x); } println!(); } ```
The issue was corrected in version 3.11.1 by adding a lifetime to the `IntoIter` type, and updating the signature of `Vec::into_iter()` to constrain this lifetime.
Patch / fix
- crates.io bumpalo 3.11.1
Is GHSA-f85w-wvc7-crwc in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| crates.io | bumpalo | >=1.1.0, <3.11.1 |
3.11.1 |
References
Sources
- GitHub Advisory GHSA-f85w-wvc7-crwc
- OSV RUSTSEC-2022-0078
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.