
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-68398 is a use-after-free (UAF) vulnerability in the Linux kernel's PPPoL2TP (PPP over L2TP) module, specifically in the channel free operation during socket teardown. The flaw allows an unprivileged local user to trigger a race condition between packet reception and socket closure, potentially leading to kernel memory corruption or arbitrary code execution in kernel context. It was published on August 10, 2026, and affects Linux kernel versions from approximately 4.15 through multiple stable branches up to 6.18.x and 7.1.x. Fixed versions include 6.6.148, 6.12.101, 6.18.42, 7.1.6, and 7.2-rc4. The CVSS category is estimated as Medium (GitHub Advisory, Feedly).
The root cause is a use-after-free (CWE-416) in ppp_release_channel(), which performs a plain kfree() on the internal struct channel (pch) without an RCU grace period under certain teardown conditions. Specifically, when a PPPoL2TP channel is bound via PPPIOCGCHAN but not attached to a PPP unit (pch->ppp == NULL) and not bridged, the teardown path skips both synchronize_net() (from ppp_disconnect_channel()) and synchronize_rcu() (from ppp_unbridge_channels()). Meanwhile, pppol2tp_recv() runs in the L2TP UDP softirq RX path under rcu_read_lock() holding only an l2tp_session reference — it takes no reference on the internal PPP channel that ppp_input() dereferences. This creates a race where an in-flight ppp_input() on one CPU can dereference the channel freed by close() on another CPU. The fix defers the channel free to an RCU callback via call_rcu(), ensuring a grace period fences any in-flight ppp_input() calls (GitHub Advisory).
Successful exploitation allows an unprivileged local user to read or write arbitrary kernel memory and potentially execute arbitrary code in kernel context by triggering the race condition between socket closure and in-flight packet reception. This can result in full kernel compromise, privilege escalation to root, system crashes (kernel panic), or persistent backdoor installation. The vulnerability's local nature limits its direct remote exploitability, but it could be chained with other vulnerabilities for lateral movement or container escape in multi-tenant environments (GitHub Advisory, Feedly).
As of the disclosure date (August 10, 2026), there is no public proof-of-concept exploit and no evidence of in-the-wild exploitation. The vulnerability is reachable by an unprivileged user, lowering the barrier to exploitation, but successful exploitation requires triggering a precise race condition between concurrent CPU operations. No threat actor attribution has been reported, and the CVE is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. The EPSS score has not been published at this time (GitHub Advisory, Feedly).
pppol2tp and ppp_generic kernel modules loaded or loadable by an unprivileged user.struct channel allocation.PPPIOCGCHAN ioctl to bind the channel, but deliberately skip PPPIOCCONNECT so that pch->ppp == NULL and the channel is not bridged — this ensures the teardown path will skip RCU synchronization.close() on the data socket to trigger pppol2tp_release() → ppp_unregister_channel() → ppp_release_channel() → kfree(pch). Simultaneously, on another thread/CPU, arrange for incoming L2TP UDP packets to drive pppol2tp_recv() → ppp_input() which dereferences the now-freed pch.dmesg) showing use-after-free or general protection fault (GPF) messages referencing ppp_input, pppol2tp_recv, or ppp_release_channel; KASAN (Kernel Address Sanitizer) reports indicating UAF in ppp_generic or pppol2tp modules./proc/<pid>/net/pppol2tp entries) without corresponding VPN or tunneling services; processes issuing PPPIOCGCHAN ioctl without subsequent PPPIOCCONNECT./tmp or world-writable directories created by previously unprivileged processes following kernel exploitation.Apply the kernel patch that defers ppp_release_channel() to use call_rcu() instead of a plain kfree(). Fixed kernel versions include 6.6.148, 6.12.101, 6.18.42, 7.1.6, and 7.2-rc4; users should upgrade to the appropriate patched stable release for their branch. As a workaround where patching is not immediately possible, restrict unprivileged access to PPPoL2TP socket creation using seccomp, AppArmor, or SELinux policies, or unload the pppol2tp kernel module if L2TP tunneling is not required (GitHub Advisory).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."