CVE-2026-80824 in Linuxinformazioni

Riassunto

di VulDB • 04/09/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

usb: usbfs: correzione del use-after-free di usb_device in usbdev_release()

La funzione usbdev_release() rilascia il proprio riferimento alla struct usb_device prima di svuotare (drain) l'elenco degli URB asincroni completati, ma tale percorso di svuotamento legge nuovamente attraverso lo stesso oggetto: free_async() chiama dec_usb_memory_use_count() per qualsiasi URB il cui buffer proviene dall'area mappata in memoria tramite mmap() della usbfs, e la sua prima istruzione è bus_to_hcd(ps->dev->bus).

Dopo una disconnessione, il riferimento di usbfs può essere l'ultimo rimasto; in tal caso, usb_put_dev() libera il dispositivo e il ciclo successivo legge dall'offset 80 della memoria già liberata (freed memory), utilizzando il risultato come puntatore a struct usb_hcd*, che hcd_buffer_free_pages() successivamente dereferenzia.

Questo scenario è raggiungibile da un processo non privilegiato che dispone di accesso in lettura/scrittura a un nodo /dev/bus/usb: effettuare la mmap() del file descriptor, inviare un URB con un buffer all'interno della regione mappata, attendere che il dispositivo venga scollegato, quindi eseguire munmap() e close(). Il bug si riproduce ad ogni tentativo piuttosto che essere una race condition (condizione di gara), poiché una vma MAP_SHARED attiva mantiene un riferimento alla struct file; pertanto, usbdev_release() non può essere eseguita finché l'ultima vma non viene rimossa, e il ramo di liberazione di dec_usb_memory_use_count() viene sempre eseguito.

BUG: KASAN: slab-use-after-free in dec_usb_memory_use_count+0x3ae/0x410 Lettura di dimensione 8 all'indirizzo ffff8880122ee050 da parte del task poc/769 CPU: 1 UID: 1000 PID: 769 Comm: poc Tainted: G B 6.12.94 #3

Call Trace: dec_usb_memory_use_count+0x3ae/0x410 free_async+0x2aa/0x4f0 usbdev_release+0x375/0x460 __fput+0x3ea/0xb50 __x64_sys_close+0x86/0x100

Allocato dal task 11: usb_alloc_dev+0x55/0xd90 hub_event+0x2524/0x43d0

Liberato dal task 769: kfree+0x121/0x360 device_release+0xd2/0x280 usb_put_dev+0x23/0x30 usbdev_release+0x2d8/0x460

Rilasciare il riferimento al dispositivo dopo il ciclo di svuotamento (drain loop). Nessun elemento tra i due punti richiede che tale riferimento sia stato precedentemente rilasciato.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsabile

Linux

Prenotare

26/08/2026

Divulgazione

04/09/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

basso

Fonti

Want to know what is going to be exploited?

We predict KEV entries!