ZeroHour

CVE-2026-89536

niche

Use-After-Free Race Condition in Linux Kernel SUNRPC Client TLS Handshake

CVSS 3.1
9.8 critical
EPSS
Published
()
Modified
AI analysis

A race condition in the Linux kernel's SUNRPC client TLS handshake path can cause a use-after-free: when a synchronous handshake (xs_tls_handshake_sync) is aborted by a timeout or signal at the same moment the TLS handshake completes, the cancelling waiter drops a lower-transport reference that is still owned by the in-flight completion callback, freeing the transport while xs_tls_handshake_done() is still using it. The bug is triggered on systems using kernel RPC-with-TLS — for example NFS mounts negotiated with the xprtsec=tls option — when an aborted handshake loses the race against handshake completion. Successful exploitation corrupts kernel memory via a use-after-free, rated CVSS 9.8 with high confidentiality, integrity, and availability impact, which in practice spans kernel crashes (denial of service) up to potential privilege escalation, with an attacker realistically needing the ability to influence handshake timing (e.g., a hostile or degraded network path) against a TLS-enabled RPC/NFS client. Affected systems are any Linux kernels carrying the vulnerable SUNRPC client TLS handshake code and configurations that actually enable RPC-with-TLS. No public proof of concept exists, the flaw is not in CISA's KEV catalog, and no in-the-wild exploitation has been reported.

What to do: Apply kernel updates containing the upstream SUNRPC fix, in which the timeout/signal waiter now waits for handshake_done when cancellation loses the race so the completion callback releases its own reference. Until patched, avoid or restrict xprtsec=tls/tls NFS mounts and other RPC-with-TLS client usage. On TLS-enabled NFS clients, monitor logs for kernel oopses, splats, or slab corruption originating in the xs_tls_handshake paths.

Affected
Linux kernel (SUNRPC / RPC-with-TLS client handshake, net/sunrpc)
Estimated exposure
nichelikely low thousands of systems at most (unknown) — RPC-with-TLS (the xprtsec=tls NFS mount option, which also requires the tlshd userspace handshake daemon) is an opt-in and rarely deployed feature, and no public scans or deployment counts for it exist.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: SUNRPC: wait for in-flight client TLS handshake callback xs_tls_handshake_sync() gives xs_tls_handshake_done() a reference to the lower transport before submitting the handshake request. On timeout or signal, the synchronous waiter drops that reference after calling tls_handshake_cancel(). handshake_req_cancel() returns false when handshake_complete() has already marked the request complete. In that case the completion callback can still be running, so dropping the callback-owned reference in the waiter can free the lower transport before xs_tls_handshake_done() stores xprt_err or drops its own reference. If cancellation loses to completion, wait until xs_tls_handshake_done() signals handshake_done and let the callback release its reference. This mirrors the server-side handshake lifetime handling and keeps the timeout or signal return value unchanged.

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

In the news

No ingested article mentions this CVE yet.