CVE-2026-23439 Overview
CVE-2026-23439 is a Null Pointer Dereference vulnerability in the Linux kernel's UDP tunnel subsystem. When CONFIG_IPV6 is disabled during kernel compilation, the udp_sock_create6() function incorrectly returns 0 (success) without actually creating a socket. This causes calling functions such as fou_create() to dereference an uninitialized socket pointer, resulting in a kernel NULL pointer dereference crash.
Critical Impact
This vulnerability can cause kernel crashes and system instability when privileged users attempt to create IPv6 UDP tunnels on systems compiled without IPv6 support.
Affected Products
- Linux kernel with CONFIG_IPV6=n (IPv6 support disabled)
- Systems using FOU (Foo-over-UDP) tunneling functionality
- Linux kernel builds with UDP tunnel modules enabled but IPv6 disabled
Discovery Timeline
- 2026-04-03 - CVE CVE-2026-23439 published to NVD
- 2026-04-07 - Last updated in NVD database
Technical Details for CVE-2026-23439
Vulnerability Analysis
This vulnerability stems from improper error handling in the Linux kernel's UDP tunnel creation code path. When the kernel is compiled without IPv6 support (CONFIG_IPV6=n), the udp_sock_create6() function returns a success code (0) despite failing to create an actual socket structure. The calling function fou_create() in net/ipv4/fou_core.c does not receive an error indication and proceeds to use the uninitialized socket pointer, leading to a NULL pointer dereference at memory address 0x0000000000000018.
The crash trace shows the fault occurring in fou_nl_add_doit() at line 590/764 of net/ipv4/fou_core.c, triggered through the generic netlink interface. The call chain progresses from user space through __sys_sendto → netlink_sendmsg → netlink_unicast → genl_rcv → genl_rcv_msg → fou_nl_add_doit, ultimately dereferencing the NULL socket pointer.
While the vulnerability requires privileged user access to trigger (only privileged users can interact with the affected netlink interface), it can still cause denial of service conditions through kernel crashes on affected systems.
Root Cause
The root cause is incorrect return value semantics in udp_sock_create6() when IPv6 support is disabled at compile time. The function returns 0 (indicating success) instead of an appropriate error code like -EPFNOSUPPORT (Protocol Family Not Supported). This misleads callers into believing a socket was successfully created when none was allocated, resulting in subsequent NULL pointer dereference when the non-existent socket is accessed.
Attack Vector
The vulnerability is triggered through the generic netlink interface, specifically via the FOU (Foo-over-UDP) netlink family. An attacker with sufficient privileges can send a netlink message requesting creation of an IPv6 UDP tunnel on a system where IPv6 support was disabled during kernel compilation. The kernel attempts to create the tunnel, calls udp_sock_create6(), receives a false success indication, and crashes when dereferencing the NULL socket pointer.
The attack requires local access and elevated privileges, as the generic netlink interface for FOU tunnel management is restricted to privileged users.
Detection Methods for CVE-2026-23439
Indicators of Compromise
- Kernel panic or oops messages containing BUG: kernel NULL pointer dereference at address 0x0000000000000018
- Stack traces showing fou_nl_add_doit in the call trace
- Crash dumps indicating failures in net/ipv4/fou_core.c
- System logs showing unexpected kernel crashes during FOU tunnel creation operations
Detection Strategies
- Monitor kernel logs (dmesg, /var/log/kern.log) for NULL pointer dereference errors in networking subsystem
- Implement kernel crash monitoring with tools like kdump or crash to capture and analyze kernel panics
- Deploy eBPF-based monitoring to track netlink message flows to the FOU generic netlink family
- Use SentinelOne's kernel integrity monitoring to detect unusual kernel crash patterns
Monitoring Recommendations
- Enable persistent kernel logging to capture crash events before system reboot
- Configure kernel crash dump collection (kdump) to enable post-mortem analysis
- Monitor systems for repeated unplanned reboots that may indicate exploitation attempts
- Audit usage of FOU tunnel creation commands and netlink operations
How to Mitigate CVE-2026-23439
Immediate Actions Required
- Update the Linux kernel to a patched version containing the fix
- Review kernel configuration to verify CONFIG_IPV6 settings match operational requirements
- If IPv6 is not required, ensure FOU/UDP tunnel IPv6 functionality is not being called
- Monitor system logs for signs of exploitation attempts
Patch Information
The Linux kernel developers have released patches that modify udp_sock_create6() to return -EPFNOSUPPORT instead of 0 when CONFIG_IPV6 is disabled. This ensures callers properly take their error paths rather than proceeding with a NULL socket pointer.
Patches are available through the official kernel git repository:
- Kernel Git Commit 003343985f26
- Kernel Git Commit 12aa4b73a67d
- Kernel Git Commit 9f036aa0fe46
- Kernel Git Commit a05a2149386f
- Kernel Git Commit b3a6df291fec
- Kernel Git Commit ba7c9ddcdd07
Workarounds
- If IPv6 functionality is not needed, avoid using FOU tunnel operations that request IPv6 address families
- Restrict access to netlink interfaces to only essential administrative users
- Consider enabling CONFIG_IPV6 in kernel configuration if FOU IPv6 tunnels are required
- Deploy kernel live patching solutions where available to apply fixes without reboot
# Check current kernel configuration for IPv6 support
zcat /proc/config.gz | grep CONFIG_IPV6
# or
grep CONFIG_IPV6 /boot/config-$(uname -r)
# Verify kernel version and check if patched
uname -r
# Monitor for NULL pointer dereference events
dmesg | grep -i "null pointer"
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


