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

CVE-2026-23439: Linux Kernel Privilege Escalation Flaw

CVE-2026-23439 is a privilege escalation vulnerability in the Linux Kernel caused by a NULL pointer dereference in udp_tunnel when CONFIG_IPV6 is disabled. This article covers technical details, affected versions, and mitigation.

Updated:

CVE-2026-23439 Overview

CVE-2026-23439 is a NULL pointer dereference vulnerability [CWE-476] in the Linux kernel's udp_tunnel subsystem. When CONFIG_IPV6 is disabled at kernel build time, the udp_sock_create6() function returns 0 (success) without creating a socket. Callers such as fou_create() then dereference the uninitialized socket pointer, triggering a kernel crash. The flaw affects local systems and requires privileged access to invoke the vulnerable netlink path through fou_nl_add_doit. Exploitation results in a denial-of-service condition through kernel panic.

Critical Impact

A local privileged user can crash the Linux kernel by triggering the FOU (Foo-over-UDP) netlink interface on builds where IPv6 support is disabled.

Affected Products

  • Linux Kernel (multiple stable branches, including 3.18 and pre-release 7.0-rc1 through 7.0-rc7)
  • Distributions shipping kernels built with CONFIG_IPV6=n
  • Systems exposing the fou netlink family to privileged userspace

Discovery Timeline

  • 2026-04-03 - CVE-2026-23439 published to NVD
  • 2026-04-23 - Last updated in NVD database

Technical Details for CVE-2026-23439

Vulnerability Analysis

The vulnerability resides in the kernel's UDP tunnel infrastructure used by Foo-over-UDP (FOU) and similar encapsulation features. When the kernel is compiled without IPv6 support, the stub implementation of udp_sock_create6() returns 0, which conventionally signals success in kernel APIs. However, the function does not populate the output socket pointer, leaving it uninitialized.

The captured crash trace shows the dereference occurring at fou_nl_add_doit in net/ipv4/fou_core.c, reached through the generic netlink path genl_rcv_msg → genl_family_rcv_msg_doit. The faulting address 0x18 corresponds to a field offset within the expected struct socket, confirming an uninitialized pointer dereference rather than a wild read.

The fix changes udp_sock_create6() to return -EPFNOSUPPORT when CONFIG_IPV6=n, ensuring callers correctly take their error path instead of proceeding with an invalid socket pointer.

Root Cause

The root cause is an API contract violation in the IPv6-disabled stub of udp_sock_create6(). Returning success without initializing the output parameter allowed callers to assume a valid socket existed. This is a classic NULL pointer dereference [CWE-476] caused by inconsistent error semantics between the real implementation and its compile-time stub.

Attack Vector

Exploitation requires local access with privileges sufficient to send netlink messages on the fou generic netlink family, typically CAP_NET_ADMIN. An attacker sends a crafted netlink FOU_CMD_ADD request specifying IPv6 socket creation. The kernel calls into fou_create(), which calls udp_sock_create6(), receives a misleading success code, and dereferences the uninitialized pointer. The result is a kernel oops and denial of service. The vulnerability cannot be triggered remotely and does not yield code execution or information disclosure.

No public proof-of-concept exploit is available. The kernel commits that resolve the issue are referenced at git.kernel.org commit dfc96ae0 and related backports.

Detection Methods for CVE-2026-23439

Indicators of Compromise

  • Kernel oops messages referencing fou_nl_add_doit or udp_sock_create6 in dmesg or /var/log/kern.log
  • BUG: kernel NULL pointer dereference, address: 0000000000000018 entries with call traces reaching genl_rcv_msg
  • Unexpected reboots or kernel panics correlated with netlink activity from privileged processes

Detection Strategies

  • Inventory running kernels and identify builds where CONFIG_IPV6 is disabled, focusing on minimal or embedded images
  • Audit which processes hold CAP_NET_ADMIN and can issue generic netlink commands to the fou family
  • Review crash dumps and kdump output for stack traces matching the published call chain

Monitoring Recommendations

  • Forward kernel logs to a centralized SIEM or data lake and alert on NULL pointer dereference events involving network subsystem symbols
  • Track netlink socket usage by non-system processes through auditd rules on socket() syscalls with AF_NETLINK
  • Monitor host availability metrics for anomalous reboot patterns on systems with custom kernel configurations

How to Mitigate CVE-2026-23439

Immediate Actions Required

  • Apply the upstream Linux kernel patches listed in the vendor advisory and reboot affected hosts
  • Restrict CAP_NET_ADMIN to trusted administrative accounts and remove it from container workloads that do not require it
  • For systems that cannot be patched promptly, rebuild the kernel with CONFIG_IPV6=y or CONFIG_IPV6=m to bypass the vulnerable stub

Patch Information

The Linux kernel maintainers released fixes across multiple stable branches. The change replaces the success return value in the IPv6-disabled stub with -EPFNOSUPPORT, forcing callers down their error path. Patch commits are available at kernel.org commit dfc96ae0, commit 003343985f26, commit 12aa4b73a67d, and additional backports referenced in the NVD entry.

Workarounds

  • Unload or blacklist the fou kernel module on systems that do not require Foo-over-UDP encapsulation using echo "blacklist fou" > /etc/modprobe.d/fou.conf
  • Use seccomp or Linux Security Modules to block netlink commands targeting the fou family from untrusted processes
  • Enable IPv6 support in the kernel build configuration to route execution through the functional udp_sock_create6() implementation
bash
# Configuration example: blacklist the fou module and verify
echo "blacklist fou" | sudo tee /etc/modprobe.d/disable-fou.conf
sudo rmmod fou 2>/dev/null || true
lsmod | grep -E "^fou\b" && echo "fou still loaded" || echo "fou not loaded"

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

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.