GitHub Advisoryadvisory · crates.io
GHSA-vcw4-8ph6-7vw8 Use after free in Rocket
HIGH
Official page ↗
- Aliases
- CVE-2021-29935
- Ecosystem
- crates.io
- Packages
- rocket
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
- Weaknesses
- CWE-416
- Reviewed
- 2021-08-19
Affected packages
• crates.io rocket: < 0.4.7 → fixed in 0.4.7
Description
Affected versions of this crate transmuted a &str to a &'static str before pushing it into a StackVec, this value was then popped later in the same function.
This was assumed to be safe because the reference would be valid while the method's stack was active. In between the push and the pop, however, a function f was called that could invoke a user provided function.
If the user provided panicked, then the assumption used by the function was no longer true and the transmute to &'static would create an illegal static reference to the string. This could result in a freed string being used during (such as in a Drop implementation) or after (e.g through catch_unwind) the panic unwinding.
This flaw was corrected in commit `e325e2f` by using a guard object to ensure that the &'static str was dropped inside the function.
Related
Alias · CVE (1)
- CVE-2021-29935 An issue was discovered in the rocket crate before 0.4.7 for Rust. vulnerability
Weakness · CWE (1)
- CWE-416 Use After Free weakness
References
- https://nvd.nist.gov/vuln/detail/CVE-2021-29935 advisory
- https://github.com/SergioBenitez/Rocket/issues/1534 web
- https://github.com/SergioBenitez/Rocket/commit/b53a906a8e170fe9b151381c66a76a872c419f9e web
- https://github.com/SergioBenitez/Rocket/commit/e325e2fce4d9f9f392761e9fb58b418a48cef8bb web
- https://github.com/SergioBenitez/Rocket package
- https://rustsec.org/advisories/RUSTSEC-2021-0044.html web