Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-89784

CVE-2026-89784: Linux Kernel SUNRPC Privilege Escalation

CVE-2026-89784 is a privilege escalation vulnerability in the Linux kernel SUNRPC subsystem that causes NULL pointer dereference during RPC service registration. This article covers technical details, impact, and mitigation.

Published:

CVE-2026-89784 Overview

CVE-2026-89784 is a NULL pointer dereference vulnerability in the Linux kernel's SUNRPC subsystem. The flaw resides in rpcb_register_inet4() and rpcb_register_inet6(), which store the return value of rpc_sockaddr2uaddr() into map->r_addr without validating it against NULL. When the internal kstrdup() call inside rpc_sockaddr2uaddr() fails under memory pressure, the unchecked NULL propagates into the synchronous RPCBPROC_SET encode path. The kernel then dereferences the NULL pointer inside strlen() during encode_rpcb_string(), triggering a general protection fault and kernel oops.

Critical Impact

An in-kernel RPC service registration under memory pressure can panic the kernel, resulting in a local denial of service on affected Linux systems running nfsd, lockd, or nfs-callback.

Affected Products

  • Linux kernel (SUNRPC subsystem, net/sunrpc/rpcb_clnt.c)
  • Kernel builds using in-kernel RPC services such as nfsd, lockd, and nfs-callback
  • Confirmed reproducer on Linux kernel v6.12 under failslab and KASAN

Discovery Timeline

  • 2026-09-16 - CVE-2026-89784 published to NVD
  • 2026-09-16 - Last updated in NVD database

Technical Details for CVE-2026-89784

Vulnerability Analysis

The defect lives in the rpcbind client code inside net/sunrpc/rpcb_clnt.c. Both rpcb_register_inet4() and rpcb_register_inet6() call rpc_sockaddr2uaddr() to convert a socket address into a universal address string. The helper returns NULL if its final kstrdup() allocation fails. The register functions store the return value directly into map->r_addr without a NULL check.

The unchecked pointer then flows into rpcb_register_call(), rpc_call_sync(), rpcb_enc_getaddr(), and finally encode_rpcb_string(). The first statement in the encoder is strlen(string), which dereferences the NULL pointer. Under KASAN the fault surfaces as a general protection fault on the shadow of address zero (0xdffffc0000000000), oopsing the kernel.

Root Cause

The root cause is a missing return-value check on a fallible allocation path [CWE-476: NULL Pointer Dereference]. The asynchronous getport path already handles this exact failure mode by returning -ENOMEM, but the two register helpers omit the check. This inconsistency left a code path where a benign allocation failure escalates into a kernel oops.

Attack Vector

The issue is triggered locally when an in-kernel RPC service registers with the local rpcbind daemon under enough memory pressure to fail a small GFP_KERNELkstrdup(). The reachable path passes through svc_register(), svc_setup_socket(), svc_addsock(), and write_ports() in nfsctl_transaction_write(). Exploitation does not require authentication over the network, but it does require conditions that starve the kernel slab allocator during RPC service registration.

The vulnerability is a reliability and availability issue rather than a code-execution primitive. See the upstream fix commit fd22370 for the corrected error handling that returns -ENOMEM before the NULL address reaches the encoder.

Detection Methods for CVE-2026-89784

Indicators of Compromise

  • Kernel oops messages referencing strlen, encode_rpcb_string, or rpcb_enc_getaddr in dmesg or /var/log/kern.log.
  • General protection fault entries with call traces through rpcb_v4_register and svc_register following NFS or lockd service startup.
  • Unexpected restarts of nfsd, lockd, or nfs-callback services correlated with system memory pressure events.

Detection Strategies

  • Monitor kernel ring buffer output for oops signatures matching the SUNRPC call trace documented in the advisory.
  • Correlate NFS server registration failures with slab allocator failures reported through /proc/slabinfo or vmstat.
  • Track kernel version and patch level across the fleet to identify unpatched hosts running NFS or related RPC services.

Monitoring Recommendations

  • Forward kernel logs into a centralized log platform and alert on GPF or oops events involving SUNRPC symbols.
  • Baseline memory pressure metrics on NFS servers and alert when MemAvailable drops to levels where GFP_KERNEL allocations begin to fail.
  • Track uptime and unexpected reboots on hosts exporting NFS shares to identify possible triggered crashes.

How to Mitigate CVE-2026-89784

Immediate Actions Required

  • Apply the upstream Linux kernel patch series that adds the missing NULL check to rpcb_register_inet4() and rpcb_register_inet6().
  • Prioritize patching hosts that run nfsd, lockd, or nfs-callback, especially systems that experience memory pressure.
  • Reboot affected systems after patching to load the corrected kernel image.

Patch Information

The fix mirrors the existing asynchronous getport handling by returning -ENOMEM when rpc_sockaddr2uaddr() returns NULL, before the address is passed to the encoder. Backported fixes are available across multiple stable kernel branches. Reference commits include 04441b7, 12bf3e0, 4a6095d, 4e01022, 5a51c49, cda4aac, eb47628, and fd22370.

Workarounds

  • Reduce the likelihood of allocation failure by provisioning adequate memory and swap on NFS servers.
  • Disable in-kernel RPC services on hosts that do not require them until patches are applied.
  • Restrict administrative access to nfsctl and related interfaces so only trusted operators can trigger RPC service registration.

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.