In USB Gadget, il sottosistema del kernel Linux che fornisce un'interfaccia software per la creazione di dispositivi USB client e la simulazione di dispositivi USB, è stata individuata una vulnerabilità (CVE-2021-39685) che può portare a una fuoriuscita di informazioni dal kernel, a un crash o all'esecuzione di codice arbitrario a livello di kernel. L'attacco viene effettuato da un utente locale non privilegiato attraverso manipolazioni di vari classi di dispositivi implementati sulla base dell'API USB Gadget, come rndis, hid, uac1, uac1_legacy e uac2.
Il problema è stato risolto negli aggiornamenti recenti del kernel Linux 5.15.8, 5.10.85, 5.4.165, 4.19.221, 4.14.258, 4.9.293 e 4.4.295. La problematica rimane tuttora non risolta nelle distribuzioni (Debian, Ubuntu, RHEL, SUSE, Fedora, Arch). È stato preparato un prototipo di exploit per dimostrare la vulnerabilità.
Il problema è causato da un overflow del buffer nei gestori delle richieste di trasferimento dati nei driver gadget rndis, hid, uac1, uac1_legacy e uac2. A seguito dell'exploitation della vulnerabilità, un attaccante non privilegiato può accedere alla memoria del kernel inviando una richiesta di controllo speciale il cui valore del campo wLength supera la dimensione del buffer statico, per il quale vengono sempre allocati 4096 byte (USB_COMP_EP0_BUFSIZ). Durante l'attacco, è possibile leggere o scrivere fino a 65 KB di dati nella memoria del kernel da un processo non privilegiato nello spazio utente.
Fonte: opennet.ru
