На прошедшей в Ванкувере конференции CanSecWest бывшие сотрудники The MITRE Corporation и сооснователи стартапа Legbacore продемонстрировали способ внедрения низкоуровневой троянской компоненты LightEater. Действуя на уровне UEFI/BIOS, этот буткит остаётся невидимым для антивирусов и выполняет свои функции даже в том случае, если пользователь загрузил защищённую ОС с флэшки или Live DVD.
Авторы доклада Кори Калленберг (Corey Kallenberg) и Ксено Кова (Xeno Kovah) ранее выступали на BlackHat и других конференциях, посвящённых информационной безопасности. Они описывали найденные уязвимости в реализации базовых компонентов прошивок, давали неутешительные прогнозы, но всё оставалось на своих местах. Работая в рамках некоммерческой организации MITRE, они были обязаны соблюдать политику неразглашения деталей и терпеливо ждать, пока производители выпустят исправления. Проблема заключалась в том, что никто и не собирался этого делать.
Своё новое выступление они начали с того, что на этот раз готовы перейти от слов к делу.
«Несмотря на описание многочисленных уязвимостей в BIOS, многие люди до сих пор считают их маловероятными и сомневаются в реальной распространенных таких методов инфицирования. Недавно мы стали независимыми исследователями, поэтому у нас больше нет необходимости согласовывать публичный релиз, – заявили они. – Теперь мы можем бороться с найденными ошибками наиболее радикальным способом: живой демонстрацией инфицирования BIOS на компьютерах сразу нескольких производителей!».
В демонстрации участвовали материнские платы производства Acer, Asus, Gigabyte, Foxconn (для ноутбуков Hewlett-Packard) и MSI. Все их удалось протроянить без особых усилий. Проще всего заразить было платы Gigabyte. Они позволяли даже записать во флэш-память BIOS недопустимую инструкцию через модифицированный драйвер ядра, в результате которой плата отказывалась загружаться до физической замены чипа. Это похоже на новый виток развития вирусов типа «Чернобыль» (Win95.CIH), но с гораздо более серьёзными последствиями.
UEFI (Universal Extensible Firmware Interface), это универсальный расширяемый интерфейс прошивки. Он служит мостом между операционной системой и управляющим микрокодом оборудования. Если не считать специализированные разработки для процессоров серии Itanium, то массово UEFI стал вытеснять упрощённую реализацию BIOS примерно с 2008 года.
Ранее через классический интерфейс BIOS предлагались только возможности базовой настройки компьютера: выбор загрузочного устройства, включение/отключение портов, задание пароля, рабочих частот, таймингов и других параметров. Каждая версия прошивки была ориентирована не просто на определённую версию материнской платы, но и на её конкретную ревизию. Попытка записать во флэш-память любой другой микрокод обычно приводила к превращению компьютера в «кирпич» и требовала физической замены чипа памяти с донорской платы. Gigabyte стала бороться с этим путём добавления резервной схемы BIOS, а MSI придумала технологию Mr.Flash, позволяющую загружать BIOS с USB-флэшек.
В отличие от базовой реализации BIOS, микрокод UEFI менее специфичен для каждой материнки. Он всегда соответствует одной из версий открытого стандарта и построен по модульной архитектуре. Текущая версия стандарта UEFI 2.4B была принята ровно год назад. В ней содержится достаточное количество общих модулей, чтобы сделать их эффективной мишенью для универсальной атаки.
Конечно, производители по-прежнему могут вносить изменения в прошивки своих материнских плат, но большинство предпочитает использовать готовую эталонную структуру микрокода и ограничивается лишь программированием специфических для данной платы компонентов.
На это и обратил внимание Калленберг, ещё работая в MITRE. Свой стартап он называл в честь ключевого персонажа мифологии Вуду – Papa Legba, поскольку скрытое и не зависящее от ОС управление компьютерами выглядит как настоящая магия.
Из-за распространённости стандартных конфигураций UEFI вместе с коллегами ему удалось создать универсальный механизм заражения, не привязанный к конкретному производителю материнских плат. Внедрение трояна возможно как удалённо, так и в момент физического доступа (например, при прохождении таможенного досмотра или сервисного обслуживания). Вся процедура занимает менее двух минут и не требует от атакующего высокой квалификации.
В случае физического доступа надо подключить выводы программатора напрямую к контактам схемы BIOS. На одних ноутбуках для этого достаточно снять часть нижней крышки, а другие придётся разобрать почти полностью, отсоединив клавиатуру и дополнительные модули в попытках добраться до чипа. Однако сам процесс перепрошивки занимает меньше минуты.
Калленберг и Кова обращают внимание на то, что код буткита хранится в энергонезависимой памяти, поэтому он сохраняется при отключении питания. Один и тот же буткит может заразить разные материнские платы. Для этого либо не потребуется никаких модификаций кода, либо понадобится его минимальная адаптация, которую можно выполнить в автоматическом режиме на основе простого поиска совпадающих паттернов. Внедрённый троян остаётся скрытым для всех доступных пользователям методов обнаружения.
По своим возможностям уровень UEFI близок к встраиваемым операционным системам. Ещё до загрузки ОС в нём доступен графический интерфейс, поддержка сетевых функций, собственные драйверы и сервисы. С помощью LightEater можно определять MAC-адрес и реальный IP-адрес жертвы даже за Tor, перехватывать критические данные (включая криптографические ключи и пароли) ещё до их шифрования средствами ОС и приложений, останавливать выполнение любых программ и «окирпичить» устройство, записав в BIOS мусор по адресам первых инструкций.
Преимущество работы троянской компоненты в режиме системного управления (SMM) заключаются в том, что прерывания (SMI) не могут блокироваться операционной системой. Код программ, работающих в SMM, также не виден для ОС и приложений, поскольку помещается в защищённую область памяти SMRAM (чаще всего – в её верхний сегмент (TSEG, Top Segment). Поэтому для анализа программ в SMM потребуется использовать либо дополнительное оборудование, либо продвинутые методы обратной разработки.
Вектор такой атаки не направлен на продукцию конкретного бренда. По сути, это универсальная методика заражения. Единственное, что могут пока сделать пользователи для защиты, это обновлять прошивки по мере их появления на сайте разработчика. Если ваш ноутбук пересекал границу или побывал в сервисном центре, то лучше выполнить обновление ещё раз – даже на ту же самую версию.
Презентация под названием «Сколько миллионов BIOS вы хотите инфицировать?» была не единственной в своём роде. Сразу после неё Калленберг выступил вместе с другим исследователем – Рафалем Войчеком (Rafal Wojtczuk). Доклад «Атаки на систему безопасности UEFI» продолжил начатую тему, а вслед за ним прозвучали два выступления сотрудников Intel – «Новый класс уязвимостей в программах обработки прерываний системного управления прошивок BIOS/UEFI» и «UEFI, открытая платформа и дилемма защитника».
В целом разбор уязвимостей с низкоуровневой реализацией стал общим мотивом заключительного дня конференции, гвоздём которой стала именно живая демонстрация процесса. «Мы ещё не начали выкладывать детали под хеш-тэгом #badUSB, но следите за обновлениями!» – завершили своё выступление Калленберг и Кова.
Конечно, это сарказм в духе конференции, призванный привлечь внимание производителей. Сейчас Legbacore работает вместе с Intel над созданием первого коммерчески доступного механизма изоляции кода в SMM через расширенные инструкции виртуализации.