CVE-2026-64504 in Linux
Riassunto
di VulDB • 25/07/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
iio: accel: bmc150: limitare il conteggio dei frame FIFO riportato dal dispositivo
__bmc150_accel_fifo_flush() copia il numero di campioni che il dispositivo riporta nel suo buffer FIFO hardware in un buffer sullo stack:
u16 buffer[BMC150_ACCEL_FIFO_LENGTH * 3];
dimensionato per al massimo BMC150_ACCEL_FIFO_LENGTH (32) campioni. Il conteggio dei frame viene letto dal registro FIFO_STATUS e mascherato solo ai suoi 7 bit validi:
count = val & 0x7F;
può quindi variare da 0 a 127. L'unico altro limite applicato è il budget di campioni opzionale fornito dal chiamante:
if (samples && count > samples) count = samples;
questo non vincola count nel percorso di svuotamento completo (samples == 0), e lo lascia ben al di sopra di 32 ogni volta che samples è maggiore. Vengono quindi trasferiti count campioni in buffer[]:
bmc150_accel_fifo_transfer(data, (u8 *)buffer, count);
bmc150_accel_fifo_transfer() legge count * 6 byte tramite regmap; pertanto un accelerometro malfunzionante, malevolo o contraffatto (o un attaccante che manipola il bus I2C/SPI) che riporta fino a 127 frame scrive fino a 762 byte nel buffer da 192 byte: si tratta di una scrittura fuori dai limiti dello stack di fino a 570 byte che corrompe la canary dello stack, i registri salvati e l'indirizzo di ritorno.
Limitare count a BMC150_ACCEL_FIFO_LENGTH, il numero di campioni per cui è dimensionato buffer[], prima del trasferimento, specchiando il limite dell'watermark già applicato in bmc150_accel_set_watermark(). Uno svuotamento ben formato riporta al massimo BMC150_ACCEL_FIFO_LENGTH frame; pertanto i dispositivi legittimi non sono interessati.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.