CVE-2026-74628

CVE-2026-74628

Critical · published August 22, 2026

CVSS v3.1
9.8
EPSS
1%
Percentile
41.9
In the wild
Unconfirmed
What it is

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

net/x25: fix use-after-free of the socket by its timers

The x25 timers are armed with mod_timer() and cancelled with

timer_delete(), so a pending timer holds no reference on the socket and a

cancel does not wait for a callback already running on another CPU.

x25_heartbeat_expiry() also rearms unconditionally, so it can reinstall

sk->sk_timer after __x25_destroy_socket() has passed its cancel point.

The following __sock_put() frees the socket while the timer is still

queued, and the next expiry uses freed memory. KASAN reports a

slab-use-after-free on the kmalloc-2k object freed by close().

timer_delete_sync() cannot be used here: x25_heartbeat_expiry() and

x25_timer_expiry() both reach the cancels from inside the timer they

would wait on, through __x25_destroy_socket() and x25_disconnect().

Arm the timers with sk_reset_timer() and cancel them with sk_stop_timer()

so that an armed timer owns a reference, and release it in both expiry

handlers. Rearm the heartbeat only while sk_hashed(sk) is still true,

since __x25_destroy_socket() unlinks the socket before dropping it. Arm

the deferred destroy timer the same way and drop its reference in

x25_destroy_timer().

Reproduced on net with KASAN, with the heartbeat period shortened so the

window recurs. With this patch the reproducer no longer triggers a

report and /proc/net/x25 drains.

Discovered by XBOW, triaged by Baul Lee <[email protected]>

The record
Technical detail
CVSS v3.1
9.8 · CRITICAL
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00500 · 41.9th percentile
Published
2026-08-22T20:16Z
References (8)
EPSS history
Timeline
  • 22 AUG 15:32Z
    net/x25: fix use-after-free of the socket by its timers
    cvelistv5