KernelScan.io

HIGH Public PoC

af_unix SCCEntry UAF

CVE-2026-80521

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI7.3HIGH

01

In the Linux kernel, the following vulnerability has been resolved: af_unix: Unlink scc_entry in unix_del_edge(). Kyle Zeng reported that GC could free a dead SCC partially. The scenario is as follows: 1) Create two SCCs: X -. A <-> B ^--' 2) Run the following concurrently: 2-1) send() sk-B to sk-B from sk-X 2-2) close() both A and B At 2-1), there is a small window where unix_add_edges() publishes a new edge (B <-> B) to GC but its skb is not queued by skb_queue_tail(). If 2-2) completes before skb_queue_tail() and GC is triggered, it judges A <-> B as dead, but B is not freed because GC cannot collect the not-yet-queued skb holding the B <-> B edge. X -. A <-> B -. This edge is visible ^--' ^..' but skb is not This itself is not a problem since the next GC run will judge B as dead as well and free it finally. X -. A <.> B -. ^--' ^--' However, X's SCC forces the next GC to call unix_walk_scc_fast(), and it iterates over A through B's scc_entry. Let's unlink scc_entry before freeing the vertex in unix_del_edge().

02

Engine v0.6.0

Risk summary

A race condition in the Unix domain socket garbage collector allows a local unprivileged user to trigger a use-after-free by concurrently sending to and closing sockets. The freed memory can be traversed by a subsequent GC iteration, leading to kernel memory corruption with potential for arbitrary read/write or denial of service. Any system with local user access is at risk.

Affectednet/unix/garbage.c (af_unix GC)

Vulnerability analysis

When concurrent send and close operations occur on Unix domain sockets, a timing window exists where the garbage collector partially frees a dead group of connected sockets while one socket's list link remains in the collector's iteration list. A later garbage-collection pass traverses through that stale link into already-freed memory, causing a use-after-free. The fix removes the socket from the collector's list at the moment it is queued for teardown, so later iterations never reach freed memory. The vulnerability is reachable by any local user through standard Unix domain socket operations without special privileges or hardware.

Exploit availability

KernelScan found public exploit code for this CVE. Open it in the CVE browser to see what we found, where, and how strong the evidence is — that needs a free account with a confirmed email address.

03

BranchIntroducedFixed inPatch commit
6.16.1.1416.1.1892b6c2842692d
6.66.6.936.6.1586fda5c51b8e4
6.12—6.12.1111293fd69a50d
6.18—6.18.53fe198b077864
7.1—7.1.10e3702470ced9
mainline—7.2594d90519502
cip/6.12—6.12.111-cip321293fd69a50d