Sterowniki USB pełne błędów
Testowanie oprogramowania
Nowe narzędzie bazujące na tzw. fuzzingu (fuzz testingu), czyli metodzie testowania oprogramowania i znajdowania w nim podatności na ataki, pozwoliło odkryć nowe, niebezpieczne błędy w sterownikach USB.
System o nazwie USBFuzz polega na zautomatyzowanym wysyłaniu do programu różnego rodzaju losowych danych wejściowych (odpowiednio do wykorzystywanej technologii) i rejestrowaniu niepożądanych wydarzeń, takich jak crash, wycieki pamięci czy nieautoryzowany dostęp. Podczas testów wykazał on 26 nowych błędów dotyczących USB. Luki pojawił się w oprogramowaniu Linuksa, Windowsa, Maca i FreeBSD.
Przenośny fuzzer
Urządzenie USBFuzz zostało opracowane przez dwuosobowy zespół badaczy: dra Hui Penga z Uniwersytetu Purdue i dra Mathiasa Payera ze Szwajcarskiego Federalnego Instytutu Technologii w Lozannie. Pozwala ono na dogłębne testowanie sterowników USB działających w nowoczesnych systemach.
Zasadniczo USBFuzz wykorzystuje emulowane programowo urządzenie USB do dostarczania losowych danych urządzeń sterownikom (podczas wykonywania operacji IO). Naukowcy podali, że przetestowali USBFuzz na:
- 9 najnowszych wersji jądra Linux: v4.14.81, v4.15, v4.16, v4.17, v4.18.19, v4.19, v4.19.1, v4.19.2 i v4.20-rc2 (najnowsza wersja w momencie oceny),
- FreeBSD 12 (najnowsze wydanie),
- MacOS 10.15 Catalina (najnowsze wydanie),
- Windowsie (wersji 8 i 10, z zainstalowanymi najnowszymi aktualizacjami zabezpieczeń).
Tym sposobem odkryto 26 nowych błędów. Badacze znaleźli 1 błąd we FreeBSD, 3 w MacOS-ie (2 skutkują nieplanowanym ponownym uruchomieniem, 1 jeden zamraża system), 4 cztery w Windowsie 8 i 10 (powodujące Blue Screens of Death). Jednak zdecydowana większość błędów, do tego najcięższych, wykryli w Linuksie – ogółem 18.
Błędy USB
16 luk w Linuksie to błędy pamięci o wysokim wpływie na bezpieczeństwo w różnych podsystemach Linux (rdzeń USB, dźwięk USB i sieć), 1 błąd znajdował się w sterowniku kontrolera hosta USB w Linuksie, a ostatni w sterowniku kamery USB.
Peng i Payer powiedzieli, że zgłosili te błędy zespołowi jądra Linuksa wraz z proponowanymi łatami, aby zmniejszyć „obciążenie programistów jądra przy naprawianiu zgłaszanych luk".
Z 18 błędów Linuksa zespół badawczy stwierdził, że 11 otrzymało łatkę po pierwszych raportach na ich temat w zeszłym roku. 10 z 11 błędów otrzymało również CVE, czyli unikalny kod przypisany do poważnych błędów bezpieczeństwa.
Docelowo narzędzie opracowane przez badaczy ma działać na zasadach open source. Będzie można przejrzeć te dane na GitHubie. Badacze stwierdzili, że USBFuzz przewyższa poprzednie narzędzia, takie jak vUSBf, syzkaller i usb-fuzzer, ponieważ zapewnia testerom większą kontrolę nad danymi testowymi i jest łatwe do zastosowania w różnych systemach operacyjnych, w przeciwieństwie do wszystkich powyższych.
fot. dr Hui Peng