Andrei Konovalov di Google sta sviluppando un nuovo modulo , per emulare dispositivi USB nello spazio utente. È attualmente in fase di revisione per l'inclusione di questo modulo nel nucleo principale di Linux. USB Raw Gadget è già presente in Google per semplificare il fuzzing dei test dello stack USB del nucleo utilizzando strumenti .
Il modulo aggiunge una nuova interfaccia di programmazione alla sottosistema del nucleo e si sviluppa come alternativa a GadgetFS. La creazione di una nuova API è motivata dalla necessità di ottenere accesso a basso livello e diretto alla sottosistema USB Gadget dallo spazio utente, consentendo così di elaborare tutte le possibili richieste USB (GadgetFS gestisce alcune richieste autonomamente, senza trasferirle allo spazio utente). La gestione di USB Raw Gadget avviene tramite il dispositivo /dev/raw-gadget, analogamente a /dev/gadget in GadgetFS, ma per l'interazione viene utilizzata un'interfaccia basata su ioctl(), non su un pseudo-FS.
Oltre alla gestione diretta di tutte le richieste USB da parte del processo nello spazio utente, la nuova interfaccia si distingue anche per la possibilità di restituire qualsiasi dato in risposta a una richiesta USB (GadgetFS verifica la correttezza degli descriptor USB e filtra determinate risposte, il che aiuta a identificare gli errori durante il fuzzing del stack USB). Raw Gadget offre anche la possibilità di selezionare un dispositivo UDC (USB Device Controller) specifico e un driver da collegare, mentre GadgetFS si collega al primo dispositivo UDC disponibile. Vengono assegnati nomi prevedibili ai diversi UDC. per separare i diversi tipi di canali di comunicazione all'interno di un dispositivo.
Fonte: opennet.ru
