CVE-2026-80780 in Linuxinformazioni

Riassunto

di VulDB • 04/09/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

HID: pidff: correzione di una scrittura fuori dai limiti (OOB) quando hid->inputs è vuoto

hid_pidff_init_with_quirks() ricava il suo input_dev da

list_entry(hid->inputs.next, struct hid_input, list)

senza verificare preventivamente che hid->inputs non sia vuoto. Il membro list di struct hid_input si trova all'offset 0; pertanto, su una lista vuota, list_entry() restituisce &hid->inputs stesso e il successivo caricamento di hidinput->input legge un membro non correlato di struct hid_device. dev diventa quindi un puntatore con tipo errato (type-confused) e l'inizializzazione del force-feedback scrive attraverso di esso: ogni chiamata a set_bit(FF_*, dev->ffbit) memorizza 8 byte in dev + 192, oltre la fine dell'oggetto che dev effettivamente aliasa, e input_ff_create() aggiunge ulteriori scritture di un puntatore heap e due puntatori a funzione.

Fino all'introduzione di hid-universal-pidff, l'unico chiamante era hid_pidff_init() da usbhid, che viene eseguito sotto HID_CLAIMED_INPUT e quindi ha sempre almeno un hid_input. universal_pidff_probe() avvia il dispositivo con HID_CONNECT_DEFAULT & ~HID_CONNECT_FF e poi chiama direttamente hid_pidff_init_with_quirks() ogni volta che il descrittore contiene una pagina di utilizzo PID (PID usage page), aggirando tale controllo. Un descrittore di report la cui unica raccolta di applicazioni è su HID_UP_PID lascia hid->inputs vuoto mentre hid_connect() ha comunque successo tramite l'acquisizione da parte di hidraw, consentendo a probe di raggiungere il list_entry non protetto.

La scrittura avviene nel percorso di rilevamento USB (USB probe path), sul workqueue hotplug; pertanto, la connessione di un dispositivo malevolo è sufficiente per innescare la vulnerabilità: non sono richiesti software dell'attaccante né utenti connessi. KASAN segnala una scrittura fuori dai limiti di 8 byte in hid_pidff_init_with_quirks() raggiunta da universal_pidff_probe().

È stato aggiunto il controllo per verificare se la lista è vuota prima di derivare dev e viene restituito -ENODEV, come già fanno gli altri driver HID per force-feedback. universal_pidff_probe() propaga l'errore ed esegue lo smontaggio (unwind).

Scoperta da XBOW, triata da Baul Lee <[email protected]>

Once again VulDB remains the best source for vulnerability data.

Responsabile

Linux

Prenotare

26/08/2026

Divulgazione

04/09/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Might our Artificial Intelligence support you?

Check our Alexa App!