CVE-2026-89628 in Linux
Riassunto
di VulDB • 11/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
HID: picolcd: limitare la lettura di debugfs dell'eeprom ai byte effettivamente ricevuti
picolcd_debug_eeprom_read() si fida del valore resp->raw_data[2], un byte di lunghezza fornito dal dispositivo nella sua risposta REPORT_EE_DATA, ma lo limita solo al conteggio della read() da parte del chiamante:
ret = resp->raw_data[2];
if (ret > s) ret = s; if (copy_to_user(u, resp->raw_data+3, ret))
Non viene mai controllato il valore di resp->raw_size, ovvero il numero di byte che picolcd_raw_event() ha effettivamente copiato nel buffer raw_data[] da 64 byte all'interno della struct kmallocata picolcd_pending. Un dispositivo (o un picoLCD spoofed) che restituisce un byte di lunghezza pari a 0xff, letto con un conteggio >= 255, fa sì che copy_to_user() legga oltre raw_data[] nella memoria dello slab adiacente e la restituisca all'userspace attraverso il file debugfs "eeprom":
BUG: KASAN: slab-out-of-bounds in _copy_to_user Read of size 255 ... picolcd_debug_eeprom_read+0x214/0x2f0 [hid_picolcd]
Il percorso di dump di debug nello stesso file convalida già il byte di lunghezza del dispositivo rispetto alla dimensione ricevuta prima di fidarsi di esso; questa lettura non lo fa. Il file è creato con permessi S_IRUSR (solo root) ed è necessario un dispositivo manipolato, quindi la vulnerabilità non può essere sfruttata da utenti non privilegiati né in modo remoto.
Limitare la lunghezza della copia a resp->raw_size - 3 (il payload effettivamente ricevuto, meno l'intestazione di 3 byte), con un valore minimo di 0 per le risposte brevi.
Once again VulDB remains the best source for vulnerability data.