Уязвимость «физического присутствия» в UEFI

в 18:10, , рубрики: rootkit, Secure Boot, UEFI, Железо, информационная безопасность, системное администрирование, метки: , ,

Уязвимость «физического присутствия» в UEFI
Новые стандарты UEFI предполагают, что физическое присутствие человека (оператора) позволит защититься от автоматизированных действий вредоносного ПО по модификации различного рода ключей (которыми проверяется валидность загружаемого ПО), заливки неправильных версий БИОСа и т.д.

Логика такая: разрешить эти действия (которые позволят загрузить что попало) только при физическом подтверждении с клавиатуры. Мол, ни один злобный вирус не сможет физически нажать кноку на клавиатуре для биоса.

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

Я хочу поговорить о такой страшной вещи, как IPMI и iLO со встроенными KVM'ами. И о том, как легко обходится задача «физического присутствия» в современном серверном железе.

Итак, давайте взглянем на IPMI. Для примера я взял первую попавшуюся лабораторную машинку с IPMI на борту. Что он предоставляет?

1) Отдельный сетевой интерфейс на материнской плате.
2) Отдельный компьютер, питающийся от standby напряжения с блока питания, работающий независимо от основного.
3) Встроенные возможности по управлению питанием основного компьютера (power on, power off, reset)
4) IPMI (плата видеозахвата плюс виртуальные мышь и клавиатура, так же есть возможность подключить виртуальные floppy и оптические диски).

Всё это делалось для благих целей. Чтобы сисадмин мог посмотреть на работу компьютера так, как будто он подключил монитор и клавиатуру, но не сходя со своего рабочего места. Просто заходишь на IP-адрес IPMI устройства, тыкаешь «remote console» — и оно на экране. Включая, заметим, менюшку биоса.

Так как IPMI — это обычный (хоть и хиленький) компьютер, то у него есть свой ssh.

Зайдём туда.

На одной модели мы увидим довольно скудное зрелище из текстового меню с опциями.
А вот на втором…

BusyBox v1.1.3 (2009.08.12-22:19+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

 # uname -a
Linux SMC003048F209F5 2.6.24-ami #1 Wed Aug 12 15:18:58 PDT 2009 armv5tejl unknown

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

Но там же пароль!

В силу устройства IPMI им можно управлять с хоста:


ipmitool -I open user set password 2 ADMIN mynewpass

Ну и прочие вещи, типа warm reboot, cold reboot и т.д. В принципе, есть даже возможность загрузить свою версию фирмвари.

Сценарий атаки

1. Через дырку в похапе и локальный right escalation вредоносное ПО получает root'а.
2. ПО обнаруживает и подгружает модули под хардварную конфигурацию сервера.
3. ПО устанавливает сетевое соединение с IPMI (адрес можно посмотреть) или просто подменяет фирмваре и перезапускает IPMI
4. ПО в IPMI слушает POST-коды с материнской платы и ждёт перезагрузки.
5. При перезагрузке в клавиатуру отсылаются нажатия (магию OCR'а картинки мы пока исключаем, так же как и людское участие).
6. Посредством нажатий (заметим, нажатия выбираются под конкретную модель БИОСа и скачиваются в виде модулей на этапе проникновения) устанавливается в качестве доверенного ключ к bluepill (rootkit гипервизору).
7. Малваря полностью удаляет все первичные следы (себя в IPMI, себя в виде PHP и эксплоита для ядра)
8. PROFIT????

К чему всё это?

К тому, что в условиях современных серверных технологий нельзя полагаться на «физическое присутствие» как защиту от автоматического исполнения кода.

Автор: amarao

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js