CVE-2026-31570 in Linux
Zusammenfassung
von VulDB • 21.05.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
can: gw: Behebung eines OOB-Heap-Zugriffs in cgw_csum_crc8_rel()
cgw_csum_crc8_rel() berechnet korrekt grenzwert-sichere Indizes über calc_idx():
int from = calc_idx(crc8->from_idx, cf->len); int to = calc_idx(crc8->to_idx, cf->len); int res = calc_idx(crc8->result_idx, cf->len);
if (from < 0 || to < 0 || res < 0) return;
Die Schleife und das Schreiben des Ergebnisses verwenden jedoch anschließend die rohen s8-Felder direkt anstelle der berechneten Variablen:
for (i = crc8->from_idx; ...) /* FEHLER: roher negativer Index */ cf->data[crc8->result_idx] = ...; /* FEHLER: roher negativer Index */
Bei from_idx = to_idx = result_idx = -64 in einem 64-Byte-CAN-FD-Frame ergibt calc_idx(-64, 64) = 0, sodass der Guard bestanden wird, die Schleife jedoch mit i = -64 iteriert, cf->data[-64] liest und der Schreibzugriff auf cf->data[-64] erfolgt. Dieser Schreibzugriff kann bis zu 56 Bytes (7.0-rc) oder 40 Bytes (<= 6.19) vor dem Start von canfd_frame im Heap liegen.
Die Begleitfunktion cgw_csum_xor_rel() verwendet `from`/`to`/`res` durchgängig korrekt; cgw_csum_crc8_rel() wurde zur Übereinstimmung korrigiert.
Bestätigt mit KASAN auf 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
Zur Konfiguration der can-gw crc8-Prüfsummen ist CAP_NET_ADMIN erforderlich.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.