ZeroHour

CVE-2026-89548

mass

Use-After-Free in Linux Kernel SUNRPC Cache Teardown

CVSS 3.1
7.8 high
EPSS
Published
()
Modified
AI analysis

A use-after-free exists in the Linux kernel's SUNRPC subsystem, in sunrpc_destroy_cache_detail(), because the routine only cancels the global cache_cleaner delayed work when cache_list is empty — a condition never met during per-network-namespace teardown since init_net's caches remain registered. After the cache_detail is unlinked and subsequently freed by cache_destroy_net(), an in-flight cache_clean() can still hold a dangling pointer, causing cache_dequeue() to take cd->queue_lock on freed memory and cache_put() to dereference a function pointer from freed slab. The bug is triggered when a network namespace using SUNRPC caches (for example on NFS/RPC-enabled systems, notably container hosts) is torn down while the cleaner work is pending or running, and a local low-privileged attacker who can influence that timing could gain kernel-level code execution or crash the host, with CVSS 3.1 rating 7.8 (high; AV:L/AC:L/PR:L, high impact on confidentiality, integrity, and availability). Any Linux system running a kernel with the unfixed code and using per-netns SUNRPC caches is affected. No public proof of concept is known and the issue is not listed in CISA's KEV, so exploitation status is none known.

What to do: Apply your distribution's kernel update once it ships the fix (the patch making cancel_delayed_work_sync() unconditional in sunrpc_destroy_cache_detail()) and reboot into the patched kernel. Prioritize multi-tenant container and NFS-serving hosts, since network namespace teardown is the trigger path and a successful exploit yields kernel-level privileges. In the interim, restrict local untrusted user access and monitor for crashes or anomalies in RPC/cache kernel threads during container or netns teardown.

Affected
Linux kernel (SUNRPC cache subsystem)
Estimated exposure
masspotentially billions of devices (Linux kernel is deployed on the majority of servers, Android handsets, and embedded systems that include the SUNRPC code) — Exposure is inferred from the Linux kernel's near-ubiquitous deployment across servers, mobile, and embedded platforms rather than from version-specific install counts, since the source data does not enumerate fixed versions; practical…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: SUNRPC: always drain cache_cleaner before destroying a cache_detail sunrpc_destroy_cache_detail() only cancels the global cache_cleaner delayed_work when cache_list is empty. During per-netns teardown cache_list is never empty because init_net's caches remain registered, so the cancel never fires. After unlink, the caller proceeds to cache_destroy_net() which kfrees the cache_detail while cache_clean() may still hold a dangling pointer to it. The result is a use-after-free: cache_dequeue() takes cd->queue_lock on freed memory, and cache_put() dereferences cd->cache_put as a function pointer from freed slab. Drop the list_empty guard so that cancel_delayed_work_sync() always runs, ensuring any in-flight cache_clean() completes before the cache_detail is freed. Re-arm the cleaner afterwards if other caches are still registered.

Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.