RUSTSEC-2026-0298 Use-after-free when a future's `Drop` panics while the container is dropped
A use-after-free vulnerability in the Storage component allows attackers to cause memory corruption or crashes when a future's Drop implementation panics during container cleanup.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Not stated
- Victim action needed
- Not needed
- Fix
- Available
What is RUSTSEC-2026-0298?
RUSTSEC-2026-0298 is an use after free vulnerability in unicycle, published on 12 Sep 2026.
Official description
Storage::clear walks the slab, empties each entry and frees the Task
allocation once its reference count reaches zero. self.tasks.set_len(0) only
runs after the loop.
Emptying an entry drops the user future it holds, and T carries no bounds
excluding a panicking Drop. If one unwinds, the length is never committed and
self.tasks still holds the pointers already processed. Drop for Storage
calls clear again, and the second pass dereferences (*task.as_ptr()).entry
on allocations the first pass already freed — a use-after-free (CWE-416)
reachable from safe Rust.
Storage is reached only through Unordered, whose Drop calls clear. No
particular method call is needed; dropping the container is enough.
Mitigation
Update to 0.10.3.
Which versions are affected by RUSTSEC-2026-0298?
1 open source package ship an affected version, including unicycle.
| Package | Affected | Fixed in |
|---|---|---|
unicycle crates.io | From 0.0.0-0 | 0.10.3 |
How do I fix RUSTSEC-2026-0298?
Upgrade unicycle to 0.10.3 or later.
Upgrade to the fixed version. These bugs are found with fuzzing and sanitisers and avoided by memory-safe languages. More about Use after free.
Is RUSTSEC-2026-0298 being exploited?
There is no known exploitation of RUSTSEC-2026-0298 in the wild and no public exploit code.
Sources
Also known as GHSA-8gw6-724c-9h38.