Andrej Konovalov von Google entwickelt ein neues Modul , zum Emulieren von USB-Geräten im Benutzerspace. Befindet sich in der Prüfung auf die Aufnahme dieses Moduls in den Hauptbestand des Linux-Kernels. USB Raw Gadget wird bereits von Google zur Vereinfachung von Fuzzing-Tests des USB-Stacks im Kernel mithilfe von Werkzeugen entwickelt. .
Das Modul fügt der Kernel-Subsystem eine neue Programmierschnittstelle hinzu und wird als Alternative zu GadgetFS weiterentwickelt. Die Erstellung einer neuen API ist durch die Notwendigkeit bedingt, einen niedrigleveligen und direkten Zugang zur USB Gadget-Subsystem aus dem Benutzerspace zu erhalten, wodurch alle möglichen USB-Anfragen bearbeitet werden können (GadgetFS bearbeitet einige Anfragen selbstständig, ohne sie an den Benutzerspace weiterzuleiten). Die Verwaltung des USB Raw Gadget erfolgt über das Gerät /dev/raw-gadget, ähnlich wie bei /dev/gadget in GadgetFS, wobei jedoch eine Schnittstelle auf Basis von ioctl() verwendet wird, anstelle eines Pseudo-Dateisystems.
Neben der direkten Bearbeitung aller USB-Anfragen durch einen Prozess im Benutzerspace zeichnet sich die neue Schnittstelle auch dadurch aus, dass sie die Möglichkeit bietet, beliebige Daten als Antwort auf eine USB-Anfrage zurückzugeben (GadgetFS führt eine Validierung der USB-Deskriptoren durch und filtert bestimmte Antworten, was die Auffindung von Fehlern bei Fuzzing-Tests des USB-Stacks behindert). Raw Gadget ermöglicht auch die Auswahl eines bestimmten UDC (USB Device Controller) und Treiber zur Anbringung, während GadgetFS an das erste verfügbare UDC angebracht wird. Für verschiedene UDCs werden voraussagbare Namen vergeben um verschiedene Arten von Datenkanälen innerhalb eines Geräts zu unterscheiden.
Quelle: opennet.ru
