«Надёжно зашифровано» — сказал Linux и включил отладочную консоль по ESC

Secure Boot проверяет подписи. Но не там, где надо — и это катастрофа.


0god88d8ogvuxtu8sfrt58xbu1v3b4la.jpg


Исследователь из ERNW Александр Мох обнаружил серьёзную уязвимость в системе загрузки современных Linux-дистрибутивов, включая Ubuntu 25.04 и Fedora 42. Несмотря на полное шифрование дисков, Secure Boot и пароли на загрузчик, локальный злоумышленник может обойти все защитные меры и внедрить персистентное вредоносное ПО.

Проблема кроется в отладочной оболочке, которая автоматически активируется при нескольких ошибках ввода пароля на этапе расшифровки корневого раздела. Через эту оболочку можно получить доступ к initramfs — временной файловой системе, используемой ядром на раннем этапе загрузки. И именно здесь атакующий может внедрить вредоносный код, который выполнится при следующем старте системы.

На Ubuntu 25.04 злоумышленник может вызвать отладочную оболочку initramfs: достаточно прервать графический ввод пароля клавишей ESC, трижды нажать Ctrl+C, подождать 30 секунд, отклонить повторный запрос и затем шесть раз подряд нажать Ctrl+C. Через эту оболочку можно подключить внешний носитель с нужными утилитами и внести изменения в initramfs — без нарушения цифровых подписей Secure Boot, которые проверяют только ядро и модули.

Secure Boot проверяет только ядро и модули, но не initramfs. Это позволяет атакующему распаковать initramfs, добавить вредоносные хуки и запаковать его обратно — всё это без каких-либо предупреждений от системы.

Для реализации атаки нужен лишь физический доступ к компьютеру и USB-накопитель с минимальным набором утилит. Протестированные системы работали с корневыми разделами, зашифрованными по умолчанию, но сценарий воспроизводим и на других дистрибутивах.

Мох предлагает простое решение: изменить параметры загрузки ядра. Для Ubuntu следует добавить panic=0, для Fedora и подобных систем — rd.shell=0 rd.emergency=halt. Это предотвратит активацию отладочной оболочки, останавливая систему при ошибке.

Также рекомендуется установить пароль не только на изменение записей загрузчика , но и на сам процесс загрузки. Дополнительно можно включить аппаратное шифрование SSD или зашифровать загрузочный раздел с помощью LUKS — меры, редко встречающиеся в типовых гайдах по защите Linux.

Исследователь подчеркивает: несмотря на простоту обхода, уязвимость остаётся недооценённой. Она не требует сложных инструментов и может использоваться для установки бэкдоров, невидимых большинству защитных решений.

В долгосрочной перспективе разработчики могли бы перейти к монолитной подписанной сборке ядра и initramfs. Это закроет аналогичные векторы атак, но потребует изменений в экосистеме большинства дистрибутивов .