<?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 02:35:53 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-31570 — can: gw: fix OOB heap access in cgw_csum_crc8_rel()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-31570</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;can: gw: fix OOB heap access in cgw_csum_crc8_rel()&lt;/p&gt;
&lt;p&gt;cgw_csum_crc8_rel() correctly computes bounds-safe indices via calc_idx():&lt;/p&gt;
&lt;p&gt;int from = calc_idx(crc8-&amp;gt;from_idx, cf-&amp;gt;len);
    int to   = calc_idx(crc8-&amp;gt;to_idx,   cf-&amp;gt;len);
    int res  = calc_idx(crc8-&amp;gt;result_idx, cf-&amp;gt;len);&lt;/p&gt;
&lt;p&gt;if (from &amp;lt; 0 || to &amp;lt; 0 || res &amp;lt; 0)
        return;&lt;/p&gt;
&lt;p&gt;However, the loop and the result write then use the raw s8 fields directly
instead of the computed variables:&lt;/p&gt;
&lt;p&gt;for (i = crc8-&amp;gt;from_idx; ...)        /* BUG: raw negative index */
    cf-&amp;gt;data[crc8-&amp;gt;result_idx] = ...;    /* BUG: raw negative index */&lt;/p&gt;
&lt;p&gt;With from_idx = to_idx = result_idx = -64 on a 64-byte CAN FD frame,
calc_idx(-64, 64) = 0 so the guard passes, but the loop iterates with
i = -64, reading cf-&amp;gt;data[-64], and the write goes to cf-&amp;gt;data[-64].
This write might end up to 56 (7.0-rc) or 40 (&amp;lt;= 6.19) bytes before the
start of the canfd_frame on the heap.&lt;/p&gt;
&lt;p&gt;The companion function cgw_csum_xor_rel() uses `from`/`to`/`res`
correctly throughout; fix cgw_csum_crc8_rel() to match.&lt;/p&gt;
&lt;p&gt;Confirmed with KASAN on linux-7.0-rc2:
  BUG: KASAN: slab-out-of-bounds in cgw_csum_crc8_rel+0x515/0x5b0
  Read of size 1 at addr ffff8880076619c8 by task poc_cgw_oob/62&lt;/p&gt;
&lt;p&gt;To configure the can-gw crc8 checksums CAP_NET_ADMIN is needed.&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;can: gw: fix OOB heap access in cgw_csum_crc8_rel()&lt;/p&gt;
&lt;p&gt;cgw_csum_crc8_rel() correctly computes bounds-safe indices via calc_idx():&lt;/p&gt;
&lt;p&gt;int from = calc_idx(crc8-&amp;gt;from_idx, cf-&amp;gt;len);
    int to   = calc_idx(crc8-&amp;gt;to_idx,   cf-&amp;gt;len);
    int res  = calc_idx(crc8-&amp;gt;result_idx, cf-&amp;gt;len);&lt;/p&gt;
&lt;p&gt;if (from &amp;lt; 0 || to &amp;lt; 0 || res &amp;lt; 0)
        return;&lt;/p&gt;
&lt;p&gt;However, the loop and the result write then use the raw s8 fields directly
instead of the computed variables:&lt;/p&gt;
&lt;p&gt;for (i = crc8-&amp;gt;from_idx; ...)        /* BUG: raw negative index */
    cf-&amp;gt;data[crc8-&amp;gt;result_idx] = ...;    /* BUG: raw negative index */&lt;/p&gt;
&lt;p&gt;With from_idx = to_idx = result_idx = -64 on a 64-byte CAN FD frame,
calc_idx(-64, 64) = 0 so the guard passes, but the loop iterates with
i = -64, reading cf-&amp;gt;data[-64], and the write goes to cf-&amp;gt;data[-64].
This write might end up to 56 (7.0-rc) or 40 (&amp;lt;= 6.19) bytes before the
start of the canfd_frame on the heap.&lt;/p&gt;
&lt;p&gt;The companion function cgw_csum_xor_rel() uses `from`/`to`/`res`
correctly throughout; fix cgw_csum_crc8_rel() to match.&lt;/p&gt;
&lt;p&gt;Confirmed with KASAN on linux-7.0-rc2:
  BUG: KASAN: slab-out-of-bounds in cgw_csum_crc8_rel+0x515/0x5b0
  Read of size 1 at addr ffff8880076619c8 by task poc_cgw_oob/62&lt;/p&gt;
&lt;p&gt;To configure the can-gw crc8 checksums CAP_NET_ADMIN is needed.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-31570</guid>
    </item>
  </channel>
</rss>
