CVE-2026-89536
nicheUse-After-Free Race Condition in Linux Kernel SUNRPC Client TLS Handshake
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.
| Linux kernel (SUNRPC / RPC-with-TLS client handshake, net/sunrpc) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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 news0 stories
No ingested article mentions this CVE yet.