<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 29 Sep 2026 06:35:05 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-74700 — net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-74700</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers&lt;/p&gt;
&lt;p&gt;Another challenge with unlocked filters.
There is a short window in tc_new_tfilter where a tcf_proto can be found
and briefly referenced by a totally unrelated, unlocked classifier&amp;#39;s request
and cause a race.&lt;/p&gt;
&lt;p&gt;Feng created a poc which created this race with two threads, one creating a
u32 filter and other a flower filter in the same chain/prio:&lt;/p&gt;
&lt;p&gt;1. Both threads enter tc_new_tfilter, both find the chain empty, both
   drop filter_chain_lock
2. u32 finishes tcf_proto_create(&amp;#34;u32&amp;#34;) first, calls
   tcf_chain_tp_insert_unique() -&amp;gt; inserts u32_tp into the chain
3. flower finishes tcf_proto_create(&amp;#34;flower&amp;#34;) later, calls
   tcf_chain_tp_insert_unique() -&amp;gt; tcf_chain_tp_find() now sees u32_tp
   already there, takes a reference on it, destroys flower&amp;#39;s own tp_new
   and returns u32_tp to the caller.&lt;/p&gt;
&lt;p&gt;Flower then hits the kind mismatch check (because it requested for kind
&amp;#34;flower&amp;#34; but tp-&amp;gt;ops-&amp;gt;kind is &amp;#34;u32&amp;#34;) and goes through the errout path
which calls tcf_proto_put() on u32_tp. If the u32 thread has already
gone through its own errout (its change() call failed on the PoC&amp;#39;s empty
options) and dropped its create and insert refs, flower&amp;#39;s put is the
last one and drops u32_tp&amp;#39;s refcnt to zero.&lt;/p&gt;
&lt;p&gt;At this point tp-&amp;gt;ops-&amp;gt;destroy() runs in a context that never took
rtnl_lock. When that happens, it might cause a UAF like the following
(illustrated…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers&lt;/p&gt;
&lt;p&gt;Another challenge with unlocked filters.
There is a short window in tc_new_tfilter where a tcf_proto can be found
and briefly referenced by a totally unrelated, unlocked classifier&amp;#39;s request
and cause a race.&lt;/p&gt;
&lt;p&gt;Feng created a poc which created this race with two threads, one creating a
u32 filter and other a flower filter in the same chain/prio:&lt;/p&gt;
&lt;p&gt;1. Both threads enter tc_new_tfilter, both find the chain empty, both
   drop filter_chain_lock
2. u32 finishes tcf_proto_create(&amp;#34;u32&amp;#34;) first, calls
   tcf_chain_tp_insert_unique() -&amp;gt; inserts u32_tp into the chain
3. flower finishes tcf_proto_create(&amp;#34;flower&amp;#34;) later, calls
   tcf_chain_tp_insert_unique() -&amp;gt; tcf_chain_tp_find() now sees u32_tp
   already there, takes a reference on it, destroys flower&amp;#39;s own tp_new
   and returns u32_tp to the caller.&lt;/p&gt;
&lt;p&gt;Flower then hits the kind mismatch check (because it requested for kind
&amp;#34;flower&amp;#34; but tp-&amp;gt;ops-&amp;gt;kind is &amp;#34;u32&amp;#34;) and goes through the errout path
which calls tcf_proto_put() on u32_tp. If the u32 thread has already
gone through its own errout (its change() call failed on the PoC&amp;#39;s empty
options) and dropped its create and insert refs, flower&amp;#39;s put is the
last one and drops u32_tp&amp;#39;s refcnt to zero.&lt;/p&gt;
&lt;p&gt;At this point tp-&amp;gt;ops-&amp;gt;destroy() runs in a context that never took
rtnl_lock. When that happens, it might cause a UAF like the following
(illustrated…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-74700</guid>
    </item>
  </channel>
</rss>
