RUSTSEC-2026-0139 json
Null-pointer dereference and double-free via safe APIs
published 6mo ago modified 5mo ago
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
Two soundness violations exist in the Rust bindings for MetaCall:
**Null-pointer dereference:** `MetaCallFuture::new_raw()` accepts a raw pointer without validation. The `Debug` impl calls `Box::from_raw(self.data)` on it. Passing a null pointer causes the `Debug` impl to construct a `NonNull` from null, producing undefined behavior.
**Double-free:** `MetaCallPointer::clone()` shares the same `rust_value` raw pointer between the clone and the original. Calling `get_value_untyped()` on both clones calls `Box::from_raw` on the same pointer twice, resulting in a double-free.
Both issues can be triggered through safe public APIs — `MetaCallFuture::new_raw()`, `MetaCallPointer::new()`, `clone()`, and `get_value_untyped()` — with no `unsafe` required from the caller.
Is RUSTSEC-2026-0139 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| crates.io | metacall | >=0.0.0-0 |
no fix listed |
References
Sources
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.