<?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>Fri, 02 Oct 2026 18:34:39 +0000</lastBuildDate>
    <item>
      <title>CVE-2024-35969 — ipv6: fix race condition between ipv6_get_ifaddr and ipv6_del_addr</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2024-35969</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux, Siemens RUGGEDCOM RST2428P, Siemens SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 family, Siemens SCALANCE XCM-/XRM-/XCH-/XRH-300 family, Siemens SIMATIC S7-1500 TM MFP - GNU/Linux subsystem&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;ipv6: fix race condition between ipv6_get_ifaddr and ipv6_del_addr&lt;/p&gt;
&lt;p&gt;Although ipv6_get_ifaddr walks inet6_addr_lst under the RCU lock, it
still means hlist_for_each_entry_rcu can return an item that got removed
from the list. The memory itself of such item is not freed thanks to RCU
but nothing guarantees the actual content of the memory is sane.&lt;/p&gt;
&lt;p&gt;In particular, the reference count can be zero. This can happen if
ipv6_del_addr is called in parallel. ipv6_del_addr removes the entry
from inet6_addr_lst (hlist_del_init_rcu(&amp;amp;ifp-&amp;gt;addr_lst)) and drops all
references (__in6_ifa_put(ifp) + in6_ifa_put(ifp)). With bad enough
timing, this can happen:&lt;/p&gt;
&lt;p&gt;1. In ipv6_get_ifaddr, hlist_for_each_entry_rcu returns an entry.&lt;/p&gt;
&lt;p&gt;2. Then, the whole ipv6_del_addr is executed for the given entry. The
   reference count drops to zero and kfree_rcu is scheduled.&lt;/p&gt;
&lt;p&gt;3. ipv6_get_ifaddr continues and tries to increments the reference count
   (in6_ifa_hold).&lt;/p&gt;
&lt;p&gt;4. The rcu is unlocked and the entry is freed.&lt;/p&gt;
&lt;p&gt;5. The freed entry is returned.&lt;/p&gt;
&lt;p&gt;Prevent increasing of the reference count in such case. The name
in6_ifa_hold_safe is chosen to mimic the existing fib6_info_hold_safe.&lt;/p&gt;
&lt;p&gt;[   41.506330] refcount_t: addition on 0; use-after-free.
[   41.506760] WARNING: CPU: 0 PID: 595 at lib/refcount.c:25 refcount_warn_saturate+0xa5/0x130
[   41.507413] Modules linked in: veth bridge stp llc
[   41.507821] CPU: 0 PID: 595 Comm: python3 Not tainted 6.9.0-…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux, Siemens RUGGEDCOM RST2428P, Siemens SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 family, Siemens SCALANCE XCM-/XRM-/XCH-/XRH-300 family, Siemens SIMATIC S7-1500 TM MFP - GNU/Linux subsystem&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;ipv6: fix race condition between ipv6_get_ifaddr and ipv6_del_addr&lt;/p&gt;
&lt;p&gt;Although ipv6_get_ifaddr walks inet6_addr_lst under the RCU lock, it
still means hlist_for_each_entry_rcu can return an item that got removed
from the list. The memory itself of such item is not freed thanks to RCU
but nothing guarantees the actual content of the memory is sane.&lt;/p&gt;
&lt;p&gt;In particular, the reference count can be zero. This can happen if
ipv6_del_addr is called in parallel. ipv6_del_addr removes the entry
from inet6_addr_lst (hlist_del_init_rcu(&amp;amp;ifp-&amp;gt;addr_lst)) and drops all
references (__in6_ifa_put(ifp) + in6_ifa_put(ifp)). With bad enough
timing, this can happen:&lt;/p&gt;
&lt;p&gt;1. In ipv6_get_ifaddr, hlist_for_each_entry_rcu returns an entry.&lt;/p&gt;
&lt;p&gt;2. Then, the whole ipv6_del_addr is executed for the given entry. The
   reference count drops to zero and kfree_rcu is scheduled.&lt;/p&gt;
&lt;p&gt;3. ipv6_get_ifaddr continues and tries to increments the reference count
   (in6_ifa_hold).&lt;/p&gt;
&lt;p&gt;4. The rcu is unlocked and the entry is freed.&lt;/p&gt;
&lt;p&gt;5. The freed entry is returned.&lt;/p&gt;
&lt;p&gt;Prevent increasing of the reference count in such case. The name
in6_ifa_hold_safe is chosen to mimic the existing fib6_info_hold_safe.&lt;/p&gt;
&lt;p&gt;[   41.506330] refcount_t: addition on 0; use-after-free.
[   41.506760] WARNING: CPU: 0 PID: 595 at lib/refcount.c:25 refcount_warn_saturate+0xa5/0x130
[   41.507413] Modules linked in: veth bridge stp llc
[   41.507821] CPU: 0 PID: 595 Comm: python3 Not tainted 6.9.0-…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2024-35969</guid>
    </item>
  </channel>
</rss>
