<?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>Mon, 28 Sep 2026 10:28:40 +0000</lastBuildDate>
    <item>
      <title>CVE-2024-41010 — bpf: Fix too early release of tcx_entry</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2024-41010</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;bpf: Fix too early release of tcx_entry&lt;/p&gt;
&lt;p&gt;Pedro Pinto and later independently also Hyunwoo Kim and Wongi Lee reported
an issue that the tcx_entry can be released too early leading to a use
after free (UAF) when an active old-style ingress or clsact qdisc with a
shared tc block is later replaced by another ingress or clsact instance.&lt;/p&gt;
&lt;p&gt;Essentially, the sequence to trigger the UAF (one example) can be as follows:&lt;/p&gt;
&lt;p&gt;1. A network namespace is created
  2. An ingress qdisc is created. This allocates a tcx_entry, and
     &amp;amp;tcx_entry-&amp;gt;miniq is stored in the qdisc&amp;#39;s miniqp-&amp;gt;p_miniq. At the
     same time, a tcf block with index 1 is created.
  3. chain0 is attached to the tcf block. chain0 must be connected to
     the block linked to the ingress qdisc to later reach the function
     tcf_chain0_head_change_cb_del() which triggers the UAF.
  4. Create and graft a clsact qdisc. This causes the ingress qdisc
     created in step 1 to be removed, thus freeing the previously linked
     tcx_entry:&lt;/p&gt;
&lt;p&gt;rtnetlink_rcv_msg()
       =&amp;gt; tc_modify_qdisc()
         =&amp;gt; qdisc_create()
           =&amp;gt; clsact_init() [a]
         =&amp;gt; qdisc_graft()
           =&amp;gt; qdisc_destroy()
             =&amp;gt; __qdisc_destroy()
               =&amp;gt; ingress_destroy() [b]
                 =&amp;gt; tcx_entry_free()
                   =&amp;gt; kfree_rcu() // tcx_entry freed&lt;/p&gt;
&lt;p&gt;5. Finally, the network namespace is closed. This registers the
     cleanup_net worker, and d…&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;bpf: Fix too early release of tcx_entry&lt;/p&gt;
&lt;p&gt;Pedro Pinto and later independently also Hyunwoo Kim and Wongi Lee reported
an issue that the tcx_entry can be released too early leading to a use
after free (UAF) when an active old-style ingress or clsact qdisc with a
shared tc block is later replaced by another ingress or clsact instance.&lt;/p&gt;
&lt;p&gt;Essentially, the sequence to trigger the UAF (one example) can be as follows:&lt;/p&gt;
&lt;p&gt;1. A network namespace is created
  2. An ingress qdisc is created. This allocates a tcx_entry, and
     &amp;amp;tcx_entry-&amp;gt;miniq is stored in the qdisc&amp;#39;s miniqp-&amp;gt;p_miniq. At the
     same time, a tcf block with index 1 is created.
  3. chain0 is attached to the tcf block. chain0 must be connected to
     the block linked to the ingress qdisc to later reach the function
     tcf_chain0_head_change_cb_del() which triggers the UAF.
  4. Create and graft a clsact qdisc. This causes the ingress qdisc
     created in step 1 to be removed, thus freeing the previously linked
     tcx_entry:&lt;/p&gt;
&lt;p&gt;rtnetlink_rcv_msg()
       =&amp;gt; tc_modify_qdisc()
         =&amp;gt; qdisc_create()
           =&amp;gt; clsact_init() [a]
         =&amp;gt; qdisc_graft()
           =&amp;gt; qdisc_destroy()
             =&amp;gt; __qdisc_destroy()
               =&amp;gt; ingress_destroy() [b]
                 =&amp;gt; tcx_entry_free()
                   =&amp;gt; kfree_rcu() // tcx_entry freed&lt;/p&gt;
&lt;p&gt;5. Finally, the network namespace is closed. This registers the
     cleanup_net worker, and d…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2024-41010</guid>
    </item>
  </channel>
</rss>
