{"id":7079,"date":"2026-09-04T18:49:24","date_gmt":"2026-09-04T10:49:24","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72422"},"modified":"2026-09-04T18:49:24","modified_gmt":"2026-09-04T10:49:24","slug":"cve-2026-72422","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72422","title":{"rendered":"CVE-2026-72422 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: fix use-after-"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ksmbd: fix use-after-free of conn-&gt;preauth_info in concurrent SMB2 NEGOTIATE<\/p>\n<p>conn-&gt;preauth_info is shared connection state (struct<br \/>\npreauth_integrity_info, kmalloc-96) that is allocated and freed by the<br \/>\nSMB2 NEGOTIATE handler and read by the response send path.<\/p>\n<p>smb2_handle_negotiate() allocates conn-&gt;preauth_info, and on a<br \/>\ndeassemble_neg_contexts() failure kfrees it and sets it to NULL. Both the<br \/>\nallocation and the free\/NULL happen under ksmbd_conn_lock(conn) (the<br \/>\nconnection srv_mutex), which is held across the whole handler body.<\/p>\n<p>The response send path smb3_preauth_hash_rsp(), called from the send:<br \/>\nblock of __handle_ksmbd_work(), reads conn-&gt;preauth_info and dereferences<br \/>\nconn-&gt;preauth_info-&gt;Preauth_HashValue (via<br \/>\nksmbd_gen_preauth_integrity_hash()) without taking conn_lock. When a<br \/>\nclient drives two SMB2 NEGOTIATE requests on the same connection, one<br \/>\nworker can free conn-&gt;preauth_info on the failing-negotiate path while a<br \/>\nconcurrent send-path worker is reading it, producing a slab<br \/>\nuse-after-free read (KASAN-confirmed).<\/p>\n<p>The send-path read tested conn-&gt;preauth_info for NULL but raced with the<br \/>\nfree that occurs between the NULL check and the dereference, so the NULL<br \/>\nguard alone does not close the window.<\/p>\n<p>Serialize the NEGOTIATE-branch read in smb3_preauth_hash_rsp() under<br \/>\nksmbd_conn_lock(conn) and re-check conn-&gt;preauth_info inside the lock.<br \/>\nBecause the negotiate handler holds conn_lock across its kfree + NULL<br \/>\nassignment, a reader that also takes conn_lock either runs fully before<br \/>\nthe allocation or fully after the NULL store, and can never observe the<br \/>\nfreed-but-not-yet-NULLed pointer. ksmbd_gen_preauth_integrity_hash()<br \/>\ntakes no locks itself (it only computes a SHA-512 over the buffer), so<br \/>\nno lock-ordering inversion is introduced, and conn_lock is a sleepable<br \/>\nmutex which is safe on this send path (it already performs network I\/O).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ksmbd: fix use-after-free of conn-&gt;preauth_info in concurrent SMB2 NEGOTIATE<\/p>\n<p>conn-&gt;preauth_info is shared connection state (struct<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-7079","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/7079","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7079"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7079"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}