Спецпроекты

В Windows, Linux, macOS и FreeBSD выявлены десятки уязвимостей. Linux поставила антирекорд

Софт Безопасность Администратору Стратегия безопасности Пользователю Техника

ИБ-эксперты при помощи специального ПО обнаружили более 25 багов в USB-драйверах для современных настольных ОС. Большая часть из них выявлена в Linux, а в Windows, наоборот, их почти не оказалось.

«Дырявые» USB-драйвера

Сотрудники Университета Пердью (США) и Федеральной политехнической школы Лозанны (Швейцария) обнаружили десятки уязвимостей в USB-драйверах современных операционных систем. Как пишет ZDnet, они протестировали устройства на базе Linux, FreeBSD, Windows и macOS, и общее число найденных багов составило 26.

Для выявления уязвимостей они использовали ПО USBFuzz собственной разработки, принцип работы которого заключается в отправке большого массива неожиданных, некорректных и случайных данных другим приложениям. USBFuzz – это исключительно программный инструмент, без аппаратной составляющей. При запуске на компьютере операционная система «видит» его как подключенное к USB-порту устройство, что и позволило авторам эксперимента протестировать уязвимость этой части ОС.

«USBFuzz способен имитировать подключаемое USB-устройство, отправляющее драйверам массив случайных данных. За счет того, что эмулируемое устройство работает на аппаратном уровне, портировать его на другие платформы было лишь делом времени», – сказали создатели USBFuzz.

Драйверы для USB-устройств далеки от совершенства

Программный код USBFuzz на момент публикации материала был закрыт. Разработчики планируют в ближайшем будущем выложить в открытом доступе на GitHub.

Миф о безопасности Linux развенчан

Специалисты запускали USBFuzz на ПК с дистрибутивами Linux, основанными на девяти относительно современных версиях ядра – 4.14.81, 4.15,v4.16, 4.17, 4.18.19, 4.19, 4.19.1, 4.19.2 и 4.20-rc2. Дату проведения эксперимента авторы не уточняют, но, как пишет, ZDnet превью-версия 4.20-rc2 была самой последней на тот период времени (стабильная версия 4.20 вышла 23 декабря 2018 г). На момент публикации материала оно было обновлено до версии 5.6.14 (релиз 20 мая 2020 г.), плюс была доступна превью-версия 5.7-rc7 (24 мая 2020 г.).

Из 26 найденных в USB-драйверах уязвимостей 18 пришлось именно на дистрибутивы Linux. 16 из них были связаны, в том числе, с драйверами на сетевые и звуковые USB-карты, одна – с драйвером контроллера USB-хоста, и последняя – с драйвером для USB-камеры.

Большая часть уязвимостей, найденных в драйверах под Linux, уже устранена

Авторы эксперимента уведомили разработчиков Linux о своих «находках». На момент публикации материала 11 уязвимостей из 18 были устранены, а оставшиеся семь будут закрыты патчами в обозримом будущем. Точные сроки релиза обновлений не установлены.

Результаты других ОС

В тесте также участвовали FreeBSD 12, а также Windows 8 и Windows 10 разработки Microsoft с последними патчами безопасности и macOS 10.15 Catalina – самая современная настольная ОС компании Apple. Эти четыре ОС разделили между собой оставшиеся восемь USB-уязвимостей из тех, что были найдены при помощи USBFuzz.

Из всех перечисленных ОС меньше всего уязвимостей, связанных с USB (всего одна), было найдено в FreeBSD, и три обнаружились в macOS – две из них приводили к внезапной перезагрузке ОС, а одна вызывала зависание системы. Windows 8 и Windows 10 на пару содержат четыре уязвимости, каждая из которых провоцирует появление «синего экрана смерти».

Даты выхода патчей, закрывающих бреши в этих четырех ОС, на момент публикации материала оставались неизвестными.

Другие уязвимости в USB

26 багов в USB-драйверах – далеко не единственные, что были выявлены за последние годы. В начале декабря 2019 г. сотрудник Google Андрей Коновалов, используя разработанное в Google ПО syzkaller (оно выполняет те же действия, что и USBFuzz), сообщил в своем отчете о выявлении 15 уязвимостей драйверах USB под Linux. Им были присвоены идентификаторы от CVE-2019-19523 до CVE-2019-19537.

До этого Коновалов обнаружил еще 15 брешей в USB-драйверах, предлагаемых в ядре Linux, о которых он сообщил в августе 2019 г. 13 их них на тот момент были уже устранены.

Заниматься поиском таких уязвимостей Коновалов начал в IV квартале 2017 г., когда обнаружил первые 14 багов. В общей сложности, по данным ZDnet, он выявил 79 уязвимостей в драйверах USB.