<?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, 29 Sep 2026 20:54:28 +0000</lastBuildDate>
    <item>
      <title>CVE-2024-49949 — net: avoid potential underflow in qdisc_pkt_len_init() with UFO</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2024-49949</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, Siemens SIMATIC S7-1500 CPU 1518-4 PN/DP MFP, Siemens SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP, Siemens SIPLUS S7-1500 CPU 1518-4 PN/DP MFP&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;net: avoid potential underflow in qdisc_pkt_len_init() with UFO&lt;/p&gt;
&lt;p&gt;After commit 7c6d2ecbda83 (&amp;#34;net: be more gentle about silly gso
requests coming from user&amp;#34;) virtio_net_hdr_to_skb() had sanity check
to detect malicious attempts from user space to cook a bad GSO packet.&lt;/p&gt;
&lt;p&gt;Then commit cf9acc90c80ec (&amp;#34;net: virtio_net_hdr_to_skb: count
transport header in UFO&amp;#34;) while fixing one issue, allowed user space
to cook a GSO packet with the following characteristic :&lt;/p&gt;
&lt;p&gt;IPv4 SKB_GSO_UDP, gso_size=3, skb-&amp;gt;len = 28.&lt;/p&gt;
&lt;p&gt;When this packet arrives in qdisc_pkt_len_init(), we end up
with hdr_len = 28 (IPv4 header + UDP header), matching skb-&amp;gt;len&lt;/p&gt;
&lt;p&gt;Then the following sets gso_segs to 0 :&lt;/p&gt;
&lt;p&gt;gso_segs = DIV_ROUND_UP(skb-&amp;gt;len - hdr_len,
                        shinfo-&amp;gt;gso_size);&lt;/p&gt;
&lt;p&gt;Then later we set qdisc_skb_cb(skb)-&amp;gt;pkt_len to back to zero :/&lt;/p&gt;
&lt;p&gt;qdisc_skb_cb(skb)-&amp;gt;pkt_len += (gso_segs - 1) * hdr_len;&lt;/p&gt;
&lt;p&gt;This leads to the following crash in fq_codel [1]&lt;/p&gt;
&lt;p&gt;qdisc_pkt_len_init() is best effort, we only want an estimation
of the bytes sent on the wire, not crashing the kernel.&lt;/p&gt;
&lt;p&gt;This patch is fixing this particular issue, a following one
adds more sanity checks for another potential bug.&lt;/p&gt;
&lt;p&gt;[1]
[   70.724101] BUG: kernel NULL pointer dereference, address: 0000000000000000
[   70.724561] #PF: supervisor read access in kernel mode
[   70.724561] #PF: error_code(0x0000) - not-present page
[   70.724561] PGD 10ac61067 P4D 10ac61067 PUD 107ee2067 PMD 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, Siemens SIMATIC S7-1500 CPU 1518-4 PN/DP MFP, Siemens SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP, Siemens SIPLUS S7-1500 CPU 1518-4 PN/DP MFP&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;net: avoid potential underflow in qdisc_pkt_len_init() with UFO&lt;/p&gt;
&lt;p&gt;After commit 7c6d2ecbda83 (&amp;#34;net: be more gentle about silly gso
requests coming from user&amp;#34;) virtio_net_hdr_to_skb() had sanity check
to detect malicious attempts from user space to cook a bad GSO packet.&lt;/p&gt;
&lt;p&gt;Then commit cf9acc90c80ec (&amp;#34;net: virtio_net_hdr_to_skb: count
transport header in UFO&amp;#34;) while fixing one issue, allowed user space
to cook a GSO packet with the following characteristic :&lt;/p&gt;
&lt;p&gt;IPv4 SKB_GSO_UDP, gso_size=3, skb-&amp;gt;len = 28.&lt;/p&gt;
&lt;p&gt;When this packet arrives in qdisc_pkt_len_init(), we end up
with hdr_len = 28 (IPv4 header + UDP header), matching skb-&amp;gt;len&lt;/p&gt;
&lt;p&gt;Then the following sets gso_segs to 0 :&lt;/p&gt;
&lt;p&gt;gso_segs = DIV_ROUND_UP(skb-&amp;gt;len - hdr_len,
                        shinfo-&amp;gt;gso_size);&lt;/p&gt;
&lt;p&gt;Then later we set qdisc_skb_cb(skb)-&amp;gt;pkt_len to back to zero :/&lt;/p&gt;
&lt;p&gt;qdisc_skb_cb(skb)-&amp;gt;pkt_len += (gso_segs - 1) * hdr_len;&lt;/p&gt;
&lt;p&gt;This leads to the following crash in fq_codel [1]&lt;/p&gt;
&lt;p&gt;qdisc_pkt_len_init() is best effort, we only want an estimation
of the bytes sent on the wire, not crashing the kernel.&lt;/p&gt;
&lt;p&gt;This patch is fixing this particular issue, a following one
adds more sanity checks for another potential bug.&lt;/p&gt;
&lt;p&gt;[1]
[   70.724101] BUG: kernel NULL pointer dereference, address: 0000000000000000
[   70.724561] #PF: supervisor read access in kernel mode
[   70.724561] #PF: error_code(0x0000) - not-present page
[   70.724561] PGD 10ac61067 P4D 10ac61067 PUD 107ee2067 PMD 0
[…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2024-49949</guid>
    </item>
  </channel>
</rss>
