RUSTSEC-2026-0282 Double free in `AlignedBox<[T]>::realloc_with_default` when an element's `Drop` panics
A double free vulnerability in AlignedBox allows attackers to trigger memory corruption and potential code execution via panicking Drop implementations.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Not stated
- Victim action needed
- Not needed
- Fix
- Available
What is RUSTSEC-2026-0282?
RUSTSEC-2026-0282 is an use after free vulnerability in aligned_box, published on 9 Sep 2026.
Official description
Shrinking an AlignedBox<[T]> takes ownership of the buffer out of
self.container with ManuallyDrop::take, destroys the elements past the new
length, and only then commits the new Box back into self.container.
ManuallyDrop::take moves ownership but not the bits, so until that commit
self.container still points at the original buffer.
T::drop runs inside the destruction loop and is user code — T carries no
bound that would exclude a panicking Drop. If it unwinds, the commit is
skipped and self.container is left pointing at the buffer whose tail has
already been destroyed. AlignedBox's own destructor then reconstructs a Box
from that pointer, drops every element again and deallocates — a double free
(CWE-415) / use-after-free (CWE-416) reachable from safe Rust.
Growing the slice destroys nothing and is unaffected, as is
realloc_with_value, which requires T: Copy and therefore a Drop that
cannot run.
Mitigation
Update to 0.3.1.
Which versions are affected by RUSTSEC-2026-0282?
1 open source package ship an affected version, including aligned_box.
| Package | Affected | Fixed in |
|---|---|---|
aligned_box crates.io | From 0.0.0-0 | 0.3.1 |
How do I fix RUSTSEC-2026-0282?
Upgrade aligned_box to 0.3.1 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-0282 being exploited?
There is no known exploitation of RUSTSEC-2026-0282 in the wild and no public exploit code.