<?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 16:32:53 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-45905 — xfrm: fix ip_rt_bug race in icmp_route_lookup reverse path</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-45905</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;xfrm: fix ip_rt_bug race in icmp_route_lookup reverse path&lt;/p&gt;
&lt;p&gt;icmp_route_lookup() performs multiple route lookups to find a suitable
route for sending ICMP error messages, with special handling for XFRM
(IPsec) policies.&lt;/p&gt;
&lt;p&gt;The lookup sequence is:
1. First, lookup output route for ICMP reply (dst = original src)
2. Pass through xfrm_lookup() for policy check
3. If blocked (-EPERM) or dst is not local, enter &amp;#34;reverse path&amp;#34;
4. In reverse path, call xfrm_decode_session_reverse() to get fl4_dec
   which reverses the original packet&amp;#39;s flow (saddr&amp;lt;-&amp;gt;daddr swapped)
5. If fl4_dec.saddr is local (we are the original destination), use
   __ip_route_output_key() for output route lookup
6. If fl4_dec.saddr is NOT local (we are a forwarding node), use
   ip_route_input() to simulate the reverse packet&amp;#39;s input path
7. Finally, pass rt2 through xfrm_lookup() with XFRM_LOOKUP_ICMP flag&lt;/p&gt;
&lt;p&gt;The bug occurs in step 6: ip_route_input() is called with fl4_dec.daddr
(original packet&amp;#39;s source) as destination. If this address becomes local
between the initial check and ip_route_input() call (e.g., due to
concurrent &amp;#34;ip addr add&amp;#34;), ip_route_input() returns a LOCAL route with
dst.output set to ip_rt_bug.&lt;/p&gt;
&lt;p&gt;This route is then used for ICMP output, causing dst_output() to call
ip_rt_bug(), triggering a WARN_ON:&lt;/p&gt;
&lt;p&gt;------------[ cut here ]------------
 WARNING: net/ipv4/route.c:1275 at ip_rt_bug+0x21/0x30, CPU#1
 Call Trace:
  &amp;lt;TASK&amp;gt;
  ip_push_…&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;xfrm: fix ip_rt_bug race in icmp_route_lookup reverse path&lt;/p&gt;
&lt;p&gt;icmp_route_lookup() performs multiple route lookups to find a suitable
route for sending ICMP error messages, with special handling for XFRM
(IPsec) policies.&lt;/p&gt;
&lt;p&gt;The lookup sequence is:
1. First, lookup output route for ICMP reply (dst = original src)
2. Pass through xfrm_lookup() for policy check
3. If blocked (-EPERM) or dst is not local, enter &amp;#34;reverse path&amp;#34;
4. In reverse path, call xfrm_decode_session_reverse() to get fl4_dec
   which reverses the original packet&amp;#39;s flow (saddr&amp;lt;-&amp;gt;daddr swapped)
5. If fl4_dec.saddr is local (we are the original destination), use
   __ip_route_output_key() for output route lookup
6. If fl4_dec.saddr is NOT local (we are a forwarding node), use
   ip_route_input() to simulate the reverse packet&amp;#39;s input path
7. Finally, pass rt2 through xfrm_lookup() with XFRM_LOOKUP_ICMP flag&lt;/p&gt;
&lt;p&gt;The bug occurs in step 6: ip_route_input() is called with fl4_dec.daddr
(original packet&amp;#39;s source) as destination. If this address becomes local
between the initial check and ip_route_input() call (e.g., due to
concurrent &amp;#34;ip addr add&amp;#34;), ip_route_input() returns a LOCAL route with
dst.output set to ip_rt_bug.&lt;/p&gt;
&lt;p&gt;This route is then used for ICMP output, causing dst_output() to call
ip_rt_bug(), triggering a WARN_ON:&lt;/p&gt;
&lt;p&gt;------------[ cut here ]------------
 WARNING: net/ipv4/route.c:1275 at ip_rt_bug+0x21/0x30, CPU#1
 Call Trace:
  &amp;lt;TASK&amp;gt;
  ip_push_…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-45905</guid>
    </item>
  </channel>
</rss>
