RUSTSEC-2026-0293 Double free / use-after-free in `Consumer::skip` and `Consumer::clear` when an element's `Drop` panics
A double free or use-after-free vulnerability in the Rust ring buffer library allows attackers to cause crashes or potentially execute code if element drop panics.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Not stated
- Victim action needed
- Not needed
- Fix
- Available
What is RUSTSEC-2026-0293?
RUSTSEC-2026-0293 is an use after free vulnerability in ringbuf, published on 21 Sep 2026.
Official description
Consumer::skip() and Consumer::clear() are not panic-safe. They drop the
consumed elements in place and only afterwards call advance_read_index() to move
the ring buffer's read index past them. If an element's Drop panics mid-loop,
advance_read_index() is never reached, so the read index still points at the
already-dropped elements. When the ring buffer is later dropped, its destructor
re-visits those slots and drops the same elements a second time — a double free
(CWE-415) / use-after-free (CWE-416) reachable from safe Rust, confirmed under
AddressSanitizer.
Consumer::clear() delegates to Consumer::skip(self.len()), so both share the
same root cause and the same fix.
Mitigation
Update to 0.5.2 or later (fixed in agerasev/ringbuf#60).
Which versions are affected by RUSTSEC-2026-0293?
1 open source package ship an affected version, including ringbuf.
| Package | Affected | Fixed in |
|---|---|---|
ringbuf crates.io | From 0.0.0-0 | 0.5.2 |
How do I fix RUSTSEC-2026-0293?
Upgrade ringbuf to 0.5.2 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-0293 being exploited?
There is no known exploitation of RUSTSEC-2026-0293 in the wild and no public exploit code.