← All Advisories
Reported from OT-Advisories.com as of

CVE-2026-72222

Last refreshed2026-10-17

Status: UPDATED  |  Advisory ID: CVE-2026-72222

Key Details

CVECVE-2026-72222
CVSS Score / Version
9.8 (Critical) / CVSS v3.1
Updated2026-10-16
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS Prose
attack 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.
Affected products
Linux Kernel

Affected Products, Subsystems & Sectors

VendorProductAffected VersionsPatch Status
LinuxLinux Kernel
SubsystemsOT Supporting Infrastructure
SectorsAll Sectors

What to Know

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

sunrpc: pin svc_xprt across the asynchronous TLS handshake callback

svc_tcp_handshake() stores the raw svc_xprt pointer in

tls_handshake_args.ta_data and submits the request through

tls_server_hello_x509(). The handshake core takes only

sock_hold(req->hr_sk); nothing references the embedding struct

svc_sock that svc_tcp_handshake_done() reaches via container_of().

Two close races leave the in-flight callback writing through a freed

svc_sock. svc_sock_free() calls tls_handshake_cancel() and discards

its return value: a false return means handshake_complete() has

already set HANDSHAKE_F_REQ_COMPLETED but hp_done() may not have

finished, yet svc_sock_free() proceeds to kfree(svsk). The

cancel-loser fall-through inside svc_tcp_handshake() itself produces

the same window: when wait_for_completion_interruptible_timeout()

returns <= 0 (timeout or signal) and tls_handshake_cancel() returns

false, the function does not drain, returns, and svc_handle_xprt()

calls svc_xprt_received(), which clears XPT_BUSY and can drop the

last reference. A concurrent close then runs svc_sock_free() while

svc_tcp_handshake_done() is still updating xpt_flags and walking

svsk->sk_handshake_done.

The corruption surfaces as set_bit/clear_bit RMW into the freed

xpt_flags slab slot and as complete_all() walking and writing the

freed wait_queue_head_t list embedded in sk_handshake_done -- a

slab-corruption primitive, not a benign read. The path is reachable

on any TLS-enabled NFS server whenever a connection close overlaps

the tlshd downcall delivery window; the interruptible wait means

signal delivery suffices, not just SVC_HANDSHAKE_TO expiry.

Take svc_xprt_get(xprt) immediately before tls_server_hello_x509()

so the in-flight callback owns its own reference. Release it on the

two edges where the callback is guaranteed not to fire -- submission

failure from tls_server_hello_x509() and a successful

tls_handshake_cancel() -- and at the tail of

svc_tcp_handshake_done() after complete_all().

[cel: rewrote commit message to describe the actual change] (NVD)

What to Do

Monitor Linux's web page for any future patch releases.

References

SourceReference
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-72222
CVEhttps://www.cve.org/CVERecord?id=CVE-2026-72222
Report compilation © 2026 OT-Advisories.com  ·  CC BY 4.0  ·  Source materials remain the property of their respective publishers as cited.