← All Advisories

Linux Kernel X.25 Drops the x25_list_lock Before Calling sock_hold During Neighbour Teardown, Allowing a Concurrent Free to Race and Produce a Use-After-Free

Last refreshed2026-09-28

Status: NEW  |  Advisory ID: CVE-2026-68137

Key Details

CVECVE-2026-68137
CVSS Score / Version9.8 (Critical) / CVSS v3.1
Updated2026-08-19
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS Proseattack vector is network; attack complexity is low; privileges required is none; user interaction is none; scope is unchanged; confidentiality impact is high; integrity impact is high; availability impact is high.

What to Know

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

net/x25: fix use-after-free in x25_kill_by_neigh()

x25_kill_by_neigh() walks the global X.25 socket list looking for sockets

attached to a terminating neighbour. x25_list_lock protects list membership

while the lookup is in progress, but it does not pin a socket's lifetime

after the lock is dropped.

The function currently drops x25_list_lock before calling lock_sock(s). A

concurrent close can run x25_release(), remove the same socket from

x25_list, and drop the last socket reference in that window. The neighbour

teardown path can then lock or inspect a freed struct sock/struct x25_sock.

Take sock_hold(s) while x25_list_lock still proves that the list entry is

live, then drop the temporary reference after the socket has been locked,

rechecked, and released. Recheck x25_sk(s)->neighbour after lock_sock(),

because another path may have disconnected the socket before this path

acquired the socket lock. Restart the list walk after each disconnect

because the list lock was dropped and the previous iterator state may no

longer be valid.

A QEMU/KASAN run against origin/master reproduced a slab-use-after-free in

x25_kill_by_neigh(). (NVD)

References

SourceReference
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-68137
CVEhttps://www.cve.org/CVERecord?id=CVE-2026-68137