Andrzej Konowałow z firmy Google rozwija nowy moduł , emulować urządzenia USB w przestrzeni użytkownika. Jest w trakcie przeglądu o dodanie tego modułu do głównego składu jądra Linux. USB Raw Gadget już w firmie Google w celu uproszczenia testów fuzzingowych stosu USB jądra za pomocą narzędzia .
Moduł dodaje nowy interfejs programowania do podsystemu jądra i rozwija się jako alternatywa dla GadgetFS. Utworzenie nowego API jest podyktowane koniecznością uzyskania niskopoziomowego i bezpośredniego dostępu do podsystemu USB Gadget z przestrzeni użytkownika, co pozwala na obsługiwanie wszystkich możliwych żądań USB (GadgetFS obsługuje niektóre żądania samodzielnie, nie przekazując ich do przestrzeni użytkownika). Zarządzanie USB Raw Gadget odbywa się przez urządzenie /dev/raw-gadget na podobieństwo /dev/gadget w GadgetFS, ale do interakcji wykorzystywany jest interfejs oparty na ioctl(), a nie pseudo-FS.
Oprócz bezpośredniego przetwarzania wszystkich żądań USB przez proces w przestrzeni użytkownika, nowy interfejs wyróżnia się również możliwością zwracania dowolnych danych w odpowiedzi na żądanie USB (GadgetFS przeprowadza weryfikację poprawności opisów USB i filtruje określone odpowiedzi, co utrudnia identyfikację błędów podczas testów fuzzingowych stosu USB). Raw Gadget daje również możliwość wyboru konkretnego urządzenia UDC (USB Device Controller) i sterownika do podłączenia, podczas gdy GadgetFS łączy się z pierwszym dostępnym urządzeniem UDC. Różnym UDC przypisywane są przewidywalne nazwy w celu rozdzielenia różnych typów kanałów wymiany danych w ramach jednego urządzenia.
Źródło: opennet.ru
