В конце мая 2020 года команда специалистов по информационной безопасности из США и Швейцарии опубликовала в открытом доступе свое исследование, в ходе которого они смогли обнаружить 26 уязвимостей в наборе драйверов USB, используемом операционными системами Linux, macOS, Windows и FreeBSD. В настоящее время часть уязвимостей закрыто разработчиками ОС.
Исследователь Матиас Пейер (Mathias Payer) из группы разработчиков HexHive совместно с экспертом по ИБ Хуэй Пэн (Hui Peng) из университета Пердью, проводили тестирование при помощи ранее созданного ими инструмента — USBFuzz. Фактически, они использовали технику фаззинга для отправки по USB некорректных, неправильных или просто случайных данных.
Перечень ОС, на которых проверялся USBFuzz: Linux (ядра v4.14.81, v4.15,v4.16, v4.17, v4.18.19, v4.19, v4.19.1, v4.19.2 и v4.20-rc2), FreeBSD 12, MacOS 10.15 Catalina, Windows 8 и Windows 10. В каждой из ОС были установлены самые последние доступные обновления, включая патчи для безопасности.
В результате тестирования были обнаружены:
- одна уязвимость в FreeBSD;
- три уязвимости в macOS, причем две из них вызывали перезагрузку ОС, а одна смогла заставить систему зависнуть;
- четыре уязвимости в Windows, которые приводили к появлению BSOD (синего экрана смерти);
- восемнадцать уязвимостей было обнаружено в USB-стеке Linux. Причем одиннадцать из них уже пропатчены, а для остальных также будут выпущены заплатки.
Пейер и Пэн планируют рассказать о своих исследованиях на конференции по виртуальной безопасности Usenix Security Symposium, которая должна пройти в августе 2020 года.
Примечательно, что разработчики также обещают выложить на GitHub репозиторий с кодом USBFuzz. В настоящее время страница с этим проектом еще недоступна.
Ранее в ноябре 2017 году ИБ-специалист Google Андрей Коновалов применил к USB-стеку ядра Linux инструмент syzkaller и фаззинг. Тогда он смог обнаружить 79 различных багов. Причем их можно эксплуатировать только при помощи вредоносного USB-устройства, то есть злоумышленнику нужен физический доступ к уязвимому ПК. Также обнаружилось, что большинство найденных им уязвимостей это простые DoS-баги, которые провоцируют «зависание» или перезагрузку. Однако, некоторые из обнаруженных Коноваловым уязвимостей все же позволяли злоумышленнику выполнить произвольный код в контексте ядра Linux.