{"id":5368,"date":"2026-09-04T18:47:47","date_gmt":"2026-09-04T10:47:47","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-68170"},"modified":"2026-09-04T18:47:47","modified_gmt":"2026-09-04T10:47:47","slug":"cve-2026-68170","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-68170","title":{"rendered":"CVE-2026-68170 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nmptcp: fix stale skb-"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>mptcp: fix stale skb-&gt;sk reference on subflow close<\/p>\n<p>The backlog list is updated by mptcp_data_ready() under<br \/>\nmptcp_data_lock(). The cleanup of backlog references to a closing<br \/>\nsubflow, however, was performed in mptcp_close_ssk(), before<br \/>\n__mptcp_close_ssk() acquires the ssk lock, and while holding neither<br \/>\nthe ssk lock nor mptcp_data_lock().<\/p>\n<p>Because that traversal ran without mptcp_data_lock(), concurrent softirq<br \/>\nRX processing on another CPU (subflow_data_ready() -&gt; mptcp_data_ready()<br \/>\n-&gt; __mptcp_add_backlog(), under mptcp_data_lock()) could add a backlog<br \/>\nentry referencing the ssk while the cleanup loop was in progress. Such<br \/>\nan entry could be missed by the cleanup, or the concurrent list update<br \/>\ncould corrupt the traversal, leaving skb-&gt;sk pointing at the ssk after<br \/>\nit is freed.<\/p>\n<p>A later mptcp_backlog_purge() then dereferences the stale pointer,<br \/>\ntriggering a warning in inet_sock_destruct() (ssk-&gt;sk_rmem_alloc != 0)<br \/>\nfollowed by a use-after-free in mptcp_backlog_purge().<\/p>\n<p>Fix this by moving the backlog cleanup into __mptcp_close_ssk(), after<br \/>\nsubflow-&gt;closing is set to 1 and while the ssk lock is still held,<br \/>\nserialized under mptcp_data_lock(). The cleanup runs only on the push<br \/>\npath (MPTCP_CF_PUSH), where backlog references accumulate; on other<br \/>\nteardown paths the caller already handles cleanup.<\/p>\n<p>With subflow-&gt;closing set and mptcp_data_lock() held across the purge,<br \/>\nany concurrent mptcp_data_ready() either completes its enqueue before<br \/>\nthe purge runs and is caught, or observes closing=1 and bails out. Once<br \/>\nmptcp_data_unlock() is reached, no new skb referencing the ssk can be<br \/>\nenqueued, so the cleanup is exhaustive.<\/p>\n<p>Remove the unprotected traversal from mptcp_close_ssk() entirely.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>mptcp: fix stale skb-&gt;sk reference on subflow close<\/p>\n<p>The backlog list is updated by mptcp_data_ready() under<br \/>\nmptcp_data_lock(). The<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-5368","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/5368","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=5368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}