{"id":15018,"date":"2026-09-04T19:02:22","date_gmt":"2026-09-04T11:02:22","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-64025"},"modified":"2026-09-04T19:02:22","modified_gmt":"2026-09-04T11:02:22","slug":"cve-2026-64025","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-64025","title":{"rendered":"CVE-2026-64025 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nbpf, skmsg: fix verdi"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>bpf, skmsg: fix verdict sk_data_ready racing with ktls rx<\/p>\n<p>sk_psock_strp_data_ready() already checks tls_sw_has_ctx_rx() and<br \/>\ndefers to psock-&gt;saved_data_ready when a TLS RX context is present,<br \/>\navoiding a conflict with the TLS strparser&#8217;s ownership of the receive<br \/>\nqueue (commit e91de6afa81c, &#8220;bpf: Fix running sk_skb program types<br \/>\nwith ktls&#8221;).<\/p>\n<p>sk_psock_verdict_data_ready() has no equivalent guard.  When a socket<br \/>\nis inserted into a sockmap (BPF_SK_SKB_VERDICT) before TLS RX is<br \/>\nconfigured, tls_sw_strparser_arm() saves sk_psock_verdict_data_ready<br \/>\nas rx_ctx-&gt;saved_data_ready.  On data arrival:<\/p>\n<p>  tls_data_ready -&gt; tls_strp_data_ready -&gt; tls_rx_msg_ready<br \/>\n    -&gt; saved_data_ready() = sk_psock_verdict_data_ready()<br \/>\n      -&gt; tcp_read_skb() drains sk_receive_queue via __skb_unlink()<br \/>\n         without calling tcp_eat_skb(), so copied_seq is not advanced.<\/p>\n<p>tls_strp_msg_load() then finds tcp_inq() &gt;= full_len (stale), calls<br \/>\ntcp_recv_skb() on the now-empty queue, hits WARN_ON_ONCE(!first), and<br \/>\nreturns with rx_ctx-&gt;strp.anchor.frag_list pointing at a psock-owned<br \/>\n(potentially freed) skb.  tls_decrypt_sg() subsequently walks that<br \/>\nfrag_list: use-after-free.<\/p>\n<p>Apply the same fix as sk_psock_strp_data_ready(): if a TLS RX context<br \/>\nis present, call psock-&gt;saved_data_ready (sock_def_readable) to wake<br \/>\nrecv() waiters and return immediately, leaving the receive queue<br \/>\nuntouched.  TLS retains sole ownership of the queue and decrypts the<br \/>\nrecord normally through tls_sw_recvmsg().<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>bpf, skmsg: fix verdict sk_data_ready racing with ktls rx<\/p>\n<p>sk_psock_strp_data_ready() already checks tls_sw_has_ctx_rx() and<br \/>\ndefers<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-15018","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/15018","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=15018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}