Luka w zabezpieczeniach podsystemu jądra Linux gadżetu USB, potencjalnie umożliwiająca wykonanie kodu

USB Gadget, podsystem jądra Linuksa, który zapewnia interfejs programistyczny do tworzenia urządzeń klienckich USB i oprogramowania symulującego urządzenia USB, zawiera lukę (CVE-2021-39685), która może prowadzić do wycieku informacji z jądra, awarii lub wykonania dowolny kod na poziomie jąder. Atak przeprowadzany jest przez nieuprzywilejowanego użytkownika lokalnego poprzez manipulację różnymi klasami urządzeń zaimplementowanymi w oparciu o USB Gadget API, takimi jak rndis, hid, uac1, uac1_legacy i uac2.

Problem został rozwiązany w niedawno opublikowanych aktualizacjach jądra Linuksa 5.15.8, 5.10.85, 5.4.165, 4.19.221, 4.14.258, 4.9.293 i 4.4.295. Problem pozostaje nierozwiązany w dystrybucjach (Debian, Ubuntu, RHEL, SUSE, Fedora, Arch). Przygotowano prototyp exploita w celu zademonstrowania luki.

Problem jest spowodowany przepełnieniem bufora w procedurach obsługi żądań transferu danych w sterownikach gadżetów rndis, hid, uac1, uac1_legacy i uac2. W wyniku wykorzystania luki nieuprzywilejowany atakujący może uzyskać dostęp do pamięci jądra poprzez wysłanie specjalnego żądania kontrolnego z wartością pola wLength przekraczającą wielkość bufora statycznego, dla którego przydzielonych jest zawsze 4096 bajtów (USB_COMP_EP0_BUFSIZ). Podczas ataku nieuprzywilejowany proces w przestrzeni użytkownika może odczytać lub zapisać do 65 KB danych w pamięci jądra.

Źródło: opennet.ru

Dodaj komentarz