RUSTSEC-2026-0408 Aliasing violations in splice, mutable iteration and cursors
- Exploited in the wild
- Not known
- Fix
- Available
What is RUSTSEC-2026-0408?
RUSTSEC-2026-0408 is a vulnerability in skiplist, published on 24 Oct 2026.
Official description
Four code paths create a pointer whose permission is later revoked, then
write through it. Miri reports each as undefined behaviour under both the
Tree Borrows and Stacked Borrows aliasing models (CWE-758). All four are
reachable from safe code with standard Ord types.
- Splice back-pointer.
split_off,split_off_indexandappendstored the first spliced node'sprevpointer from a reference to the head, then wrote through that same reference, invalidating the stored pointer. A laterpop_firstorpop_frontwrites through it. This affects all four collections. SkipMap::range_mutback pointer. With anIncludedorExcludedupper bound, the back pointer came from a shared reference.next_backhands out&mut Vthrough it, and writing to that value is undefined behaviour.IterMut::next_backreads a yielded node. InSkipListandSkipMap,next_backread the predecessor node even after the front end had yielded it as&mut. The read freezes the caller's reference, and the caller's next write through it is undefined behaviour. This affectsiter_mut,values_mutandrange_mutused from both ends.- Cursor list pointer.
lower_bound_mutandupper_bound_mutonOrderedSkipListandSkipSet(cursorfeature) took the cursor's list pointer, then searched through&self. A comparator with interior-mutable state, such as aCellcall counter, wrote to the list's memory through that shared borrow and invalidated the cursor's pointer. The comparator can be a fully consistent order.SkipMapcursors are not affected.
No miscompilation has been observed in an optimised build. A future compiler may still optimise on the violated aliasing assumptions.
The flaws were corrected in 1.3.0. Each fix derives the pointer used for mutation from the collection's long-lived allocation pointers, and each has a Miri regression test.
Which versions are affected by RUSTSEC-2026-0408?
1 open source package ship an affected version, including skiplist.
| Package | Affected | Fixed in |
|---|---|---|
skiplist crates.io | From 0.0.0-0 | 1.3.0 |
How do I fix RUSTSEC-2026-0408?
Upgrade skiplist to 1.3.0 or later.
Is RUSTSEC-2026-0408 being exploited?
There is no known exploitation of RUSTSEC-2026-0408 in the wild and no public exploit code.
Sources
Also known as GHSA-924w-mwc9-86m8.