CVE-2026-53262CWE-416

CVE-2026-53262

High · published June 25, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
1.7
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

l2tp: pppol2tp: hold reference to session in pppol2tp_ioctl()

pppol2tp_ioctl() read sock->sk->sk_user_data directly without any

locks or reference counting. If a controllable sleep was induced during

copy_from_user() (e.g. via a userfaultfd page fault sleep), a concurrent

socket close could trigger pppol2tp_session_close() asynchronously. This

frees the l2tp_session structure via the l2tp_session_del_work workqueue.

Upon resuming, the ioctl thread dereferences the stale session pointer,

resulting in a Use-After-Free (UAF).

Fix this by securely fetching the session reference using the RCU-safe,

refcounted helper pppol2tp_sock_to_session(sk) on entry. This locks the

session's refcount across the sleep. We structured the function to exit

via standard err breaks, guaranteeing that l2tp_session_put() is cleanly

called on all return paths to drop the reference.

To preserve existing behavior we validate the session and its magic

signature only for the specific L2TP commands that require it. This

ensures that generic/unknown ioctls called on an unconnected socket

still return -ENOIOCTLCMD and correctly fall back to generic handlers

(e.g. in sock_do_ioctl()).

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00119 · 1.7th percentile
Weakness
CWE-416 · Use After Free
Published
2026-06-25T13:16Z
Affected products (9)
ProductVersionsFixed in
linux/linux_kernel≥ 2.6.35, < 6.12.946.12.94
linux/linux_kernel≥ 6.13, < 6.18.366.18.36
linux/linux_kernel≥ 6.19, < 7.0.137.0.13
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (5)
EPSS history
Timeline
  • 25 JUN 08:39Z
    l2tp: pppol2tp: hold reference to session in pppol2tp_ioctl()
    cvelistv5