{"id":5460,"date":"2026-09-04T18:47:51","date_gmt":"2026-09-04T10:47:51","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-68398"},"modified":"2026-09-04T18:47:51","modified_gmt":"2026-09-04T10:47:51","slug":"cve-2026-68398","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-68398","title":{"rendered":"CVE-2026-68398 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nppp: defer channel fr"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ppp: defer channel free to an RCU grace period to fix pppol2tp RX UAF<\/p>\n<p>pppol2tp_recv() runs in the L2TP UDP-encap softirq RX path:<\/p>\n<p> l2tp_udp_encap_recv() -&gt; l2tp_recv_common() -&gt; pppol2tp_recv()<br \/>\n   -&gt; ppp_input(&amp;po-&gt;chan)<\/p>\n<p>It runs under rcu_read_lock() holding only an l2tp_session reference and<br \/>\ntakes NO reference on the internal PPP channel (struct channel,<br \/>\nchan-&gt;ppp) that ppp_input() dereferences.<\/p>\n<p>The pppox socket is SOCK_RCU_FREE, so &#8216;po&#8217; and the embedded ppp_channel<br \/>\nare RCU-safe.  But the internal struct channel is a separate allocation<br \/>\nthat ppp_release_channel() frees with a plain kfree():<\/p>\n<p> close(data socket) -&gt; pppol2tp_release() -&gt; pppox_unbind_sock()<br \/>\n   -&gt; ppp_unregister_channel() -&gt; ppp_release_channel() -&gt; kfree(pch)<\/p>\n<p>For a channel that is bound (PPPIOCGCHAN) but not attached to a ppp unit<br \/>\n(no PPPIOCCONNECT, pch-&gt;ppp == NULL) and not bridged, teardown skips<br \/>\nboth ppp_disconnect_channel()&#8217;s synchronize_net() and<br \/>\nppp_unbridge_channels()&#8217;s synchronize_rcu(), so the kfree() has no grace<br \/>\nperiod.  rcu_read_lock() in pppol2tp_recv() does not protect against a<br \/>\nplain kfree(), so an in-flight ppp_input() on one CPU can dereference<br \/>\nthe channel just freed by close() on another CPU.<\/p>\n<p>The bug is reachable by an unprivileged user.<\/p>\n<p>Defer the channel free to an RCU callback via call_rcu() so the grace<br \/>\nperiod fences any in-flight ppp_input(). The disconnect and unbridge<br \/>\nteardown paths already fence with synchronize_net()\/synchronize_rcu();<br \/>\ncall_rcu() does the same here without stalling the close() path.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ppp: defer channel free to an RCU grace period to fix pppol2tp RX UAF<\/p>\n<p>pppol2tp_recv() runs in the L2TP UDP-encap softirq RX path:<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-5460","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/5460","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=5460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5460"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}