Skip to main content

Linux Kernel CVE-2026-63979

| EUVDEUVD-2026-45752 CRITICAL
2026-07-19 Linux GHSA-52c3-j5qj-8hpp
Critical
Disputed · 9.8 Vendor: Linux
Share

Severity by source

Sources disagree (Medium–Critical)
Vendor (Linux) PRIMARY
9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
4.7 MEDIUM

Local, timing-dependent race in the handshake upcall path requires a cooperating handshake consumer (AV:L/AC:H/PR:L); realistic outcome is a kernel crash, so A:H with no confidentiality/integrity impact.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
CRITICAL
qualitative
Red Hat
7.0 MEDIUM
qualitative

vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.

CVSS VectorVendor: Linux

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

4
Analysis Generated
Jul 20, 2026 - 16:39 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
9.8 (CRITICAL)
CVE Published
Jul 19, 2026 - 14:56 cve.org
CRITICAL 9.8
CVE Published
Jul 19, 2026 - 14:56 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

net/handshake: hand off the pinned file reference to accept_doit

handshake_req_next() removes the request from the per-net pending list and drops hn_lock before handshake_nl_accept_doit() reads req->hr_sk->sk_socket and dereferences sock->file (once in FD_PREPARE() and again in get_file()). In that window a consumer running tls_handshake_cancel() followed by sockfd_put() (svc_sock_free) or __fput_sync() (xs_reset_transport) releases sock->file. sock_release() then runs sock_orphan(), zeroing sk_socket, and frees the struct socket. The accept-side code either reads NULL through sk_socket or chases freed memory.

The submit-side sock_hold() does not prevent this. sk_refcnt protects struct sock, but struct socket and sock->file are independently refcounted via the file descriptor the consumer owns. Pinning sk leaves sock and sock->file unprotected.

Retarget the accept-side dereferences at req->hr_file, which was pinned at submit time, instead of req->hr_sk->sk_socket->file. Pinning on its own is not sufficient: a consumer that cancels between handshake_req_next() returning and accept_doit reaching FD_PREPARE() takes the !remove_pending() branch in handshake_req_cancel() and drops hr_file before the accept side takes its own reference. Hand off an additional file reference inside handshake_req_next(), under hn_lock, so the accept side operates on a reference that no concurrent handshake_req_cancel() can revoke. FD_PREPARE() consumes that handed-off reference, either by transferring it to the new fd in fd_publish() or by dropping it in the cleanup destructor on error; the explicit get_file() that previously balanced FD_PREPARE() is therefore redundant and goes away.

Update handshake_req_cancel_test2 and _test3 to simulate the FD_PREPARE() consumption with an fput() so the kunit file-count assertions stay balanced.

AnalysisAI

Use-after-free in the Linux kernel net/handshake subsystem (kernel 6.4 through the fixed 7.x builds) lets a concurrent handshake consumer free a struct socket and its backing file while the netlink accept path (handshake_nl_accept_doit) is dereferencing them, producing a NULL pointer read or freed-memory access. The flaw is a race between handshake_req_next() dropping hn_lock and the accept side reaching FD_PREPARE(), during which tls_handshake_cancel() plus sockfd_put()/__fput_sync() can release the object. No CISA KEV listing and no public exploit identified at time of analysis; EPSS is low at 0.19% (9th percentile) and the tags classify the practical impact as Denial of Service.

Technical ContextAI

The affected code is the kernel handshake upcall framework (net/handshake), which brokers TLS/kTLS handshakes between in-kernel consumers (SunRPC/NFS via svc_sock, xprtrdma/xs transports) and a userspace agent over a generic netlink family. The root cause is a lifetime/refcounting mismatch (CWE-416 use-after-free, class not populated in the feed): the submit side calls sock_hold(), which pins struct sock via sk_refcnt, but struct socket and sock->file are independently refcounted through the file descriptor the consumer owns. When a consumer cancels a handshake and runs sock_release()/sock_orphan(), sk_socket is zeroed and the struct socket freed even though the pinned sk survives, so the accept side that reads req->hr_sk->sk_socket->file is left dereferencing NULL or freed memory. The fix retargets the accept-side dereference at req->hr_file (pinned at submit time) and hands off an extra file reference inside handshake_req_next() under hn_lock so a racing handshake_req_cancel() cannot revoke it. CPE data is generic (cpe:2.3:a:linux:linux:*), consistent with a whole-kernel subsystem rather than a specific driver.

RemediationAI

Upstream fix available (stable commits c06876d4fac38f35820946ee3b1be7d7da799cd4 and f4251190e58b209999c1ba9e6d2976136a1be055 at git.kernel.org); update to a stable kernel that includes them (EUVD cites fixed levels 7.0.12 and 7.1) or apply your distribution's backported kernel package once released. Because the fix is delivered as stable commits rather than a single tagged release for every branch, confirm the exact patched build with your distribution's security tracker. If immediate patching is not possible, the practical compensating control is to avoid the vulnerable code path: do not run a userspace TLS handshake agent (e.g. tlshd) and do not enable kTLS handshake upcalls for NFS/SunRPC transports on exposed hosts, accepting that this disables kernel-brokered TLS handshakes for those services. Restrict which local principals can drive the handshake netlink family, since triggering the race requires local interaction with that interface. References: https://git.kernel.org/stable/c/c06876d4fac38f35820946ee3b1be7d7da799cd4 and https://git.kernel.org/stable/c/f4251190e58b209999c1ba9e6d2976136a1be055.

Vendor StatusVendor

SUSE

Severity: Critical
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-63979 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy