CVE-2026-23072 Overview
A memory leak vulnerability has been identified in the Linux kernel's L2TP (Layer 2 Tunneling Protocol) subsystem, specifically within the l2tp_udp_encap_recv() function. This vulnerability allows for unreferenced memory objects including struct l2tp_session, l2tp_tunnel, and sock structures to remain allocated without proper cleanup, leading to kernel memory exhaustion over time.
The vulnerability was introduced when protocol version validation was moved to a new location within l2tp_udp_encap_recv(). This code reorganization created a new code path that bypassed the necessary error handling, failing to call l2tp_session_put() and resulting in memory leaks.
Critical Impact
Prolonged exploitation of this memory leak can lead to kernel memory exhaustion, resulting in system instability, performance degradation, and potential denial of service conditions on affected Linux systems utilizing L2TP tunneling.
Affected Products
- Linux kernel versions with L2TP UDP encapsulation support
- Systems utilizing PPPoL2TP connections
- Network infrastructure running vulnerable kernel versions
Discovery Timeline
- 2026-02-04 - CVE CVE-2026-23072 published to NVD
- 2026-02-05 - Last updated in NVD database
Technical Details for CVE-2026-23072
Vulnerability Analysis
This memory leak vulnerability resides in the L2TP networking subsystem of the Linux kernel. The issue was identified by the syzbot automated testing system, which detected unreferenced kernel objects accumulating over time.
The vulnerability occurs in the UDP encapsulation receive path for L2TP packets. When the protocol version validation fails after a session has been allocated, the code fails to properly release the associated session object. This results in 512-byte memory allocations (for l2tp_session structures) that are never freed.
The backtrace from the syzbot report shows the allocation path originating from l2tp_session_create() called during pppol2tp_connect(), which is triggered through the __sys_connect system call. Without proper cleanup on error paths, these allocations persist indefinitely.
Root Cause
The root cause stems from a code refactoring that relocated the protocol version validation check within l2tp_udp_encap_recv(). The original code placement ensured proper cleanup occurred before session allocation, but the new location required additional error handling that was not implemented. Specifically, a call to l2tp_session_put() was missing on the error path, preventing proper reference counting and memory deallocation.
Attack Vector
The attack vector involves sending malformed L2TP packets with invalid protocol versions to a target system. Each malformed packet that triggers the validation failure results in a leaked memory allocation. An attacker with network access can repeatedly send such packets to gradually exhaust kernel memory resources.
The vulnerability can be triggered through:
- Crafted L2TP UDP packets with invalid protocol version fields
- PPPoL2TP connection attempts with malformed protocol data
- Automated fuzzing or flooding attacks targeting L2TP services
Detection Methods for CVE-2026-23072
Indicators of Compromise
- Gradual increase in kernel memory usage without corresponding process activity
- kmemleak reports showing unreferenced l2tp_session objects with backtrace including l2tp_session_create
- System logs indicating memory pressure or OOM (Out of Memory) killer activity
- Unusual L2TP-related network traffic patterns with malformed packets
Detection Strategies
- Enable CONFIG_DEBUG_KMEMLEAK in kernel configuration and monitor for l2tp_session leaks
- Monitor /proc/meminfo for unexplained increases in kernel slab memory (Slab: field)
- Deploy network intrusion detection rules for malformed L2TP packets
- Use SentinelOne Singularity platform for kernel-level behavioral monitoring
Monitoring Recommendations
- Implement continuous monitoring of kernel memory allocations using slab statistics
- Configure alerting thresholds for abnormal memory consumption patterns
- Enable L2TP subsystem tracing with ftrace for detailed debugging when investigating
- Review network traffic logs for sources sending high volumes of L2TP packets
How to Mitigate CVE-2026-23072
Immediate Actions Required
- Apply the kernel patches from the official stable kernel git repository
- Restrict network access to L2TP services to trusted sources only
- Monitor systems for signs of memory exhaustion
- Consider disabling L2TP functionality if not required for operations
Patch Information
The Linux kernel maintainers have released patches to address this vulnerability. The fix adds the missing l2tp_session_put() call to properly release session objects when protocol version validation fails.
Patches are available from the following kernel git commits:
Administrators should update to a patched kernel version as soon as possible through their distribution's package manager or by compiling from source.
Workarounds
- Implement firewall rules to restrict L2TP UDP traffic (port 1701) to authorized sources only
- Disable L2TP kernel modules if the functionality is not required: modprobe -r l2tp_ppp l2tp_eth l2tp_core
- Monitor and restart affected services or systems if memory pressure becomes critical
- Deploy rate limiting for L2TP connections to reduce potential impact
# Configuration example
# Block unauthorized L2TP traffic with iptables
iptables -A INPUT -p udp --dport 1701 -s 0.0.0.0/0 -j DROP
iptables -A INPUT -p udp --dport 1701 -s <trusted_network>/24 -j ACCEPT
# Disable L2TP modules if not needed
echo "blacklist l2tp_ppp" >> /etc/modprobe.d/l2tp-blacklist.conf
echo "blacklist l2tp_eth" >> /etc/modprobe.d/l2tp-blacklist.conf
echo "blacklist l2tp_core" >> /etc/modprobe.d/l2tp-blacklist.conf
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


