<?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 19:43:55 +0000</lastBuildDate>
    <item>
      <title>CVE-2025-40271 — fs/proc: fix uaf in proc_readdir_de()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2025-40271</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux, Siemens RUGGEDCOM RST2428P&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;fs/proc: fix uaf in proc_readdir_de()&lt;/p&gt;
&lt;p&gt;Pde is erased from subdir rbtree through rb_erase(), but not set the node
to EMPTY, which may result in uaf access.  We should use RB_CLEAR_NODE()
set the erased node to EMPTY, then pde_subdir_next() will return NULL to
avoid uaf access.&lt;/p&gt;
&lt;p&gt;We found an uaf issue while using stress-ng testing, need to run testcase
getdent and tun in the same time.  The steps of the issue is as follows:&lt;/p&gt;
&lt;p&gt;1) use getdent to traverse dir /proc/pid/net/dev_snmp6/, and current
   pde is tun3;&lt;/p&gt;
&lt;p&gt;2) in the [time windows] unregister netdevice tun3 and tun2, and erase
   them from rbtree.  erase tun3 first, and then erase tun2.  the
   pde(tun2) will be released to slab;&lt;/p&gt;
&lt;p&gt;3) continue to getdent process, then pde_subdir_next() will return
   pde(tun2) which is released, it will case uaf access.&lt;/p&gt;
&lt;p&gt;CPU 0                                      |    CPU 1
-------------------------------------------------------------------------
traverse dir /proc/pid/net/dev_snmp6/      |   unregister_netdevice(tun-&amp;gt;dev)   //tun3 tun2
sys_getdents64()                           |
  iterate_dir()                            |
    proc_readdir()                         |
      proc_readdir_de()                    |     snmp6_unregister_dev()
        pde_get(de);                       |       proc_remove()
        read_unlock(&amp;amp;proc_subdir_lock);    |         remove_proc_subtree()
                                           |…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux, Siemens RUGGEDCOM RST2428P&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;fs/proc: fix uaf in proc_readdir_de()&lt;/p&gt;
&lt;p&gt;Pde is erased from subdir rbtree through rb_erase(), but not set the node
to EMPTY, which may result in uaf access.  We should use RB_CLEAR_NODE()
set the erased node to EMPTY, then pde_subdir_next() will return NULL to
avoid uaf access.&lt;/p&gt;
&lt;p&gt;We found an uaf issue while using stress-ng testing, need to run testcase
getdent and tun in the same time.  The steps of the issue is as follows:&lt;/p&gt;
&lt;p&gt;1) use getdent to traverse dir /proc/pid/net/dev_snmp6/, and current
   pde is tun3;&lt;/p&gt;
&lt;p&gt;2) in the [time windows] unregister netdevice tun3 and tun2, and erase
   them from rbtree.  erase tun3 first, and then erase tun2.  the
   pde(tun2) will be released to slab;&lt;/p&gt;
&lt;p&gt;3) continue to getdent process, then pde_subdir_next() will return
   pde(tun2) which is released, it will case uaf access.&lt;/p&gt;
&lt;p&gt;CPU 0                                      |    CPU 1
-------------------------------------------------------------------------
traverse dir /proc/pid/net/dev_snmp6/      |   unregister_netdevice(tun-&amp;gt;dev)   //tun3 tun2
sys_getdents64()                           |
  iterate_dir()                            |
    proc_readdir()                         |
      proc_readdir_de()                    |     snmp6_unregister_dev()
        pde_get(de);                       |       proc_remove()
        read_unlock(&amp;amp;proc_subdir_lock);    |         remove_proc_subtree()
                                           |…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2025-40271</guid>
    </item>
  </channel>
</rss>
