CVE-2026-64523

net/handshake: Take a long-lived file reference at submit

State
Published
Severity
9.8 Critical
Published
Jul 25, 2026
Updated
Oct 21, 2026
Reserved
Jul 19, 2026

Read the record on cve.org

Description

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

net/handshake: Take a long-lived file reference at submit

handshake_nl_accept_doit() needs the file pointer backing req->hr_sk->sk_socket to survive the window between handshake_req_next() and the subsequent FD_PREPARE() and get_file(). The submit-side sock_hold() does not provide that. sk_refcnt keeps struct sock alive, but struct socket is owned by sock->file: when the consumer fputs the last file reference, sock_release() tears the socket down regardless of any sock_hold.

Add an hr_file pointer to struct handshake_req and acquire an explicit reference on sock->file during handshake_req_submit(). handshake_complete() and handshake_req_cancel() release the reference on the completion-bit-winning path.

The submit error path must also release the file reference, but after rhashtable insertion a concurrent handshake_req_cancel() can discover the request and race the error path. Gate the error-path cleanup -- sk_destruct restoration, fput, and request destruction -- with test_and_set_bit(HANDSHAKE_F_REQ_COMPLETED), the same serialization handshake_complete() and handshake_req_cancel() already use. When cancel has already claimed ownership, the submit error path returns without touching the request; socket teardown handles final destruction.

The accept-side dereferences are not yet retargeted; that change comes in the next patch.

Scores

CVSSScoreVectorSource
3.19.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • 3b3009ea8abb713b022d94fba95ec270cf6e7eae to before 22e371a93563c30ebebc576db049785e0d7fc617Affected
  • 3b3009ea8abb713b022d94fba95ec270cf6e7eae to before 685b10dd0e32c7782cead16c8cf055c609678583Affected
  • 3b3009ea8abb713b022d94fba95ec270cf6e7eae to before b913801ad9b9a51437d84d030ec6843e08976bd6Affected
  • 3b3009ea8abb713b022d94fba95ec270cf6e7eae to before 16eaba5aa89c04eea125905bb8f988c1897f4f29Affected
  • 3b3009ea8abb713b022d94fba95ec270cf6e7eae to before 09dba37eee70d0596e26645015f1aa95a9848e9dAffected
LinuxLinux
  • 6.4Affected
  • before 6.4Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.12.93 through 6.12.*Not affected
  • 6.18.44 through 6.18.*Not affected
  • 7.0.12 through 7.0.*Not affected
  • 7.1 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.