W USB Gadget, podsystemie jądra Linux, który zapewnia interfejs programistyczny do tworzenia klientowskich urządzeń USB i symulacji urządzeń USB, wykryto podatność (CVE-2021-39685), która może prowadzić do wycieku informacji z jądra, awarii lub wykonania dowolnego kodu na poziomie jądra. Atak może być przeprowadzony przez nieuprzywilejowanego lokalnego użytkownika, manipulując różnymi klasami urządzeń, zaimplementowanymi w oparciu o API USB Gadget, takimi jak rndis, hid, uac1, uac1_legacy i uac2.
Problem został rozwiązany w ostatnich publikowanych aktualizacjach jądra Linux 5.15.8, 5.10.85, 5.4.165, 4.19.221, 4.14.258, 4.9.293 i 4.4.295. W dystrybucjach problem wciąż pozostaje nierozwiązany (Debian, Ubuntu, RHEL, SUSE, Fedora, Arch). Przygotowano prototyp exploit'a do demonstracji podatności.
Problem jest spowodowany przepełnieniem bufora w obsłudze zapytań dotyczących przesyłania danych w sterownikach gadget rndis, hid, uac1, uac1_legacy i uac2. W wyniku wykorzystania tej podatności nieuprzywilejowany atakujący może uzyskać dostęp do pamięci jądra poprzez wysłanie specjalnego polecenia kontrolnego z wartością pola wLength, przekraczającą rozmiar statycznego bufora, dla którego zawsze przydzielane jest 4096 bajtów (USB_COMP_EP0_BUFSIZ). W trakcie ataku można z nieuprzywilejowanego procesu w przestrzeni użytkownika odczytać lub zapisać do 65 KB danych w pamięci jądra.
Źródło: opennet.ru
