CVE-2021-29935
Use after free in Rocket
An issue was discovered in the rocket crate before 0.4.7 for Rust. uri::Formatter can have a use-after-free if a user-provided function panics.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- Low
Exploit likelihood
What each source reports
NVD Score used
7.3
An issue was discovered in the rocket crate before 0.4.7 for Rust. uri::Formatter can have a use-after-free if a user-provided function panics.
- Record
CVE-2021-29935- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L - CVSS 2.0
- 7.5 High
AV:N/AC:L/Au:N/C:P/I:P/A:P - Weakness
- CWE-416
- Updated
- 2026-11-02
CVE List No score
An issue was discovered in the rocket crate before 0.4.7 for Rust. uri::Formatter can have a use-after-free if a user-provided function panics.
- Record
CVE-2021-29935- Updated
- 2026-11-02
EUVDEUVD-2021-1890 No score
An issue was discovered in the rocket crate before 0.4.7 for Rust. uri::Formatter can have a use-after-free if a user-provided function panics.
- Record
EUVD-2021-1890- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-vcw4-8ph6-7vw8
7.3
Use after free in Rocket
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.
- Record
GHSA-vcw4-8ph6-7vw8- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L - Weakness
- CWE-416
- Updated
- 2026-11-02
OSV
7.3
An issue was discovered in the rocket crate before 0.4.7 for Rust. uri::Formatter can have a use-after-free if a user-provided function panics.
- Record
CVE-2021-29935- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
OSVGHSA-vcw4-8ph6-7vw8
7.3
Use after free in Rocket
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.
- Record
GHSA-vcw4-8ph6-7vw8- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L - Weakness
- CWE-416
- Updated
- 2026-11-02
OSVRUSTSEC-2021-0044
7.3
Use after free possible in `uri::Formatter` on panic
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.
- Record
RUSTSEC-2021-0044- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
Affected products
Affected packages
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2021-29935 is a high vulnerability (CVSS 7.3) in Rocket, published February 9, 2021. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.03%, the 63rd percentile. Fixed in rocket 0.4.7.
References
rustsec.org/advisories/RUSTSEC-2021-0044.html
nvd.nist.gov/vuln/detail/CVE-2021-29935
github.com/SergioBenitez/Rocket/issues/1534
github.com/SergioBenitez/Rocket/commit/b53a906a8e170fe9b151381c66a76a872c419f9e
github.com/SergioBenitez/Rocket/commit/e325e2fce4d9f9f392761e9fb58b418a48cef8bb
github.com/advisories/GHSA-vcw4-8ph6-7vw8
github.com/SergioBenitez/Rocket
crates.io/crates/rocket