<?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, 06 Oct 2026 00:14:45 +0000</lastBuildDate>
    <item>
      <title>CVE-2025-22059 — udp: Fix multiple wraparounds of sk-&gt;sk_rmem_alloc.</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2025-22059</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;udp: Fix multiple wraparounds of sk-&amp;gt;sk_rmem_alloc.&lt;/p&gt;
&lt;p&gt;__udp_enqueue_schedule_skb() has the following condition:&lt;/p&gt;
&lt;p&gt;if (atomic_read(&amp;amp;sk-&amp;gt;sk_rmem_alloc) &amp;gt; sk-&amp;gt;sk_rcvbuf)
          goto drop;&lt;/p&gt;
&lt;p&gt;sk-&amp;gt;sk_rcvbuf is initialised by net.core.rmem_default and later can
be configured by SO_RCVBUF, which is limited by net.core.rmem_max,
or SO_RCVBUFFORCE.&lt;/p&gt;
&lt;p&gt;If we set INT_MAX to sk-&amp;gt;sk_rcvbuf, the condition is always false
as sk-&amp;gt;sk_rmem_alloc is also signed int.&lt;/p&gt;
&lt;p&gt;Then, the size of the incoming skb is added to sk-&amp;gt;sk_rmem_alloc
unconditionally.&lt;/p&gt;
&lt;p&gt;This results in integer overflow (possibly multiple times) on
sk-&amp;gt;sk_rmem_alloc and allows a single socket to have skb up to
net.core.udp_mem[1].&lt;/p&gt;
&lt;p&gt;For example, if we set a large value to udp_mem[1] and INT_MAX to
sk-&amp;gt;sk_rcvbuf and flood packets to the socket, we can see multiple
overflows:&lt;/p&gt;
&lt;p&gt;# cat /proc/net/sockstat | grep UDP:
  UDP: inuse 3 mem 7956736  &amp;lt;-- (7956736 &amp;lt;&amp;lt; 12) bytes &amp;gt; INT_MAX * 15
                                             ^- PAGE_SHIFT
  # ss -uam
  State  Recv-Q      ...
  UNCONN -1757018048 ...    &amp;lt;-- flipping the sign repeatedly
         skmem:(r2537949248,rb2147483646,t0,tb212992,f1984,w0,o0,bl0,d0)&lt;/p&gt;
&lt;p&gt;Previously, we had a boundary check for INT_MAX, which was removed by
commit 6a1f12dd85a8 (&amp;#34;udp: relax atomic operation on sk-&amp;gt;sk_rmem_alloc&amp;#34;).&lt;/p&gt;
&lt;p&gt;A complete fix would be to revert it and cap the right operand by
INT_MAX:&lt;/p&gt;
&lt;p&gt;rmem = atomic_add_return(size, &amp;amp;sk-&amp;gt;sk_rm…&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;udp: Fix multiple wraparounds of sk-&amp;gt;sk_rmem_alloc.&lt;/p&gt;
&lt;p&gt;__udp_enqueue_schedule_skb() has the following condition:&lt;/p&gt;
&lt;p&gt;if (atomic_read(&amp;amp;sk-&amp;gt;sk_rmem_alloc) &amp;gt; sk-&amp;gt;sk_rcvbuf)
          goto drop;&lt;/p&gt;
&lt;p&gt;sk-&amp;gt;sk_rcvbuf is initialised by net.core.rmem_default and later can
be configured by SO_RCVBUF, which is limited by net.core.rmem_max,
or SO_RCVBUFFORCE.&lt;/p&gt;
&lt;p&gt;If we set INT_MAX to sk-&amp;gt;sk_rcvbuf, the condition is always false
as sk-&amp;gt;sk_rmem_alloc is also signed int.&lt;/p&gt;
&lt;p&gt;Then, the size of the incoming skb is added to sk-&amp;gt;sk_rmem_alloc
unconditionally.&lt;/p&gt;
&lt;p&gt;This results in integer overflow (possibly multiple times) on
sk-&amp;gt;sk_rmem_alloc and allows a single socket to have skb up to
net.core.udp_mem[1].&lt;/p&gt;
&lt;p&gt;For example, if we set a large value to udp_mem[1] and INT_MAX to
sk-&amp;gt;sk_rcvbuf and flood packets to the socket, we can see multiple
overflows:&lt;/p&gt;
&lt;p&gt;# cat /proc/net/sockstat | grep UDP:
  UDP: inuse 3 mem 7956736  &amp;lt;-- (7956736 &amp;lt;&amp;lt; 12) bytes &amp;gt; INT_MAX * 15
                                             ^- PAGE_SHIFT
  # ss -uam
  State  Recv-Q      ...
  UNCONN -1757018048 ...    &amp;lt;-- flipping the sign repeatedly
         skmem:(r2537949248,rb2147483646,t0,tb212992,f1984,w0,o0,bl0,d0)&lt;/p&gt;
&lt;p&gt;Previously, we had a boundary check for INT_MAX, which was removed by
commit 6a1f12dd85a8 (&amp;#34;udp: relax atomic operation on sk-&amp;gt;sk_rmem_alloc&amp;#34;).&lt;/p&gt;
&lt;p&gt;A complete fix would be to revert it and cap the right operand by
INT_MAX:&lt;/p&gt;
&lt;p&gt;rmem = atomic_add_return(size, &amp;amp;sk-&amp;gt;sk_rm…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2025-22059</guid>
    </item>
  </channel>
</rss>
