Cloudanix VulnDB

CVE-2026-89548

High · 7.8

CVSS

7.8

EPSS

0.1%

Published

Sep 11, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in Linux kernel networking code can let someone who already has access to the computer crash it or take full control.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Low
Impact
Full Compromise
Component
OS kernel
Class
Use After Free
Remediation
Patch
Effort
Medium
Patch risk
Low

What it actually does

Use-after-free in SUNRPC cache teardown: sunrpc_destroy_cache_detail skips cancel_delayed_work_sync when cache_list is non-empty (as occurs during netns destruction), allowing cache_clean to dereference a freed cache_detail via queue_lock and cache_put function pointer.

Why it matters to the business

Local attackers on Linux systems can trigger kernel memory corruption, leading to crashes, denial of service, or potential privilege escalation; widespread impact due to presence in core networking stack across distributions.

How an attack unfolds

An attacker with local access triggers per-network-namespace teardown (e.g., via container shutdown or network namespace deletion), races the delayed cache_clean work against the freed cache_detail, and leverages the dangling pointers for arbitrary read/write or code execution within the kernel.

How to fix it

Apply the upstream fix that removes the list_empty guard around cancel_delayed_work_sync so the cleaner is always drained before cache_detail destruction; rebuild and deploy updated kernel packages containing this change.

How to confirm the fix worked

Confirm the patch is present by inspecting the sunrpc_destroy_cache_detail function for unconditional cancel_delayed_work_sync; test by exercising repeated netns creation/teardown under load and verify absence of slab UAF warnings in dmesg or kmemleak.

Typical attack path

  1. Obtain local code execution on a Linux host
  2. Create or destroy network namespaces to initiate per-netns SUNRPC cache teardown
  3. Race the cache_clean delayed work against sunrpc_destroy_cache_detail freeing the object
  4. Use resulting dangling pointers in cache_dequeue or cache_put for memory corruption
  5. Escalate to kernel code execution or cause denial of service

How to detect it

Review kernel logs (dmesg, journalctl) for slab use-after-free warnings referencing cache_detail, queue_lock, or cache_put during network namespace teardown; correlate with container or netns lifecycle events in audit logs.

  • cache_detail
  • cache_clean
  • sunrpc_destroy_cache_detail
  • cache_dequeue

What your security team should do

  • Prioritize kernel updates on all Linux systems exposed to untrusted local workloads or containers
  • Monitor for kernel oops or slab corruption logs during namespace lifecycle events
  • Restrict unprivileged namespace creation via kernel.unprivileged_userns_clone or similar controls until patched

The record

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.

Affected packages

Ecosystem Package Introduced Fixed