<?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 15:17:15 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-80789 — nvmet-tcp: bound SGL data length before allocating command buffers</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-80789</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;nvmet-tcp: bound SGL data length before allocating command buffers&lt;/p&gt;
&lt;p&gt;nvmet_tcp_map_data() reads the host-controlled 32-bit sgl-&amp;gt;length
and, for the in-capsule offset descriptor (type 0x01), checks it
against port-&amp;gt;inline_data_size before use. Any other SGL descriptor
type -- including the non-inline transport SGL data-block descriptor
(type (NVME_TRANSPORT_SGL_DATA_DESC &amp;lt;&amp;lt; 4) | NVME_SGL_FMT_TRANSPORT_A,
the type a real host uses for out-of-capsule writes) skips that check
entirely and falls straight through to:&lt;/p&gt;
&lt;p&gt;cmd-&amp;gt;req.sg = sgl_alloc(len, GFP_KERNEL, &amp;amp;cmd-&amp;gt;req.sg_cnt);&lt;/p&gt;
&lt;p&gt;with len taken directly from the wire, unbounded up to 4 GiB.&lt;/p&gt;
&lt;p&gt;nvmet_req_init() only parses the command and never inspects
sgl-&amp;gt;length, and nvmet_check_transfer_len() -- the only other place
transfer_len is validated -- runs later, from req-&amp;gt;execute(), after
the allocation has already happened. For a write command the target
responds with an R2T and parks the command waiting for the host to
send the data; if the host (or an unauthenticated peer that simply
never follows up) never does, the sgl_alloc() buffer stays resident
for the life of the command. NVMe/TCP has no mandatory authentication
in the default configuration, so any peer able to reach the target
portal and complete a Fabrics connect can drive this with a single
crafted command, repeatable across queues and connections for
amplification. This is unbounded kernel memory allocatio…&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;nvmet-tcp: bound SGL data length before allocating command buffers&lt;/p&gt;
&lt;p&gt;nvmet_tcp_map_data() reads the host-controlled 32-bit sgl-&amp;gt;length
and, for the in-capsule offset descriptor (type 0x01), checks it
against port-&amp;gt;inline_data_size before use. Any other SGL descriptor
type -- including the non-inline transport SGL data-block descriptor
(type (NVME_TRANSPORT_SGL_DATA_DESC &amp;lt;&amp;lt; 4) | NVME_SGL_FMT_TRANSPORT_A,
the type a real host uses for out-of-capsule writes) skips that check
entirely and falls straight through to:&lt;/p&gt;
&lt;p&gt;cmd-&amp;gt;req.sg = sgl_alloc(len, GFP_KERNEL, &amp;amp;cmd-&amp;gt;req.sg_cnt);&lt;/p&gt;
&lt;p&gt;with len taken directly from the wire, unbounded up to 4 GiB.&lt;/p&gt;
&lt;p&gt;nvmet_req_init() only parses the command and never inspects
sgl-&amp;gt;length, and nvmet_check_transfer_len() -- the only other place
transfer_len is validated -- runs later, from req-&amp;gt;execute(), after
the allocation has already happened. For a write command the target
responds with an R2T and parks the command waiting for the host to
send the data; if the host (or an unauthenticated peer that simply
never follows up) never does, the sgl_alloc() buffer stays resident
for the life of the command. NVMe/TCP has no mandatory authentication
in the default configuration, so any peer able to reach the target
portal and complete a Fabrics connect can drive this with a single
crafted command, repeatable across queues and connections for
amplification. This is unbounded kernel memory allocatio…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-80789</guid>
    </item>
  </channel>
</rss>
