Every CVE Search/ Get API key

RUSTSEC-2026-0253

Potential use-after-free due to lack of panic safety in `LruCache::pop()`

No scoreFix available

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).

What each source reports

OSV No score

Potential use-after-free due to lack of panic safety in `LruCache::pop()`

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).

Record
RUSTSEC-2026-0253
Updated
2026-11-02

Affected packages

Affected packages
PackageAffectedFixed
lru
crates.io
0.0.0-0 up to 0.18.2
0.18.2

History

History
RecordedChangedSources
first indexedOSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

RUSTSEC-2026-0253 is a vulnerability with no CVSS score yet in lru, published May 12, 2026. No source lists public exploit code. Fixed in lru 0.18.2.

References

MoveEnter Open