RUSTSEC-2026-0253 json
Potential use-after-free due to lack of panic safety in `LruCache::pop()`
published 5mo ago modified 3mo 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
`LruCache::pop()` in `lru` was not panic-safe. If the `Drop` implementation of a stored key panics during `pop()`, `self.detach()` is never called, leaving dangling pointers in the internal doubly-linked list.
A subsequent cache operation that triggers eviction can then dereference these dangling pointers: - The node is freed from the map, but remains linked in the LRU list due to the skipped `detach()` call - When a new insertion causes eviction, the LRU traversal encounters the dangling pointer - This results in a write to already-freed memory during the eviction process
## Impact
- **CWE-416 (Use-After-Free):** memory corruption when subsequent cache operations access freed node pointers in the linked list - **CWE-415 (Double Free):** potential heap corruption when the same memory is freed multiple times
Both types of undefined behavior can be invoked in safe Rust, but only if unwinding panics are enabled and `std::panic::catch_unwind` is used with key types that have potentially-panicking `Drop` implementations.
## Fix
Fixed in `lru` 0.18.2 by detaching the node from the linked list before freeing it and dropping the key ([lru-rs#238](https://github.com/jeromefroe/lru-rs/pull/238)).
Patch / fix
Is RUSTSEC-2026-0253 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 | lru | >=0.0.0-0, <0.18.2 |
0.18.2 |
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.