RUSTSEC-2026-0282

Source
https://rustsec.org/advisories/RUSTSEC-2026-0282
Import Source
https://github.com/rustsec/advisory-db/blob/osv/crates/RUSTSEC-2026-0282.json
JSON Data
https://api.osv.dev/v1/vulns/RUSTSEC-2026-0282
Published
2026-09-09T12:00:00Z
Modified
2026-09-09T11:00:05Z
Summary
Double free in `AlignedBox<[T]>::realloc_with_default` when an element's `Drop` panics
Details

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.

Database specific
{
    "license": "CC0-1.0"
}
References

Affected packages

crates.io / aligned_box

Package

Name
aligned_box
View open source insights on deps.dev
Purl
pkg:cargo/aligned_box

Affected ranges

Type
SEMVER
Events
Introduced
0.0.0-0
Fixed
0.3.1

Ecosystem specific

{
    "affected_functions": null,
    "affects": {
        "arch": [],
        "functions": [
            "aligned_box::AlignedBox::realloc_with_default"
        ],
        "os": []
    }
}

Database specific

categories
[
    "memory-corruption"
]
cvss
null
informational
null
source
"https://github.com/rustsec/advisory-db/blob/osv/crates/RUSTSEC-2026-0282.json"