CVE-2026-23459 Overview
A memory corruption vulnerability has been identified in the Linux kernel's ip_tunnel component, specifically within the iptunnel_xmit_stats() function. The vulnerability stems from an incorrect assumption that tunnels were only using NETDEV_PCPU_STAT_TSTATS, when in fact vxlan/geneve implementations use udp_tunnel[6]_xmit_skb() which call iptunnel_xmit_stats() with NETDEV_PCPU_STAT_DSTATS.
The issue arises because the @syncp offset differs between pcpu_sw_netstats and pcpu_dstats structures. On 32-bit kernels, this mismatch could lead to memory corruptions or system freezes if the syncp sequence was overwritten during tunnel statistics processing.
Critical Impact
32-bit Linux kernel systems utilizing vxlan or geneve tunnels may experience memory corruption or complete system freezes due to improper handling of per-CPU statistics structures.
Affected Products
- Linux kernel (versions with affected ip_tunnel implementation)
- Systems using vxlan tunnel configurations
- Systems using geneve tunnel configurations
Discovery Timeline
- 2026-04-03 - CVE-2026-23459 published to NVD
- 2026-04-07 - Last updated in NVD database
Technical Details for CVE-2026-23459
Vulnerability Analysis
The vulnerability exists in the Linux kernel's network tunneling subsystem, specifically in how iptunnel_xmit_stats() handles per-CPU statistics. The function was designed with the assumption that all tunnel implementations would use NETDEV_PCPU_STAT_TSTATS (standard per-CPU statistics). However, the vxlan and geneve tunnel implementations use udp_tunnel[6]_xmit_skb(), which invoke iptunnel_xmit_stats() with NETDEV_PCPU_STAT_DSTATS (device-specific per-CPU statistics).
The critical issue lies in the different memory layouts of pcpu_sw_netstats and pcpu_dstats structures. The @syncp field (used for synchronization in per-CPU statistics) is located at different offsets in these two structures. When iptunnel_xmit_stats() attempts to access @syncp using the wrong offset calculation, it can overwrite unrelated memory locations.
On 32-bit kernels where synchronization primitives are more sensitive to memory layout, this offset mismatch manifests as either memory corruption (if adjacent data structures are overwritten) or system freezes (if the overwritten data affects lock or synchronization state).
Root Cause
The root cause is a missing compatibility check in iptunnel_xmit_stats() for the pcpu_stat_type field. The blamed commits introduced NETDEV_PCPU_STAT_DSTATS support but failed to update iptunnel_xmit_stats() to properly handle both statistics structure types. The function continued to assume a fixed @syncp offset regardless of the actual statistics structure being used.
Additionally, the pcpu_stat_type field was not positioned optimally in the data structure, potentially causing additional cache line misses when iptunnel_xmit_stats() needed to read it to determine the correct offset.
Attack Vector
While this vulnerability is not easily exploitable remotely, it represents a significant stability and integrity risk for systems running affected kernel versions:
The vulnerability manifests when network traffic is processed through vxlan or geneve tunnels on 32-bit Linux kernels. The memory corruption or freeze condition occurs during the statistics update path when tunnel packets are transmitted. An attacker with the ability to generate or influence tunnel traffic could potentially trigger the corruption condition, though exploitation for code execution would be complex due to the nature of per-CPU statistics handling.
The attack surface is primarily local network configurations using overlay networking technologies common in containerized and virtualized environments.
Detection Methods for CVE-2026-23459
Indicators of Compromise
- Unexpected system freezes on 32-bit Linux systems with active vxlan or geneve tunnels
- Corrupted network statistics counters showing improbable values for tunnel interfaces
- Kernel panic messages referencing iptunnel_xmit_stats or per-CPU statistics functions
- Unexplained lockups during high tunnel throughput periods
Detection Strategies
- Monitor kernel logs for warnings or errors related to ip_tunnel, vxlan, or geneve modules
- Implement watchdog monitoring on systems running 32-bit kernels with tunnel configurations
- Review network statistics counters for anomalous values that could indicate memory corruption
- Deploy kernel debugging tools to capture backtraces if freezes occur
Monitoring Recommendations
- Enable kernel crash dump collection (kdump) to capture diagnostic information during freezes
- Monitor system uptime and stability metrics for 32-bit systems with tunnel configurations
- Set up alerts for sudden network interface statistics anomalies on tunnel interfaces
- Track kernel module loading events for vxlan and geneve to identify potentially affected systems
How to Mitigate CVE-2026-23459
Immediate Actions Required
- Apply the kernel patches from the official Git repository commits immediately
- Consider temporarily disabling vxlan or geneve tunnels on 32-bit systems until patched
- Migrate critical workloads to 64-bit kernel systems where the impact is less severe
- Monitor affected systems closely for signs of instability until patches are applied
Patch Information
The Linux kernel maintainers have released patches to address this vulnerability. The fix adapts iptunnel_xmit_stats() to properly handle both NETDEV_PCPU_STAT_TSTATS and NETDEV_PCPU_STAT_DSTATS by correctly reading the pcpu_stat_type field and calculating the appropriate @syncp offset for each statistics structure type.
The patch also optimizes memory layout by moving pcpu_stat_type closer to dev->{t,d}stats to avoid potential cache line misses during the statistics update path.
Patches are available at:
Workarounds
- Avoid using vxlan or geneve tunnels on 32-bit Linux kernel systems until patches are applied
- Migrate tunnel workloads to 64-bit systems where the syncp offset issue has less severe consequences
- Reduce tunnel traffic throughput to minimize the frequency of statistics updates triggering the vulnerability
- Consider alternative tunneling technologies (e.g., GRE, IPIP) that may not use the affected code path
# Check if your system is running a 32-bit kernel
uname -m
# If output shows i686 or i386, the system is potentially affected
# Check for loaded tunnel modules
lsmod | grep -E "vxlan|geneve"
# Temporarily unload affected modules if not in use
# WARNING: This will disrupt any active tunnel connections
modprobe -r vxlan geneve
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


