RUSTSEC-2026-0142

Source
https://rustsec.org/advisories/RUSTSEC-2026-0142
Import Source
https://github.com/rustsec/advisory-db/blob/osv/crates/RUSTSEC-2026-0142.json
JSON Data
https://api.osv.dev/v1/vulns/RUSTSEC-2026-0142
Published
2026-05-14T12:00:00Z
Modified
2026-05-14T21:30:06.319627Z
Summary
Double-free in `vmem` storage reachable from safe Rust (predecessor of `oneringbuf`)
Details

mutringbuf is the archived predecessor of oneringbuf — the crate was renamed and the GitHub repository was archived on 2025-11-20. All released versions up to 1.0.0 carry the same vmem-feature double-free bug that affects oneringbuf, with the same code paths and the same reproduction shape.

When the vmem feature is enabled, VmemStorage<T>::new(Box<[UnsafeSyncCell<T>]>) (and every public constructor that funnels through it) bit-copies the input buffer into a freshly mmap'd region with ptr::copy_nonoverlapping, then lets the source Box<[UnsafeSyncCell<T>]> drop normally. Because UnsafeSyncCell<T> has a Drop impl that runs assume_init_drop on its inner MaybeUninit<T>, the source-side T values are dropped at the end of new, while bitwise duplicates remain inside the mmap region. The ring-buffer destructor then runs UnsafeSyncCell::drop a second time on every cell — a deterministic double-free of every heap-owning element. Reachable from 100% safe Rust.

Trigger

let v: Vec<Vec<u32>> = (0..1024).map(|i| vec![i, i+1, i+2]).collect();
let rb: mutringbuf::SharedVmemRB<Vec<u32>> = mutringbuf::SharedVmemRB::from(v);
drop(rb);
// glibc: free(): double free detected in tcache 2 -> abort

Fix

mutringbuf is no longer maintained. The author renamed the crate to oneringbuf and shipped the fix as oneringbuf 0.7.1 (upstream PR skilvingr/rust-oneringbuf#3). All mutringbuf versions have been yanked from crates.io. Users should migrate to oneringbuf >= 0.7.1.

See the parallel advisory for the oneringbuf crate for the full technical write-up of the bug.

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

Affected packages

crates.io / mutringbuf

Package

Affected ranges

Type
SEMVER
Events
Introduced
0.0.0-0

Ecosystem specific

{
    "affects": {
        "os": [],
        "arch": [],
        "functions": [
            "mutringbuf::VmemStorage::new"
        ]
    },
    "affected_functions": null
}

Database specific

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