
Десять лет индустрия возводила крепость доверенной загрузки: UEFI вместо legacy BIOS, Secure Boot, измеренная загрузка, чипы TPM. Крепость простояла ровно до того момента, как атакующие сообразили очевидное: стены можно не штурмовать, если подкопаться под фундамент. Буткиты — вредоносы, стартующие из прошивки до загрузки операционной системы, — давно перестали быть экспонатами конференций по безопасности. По данным исследователей, в обращении уже ходят буткиты, которые продаются как коммерческий продукт и обходят Secure Boot; бреши не раз находили в самих цепочках доверенной загрузки; прошивки сетевого оборудования то и дело оказываются под ударом. Вывод напрашивается сам: линия обороны съехала ниже операционки, а туда почти никто не заглядывает.

Нажимаете кнопку питания — и первым включается не Windows и не Linux, а UEFI: код, зашитый в микросхему SPI-флеш на материнской плате. Он инициализирует железо, находит загрузчик и передаёт ему эстафету. Дальше — загрузчик, ядро, драйверы — всё по умолчанию верит тому, что случилось до него. Классический руткит прячется внутри уже работающей системы, и переустановка его вычищает. Буткит прописывается выше по цепочке — во флеш-память платы или в загрузочный раздел, — и тогда операционка, антивирус и сам пользователь видят «загрязнённый» мир: патчи ядра подменены, защитные механизмы выключены, следы заметаны.
Первые UEFI-буткиты, пойманные «в дикой природе», исследователи задокументировали ещё несколько лет назад. С тех пор прошивочные импланты перестали быть штучной работой: как сообщают исследователи, в обращении появились буткиты, которые распространяются как коммерческий продукт, умеют обходить Secure Boot, внедряться в цепочку загрузки и удерживать контроль над машиной даже после переустановки системы. Главное их свойство — живучесть. Снос разделов помогает не всегда. Даже замена диска — не всегда: если имплант сидит в SPI-флеш или доращивается заново при каждом старте, вы просто сдали ему новый дом.

Смысл Secure Boot прост до безобразия: прошивка проверяет цифровую подпись каждого компонента загрузки и не пускает всё неподписанное. Подвох — в самой базе доверия. Отмычкой, если верить описаниям исследователей, не раз служили старые, но подписанные компоненты: в давних версиях загрузчиков находили спрятанную возможность принять из загрузочной записи флаг, заставляющий загрузчик исполнить произвольный код. Вишенка в том, что такой уязвимый бинарник был подписан легитимным ключом из базы доверия и потому считался абсолютно законным. Формально Secure Boot работал ровно как задуман — просто цепочка доверия обрывалась в очень неудачном месте.
Сценарий атаки выглядит издевательски. Злоумышленник с физическим доступом подсовывает машине уязвимый загрузчик, тот исполняет неподписанный код, а код — по описаниям исследователей — отключает проверки Secure Boot прямо в NVRAM и ставит имплант. С этого момента машина загружается «с заражением по умолчанию». Латают такие дыры с приличным лагом: исправленные загрузчики и списки отзывов скомпрометированных подписей должны доехать до каждой машины через обновления. Пока они в пути, замок формально закрыт, а ключ от него гуляет по сети.

С роутерами всё тот же сюжет. Исследователи не раз описывали цепочки уязвимостей, позволяющие попасть в устройство без пароля и учётной записи — через сервисы, которым на наружном интерфейсе делать нечего. Вендоры выпускают патчи, но армия устройств, разосланная по квартирам и офисам, обновляется годами. Её, судя по всему, спокойно доят ботнеты: крадут учётные данные, подменяют DNS, превращают роутеры в прокси для анонимизации чужих атак.
И это не история про одного вендора. Прошивка есть везде — в камерах, NAS, телевизорах, машинах, медицинском оборудовании, — и именно она чаще всего не обновляется никогда: пользователь не умеет, вендор забыл, модель давно снята с поддержки. Параллельно цепочка доверия UEFI разрослась до неприличия: корень доверия в кремнии (Boot Guard у Intel, PSB у AMD), ключи производителя платы, ключи Microsoft, сторонние сертификаты. Часть этих ключей, если судить по открытым данным, подходит к сроку истечения — впереди, как ожидают, массовая миграция на новые сертификаты. Каждое звено — точка отказа. Каждый переход — окно для атаки.

В России к проблеме доверенной загрузки подошли со стороны подчеркнутого недоверия — через отдельный аппаратный модуль. Комплекты доверенной загрузки типа «Соболь» — по описаниям разработчиков, отдельная плата со своим крипточипом, которая до старта ОС сверяет контрольные суммы загрузчика и ядра с эталонами и не пускает машину дальше при малейшем несовпадении. Судя по открытым источникам, такие модули применяются в сертифицированных конфигурациях для госсектора вместе с отечественными операционными системами, у которых свои механизмы контроля целостности на этапе загрузки.
На стороне обнаружения работают крупные антивирусные вендоры: их исследователи, по открытым публикациям, одними из первых публично разобрали резидентные UEFI-импланты, а сканирование прошивки уже встраивается в корпоративные продукты. Firmware-аудитами и исследованиями занимаются и специализированные ИБ-компании. Ограничения при этом видны невооружённым глазом. Большинство отечественных машин, по имеющимся данным, работает на сторонних UEFI с закрытым кодом — сторонний аудит там крайне затруднён. Собственные отечественные процессоры со своей прошивкой закрывают лишь узкий сегмент. Специалистов по безопасности прошивок на рынке откровенно мало. Требования регуляторов, похоже, подталкивают вендоров к контролю прошивок, но замещение самой базы — плат и их микрокода — движется медленнее, чем растут угрозы.
Прошивка стала новым периметром — и новым дном. Защиту операционной системы довели до автоматизма, а слой ниже так и остался terra incognita — и для админов, и для домашних пользователей. Практический минимум до неприличия банален: вовремя обновлять BIOS и прошивки роутеров, включать TPM, не отключать Secure Boot «для удобства», а на критичных машинах добавлять аппаратный контроль загрузки. Со стратегией хуже. Цепочка доверия, растянутая на кремний, вендора плат и держателя ключей, слишком длинна, чтобы кто-то реально её контролировал. Чем она короче и чем прозрачнее прошивка, тем меньше шансов, что следующий буткит переживёт и переустановку, и апгрейд.