<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-29T04:30:11.006095+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-31570</id>
    <title>CVE-2026-31570 — can: gw: fix OOB heap access in cgw_csum_crc8_rel()</title>
    <updated>2026-09-29T04:30:11.007743+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Linux</p>
<p>In the Linux kernel, the following vulnerability has been resolved:</p>
<p>can: gw: fix OOB heap access in cgw_csum_crc8_rel()</p>
<p>cgw_csum_crc8_rel() correctly computes bounds-safe indices via calc_idx():</p>
<p>int from = calc_idx(crc8-&gt;from_idx, cf-&gt;len);
    int to   = calc_idx(crc8-&gt;to_idx,   cf-&gt;len);
    int res  = calc_idx(crc8-&gt;result_idx, cf-&gt;len);</p>
<p>if (from &lt; 0 || to &lt; 0 || res &lt; 0)
        return;</p>
<p>However, the loop and the result write then use the raw s8 fields directly
instead of the computed variables:</p>
<p>for (i = crc8-&gt;from_idx; ...)        /* BUG: raw negative index */
    cf-&gt;data[crc8-&gt;result_idx] = ...;    /* BUG: raw negative index */</p>
<p>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-&gt;data[-64], and the write goes to cf-&gt;data[-64].
This write might end up to 56 (7.0-rc) or 40 (&lt;= 6.19) bytes before the
start of the canfd_frame on the heap.</p>
<p>The companion function cgw_csum_xor_rel() uses `from`/`to`/`res`
correctly throughout; fix cgw_csum_crc8_rel() to match.</p>
<p>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</p>
<p>To configure the can-gw crc8 checksums CAP_NET_ADMIN is needed.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-31570"/>
  </entry>
</feed>
