Pull to refresh
316
0
Николай Шлей@CodeRush

Firmware Security Engineer

Send message
// Мама дорогая, мракобесие и джаз. :)
Надо срочно садиться и писать статью про TPM 1.2 и 2.0 вообще, и firmware TPM в частности, а то тут ситуация еще хуже, чем с SecureBoot.
Тут спрашивают, чем она так плоха, эта десятка, что с бесплатным обновлением на нее приходится воевать.
Отвечаю от себя лично: explorer.exe безнадежно испорчен .NET'ом, рабочий стол, который со времен Windows 98 обновлялся мгновенно, теперь не обновляется по 2 секунды на машине с восьмиядерным процессором и 32 Гб оперативной памяти. Создает какая-то программа на столе файл, и ты сидишь и ждешь, пока он наконец соизволит отрисоваться…
А если включить тяжелую компиляцию, которая загрузит все ядра на 100%, то через некоторое время рабочий стол, меню Пуск и все остальное перестает отвечать вообще, хоть ресет нажимай. Последний раз видел такое на Windows XP, и теперь оно снова с нами, всем радоваться полчаса.
Три разных конфигурации попробовал, четыре раза пытался перейти — и все время откатывался на Win 8.1 со StartIsBack, где с GUI все в порядке.
Замечу про BIOS — называть нынешнюю прошивку BIOS'ом вполне можно, т.к. и «по букве» (т.е. как базовая система ввода-вывода) и по духу (т.е. как motherboard firmware) термин вполне подходящий. UEFI — это вообще говоря только интерфейс между прошивкой и OS, и реализовывать его может что угодно, даже coreboot или Uboot.
Короче: термин уже стал нарицательным, и не стоит ругать за него.
Без rEFInd то же самое делается добавлением этого драйвера в переменную DriverXXXX, и он будет грузиться самой прошивкой, если она поддерживает спецификацию UEFI не ниже 2.3.
Что за модель ноутбука?
BBS Popup (то самое меню выбора устройства) есть практически во всех прошивках последних 5 лет, но иногда его нужно включать отдельно. Проверьте свою прошивку на наличие Advanced Mode в дополнение к EZ Mode, возможно, нужное меню и его горячая клавиша просто отключены по умолчанию.
Поддержка других ФС добавляется соотвествующими драйверами, которые с ESP может грузить как сама прошивка, так и системы управления загрузкой вроде rEFInd. Почему ругается установщик — он расчитан на систему «среднего» пользователя, у которого в прошивке никаких драйверов, кроме FAT, нет, и он не будет разбираться, почему после установки на загрузчика раздел EXT4 он не появился в списке.
Почему не пользоваться всплывающим меню по F10/F11/F12 для выбора загрузочного устройства вместо того, чтобы в BIOS Setup заходить?
Поправлю немного фактических неточностей:
UEFI видит только один специальный ESP-раздел, обычно он имеет размер 100-200 мегабайт и форматирован в FAT32 (бывает в FAT16)
Это неверно. UEFI видит все разделы, для ФС которых в конкретной реализации прошивки имеются драйверы. ESP же отличается от остальных разделов только тем, что а) для FAT драйвер иметь обязательно и б) на разделе ESP осуществляется поиск загрузчиков и автоматическое создание соответсвующих переменных BootXXXX, если загрузчики нашлись.

Но сам просматривать ESP-разделы и добавлять новые записи он не умеет, эти обязанности возложены на EFI Shell и операционные системы.
Еще как умеет, и это умение требуется спецификацией начиная с UEFI 2.2 (SecureBoot появился в UEFI 2.3.1C). Я советую полностью отказаться от использования efibootmgr, т.к. утилита эта имеет давнюю историю порчи вполне валидных переменных на платах с прошивками на кодовой базе Insyde H2O и Phoenix SCT. Если вам не нравится управление загрузчиками и приоритетами из BIOS Setup — используйте команду bcfg из UEFI Shell, она работает значительно лучше и проблем с ней я не видел ни разу, в отличие от.
Преимущества объективно:
— понятный и стандартный 64(реже 32)-битный интерфейс вместо 16-битного набора костылей, программных прерываний, ресетов через порт клавиатуры и передачи управления на MBR.
— для загрузки ОС больше не нужны соственнно загрузчики, и даже вот эти «системы управления загрузкой» вроде rEFInd нужны только тем, кого по каким-то непонятным причинам не устраивает стандартное меню выбора загрузочного устройсва.
— отсутсвие легаси времен царя гороха позволяет использовать прошивку в качестве корня доверия, с SecureBoot и TPM measured boot, и быть уверенным, что загрузчик не подменен атакующим на такой же, только с бэкдором.
— то же самое отсутствие костылей ускоряет загрузку, особенно это ускорение заметно на системах с большим количеством OROMов, например, в аппаратным RAID-контролером, но даже на обычном ноутбуке видно невооруженным глазом.
— значительно более простая расширяемость, в том числе и конечным пользователем, через подсистему DriverXXXX/KeyXXXX, о которой надо бы написать статью, а то она пока не очень известна массам
— много других, но конечный пользователь их не замечает и это правильно

Есть и недостатки, основной — UEFI-загрузчик имеет доступ к большему количеству «мяса и кишок» прошивки, и потому к нему должна быть более высокая степень доверия, чем к старому коду из MBR/PBR. Именно поэтому совет по отключению SecureBoot, который в этой статье дается — он крайне вредный, и лучше научиться пользоваться этой технологией, чем отключать ее лишь потому, что она «слишком сложная» и с ней «бывают проблемы».
Intel Anti-Theft, упомянутый в разделе «Защита», получил статус EOL еще в январе 2015 года, и на данный момент ни один из провайдеров ATT (Symantec, McAfee, Computrace и сам Intel) больше не поддерживает эту технологию, поэтому рекламировать её через полтора года после отключения — это просто непрофессионально, господа.
Я тоже с ними почти не работаю, потому что в Embedded и Industrial все эти вещи стараются отключить, т.к. они плохо влияют на предсказуемость системы. Сколько Intel и AMD не стараются убрать это влияние, оно все равно есть и очень заметно для людей, пытающихся выжать из x86-64 хотя бы SoftRT.
Тем не менее, «врага нужно знать в лицо», поэтому буду рад, если у вас все же получится написать что-нибудь по теме.
Спасибо за статью, уважаемый Atakua. Сколько не работай с x86 на уровне «ниже уже железо», все равно узнаешь массу нового.
Если можно, напишите в следующий раз про состояния энергосбережения: C-State, P-State, NB/Mem P-State, T-State, EIST, CPPС, DPTF, вот это все. Понятно, что все есть в даташитах, но статья на русском будет полезна в любом случае.
Спасибо автору за статью, буду теперь сюда посылать всех, кто меня про пинмод спрашивает.
Конечно. Все эти «permanently» — зачастую фикция. Anti-Cheft, вообще говоря, больше не поддерживается, и включать его я не рекомендую, а вот драйверы LoJack/Computrace лучше удалять не думая, т.к. никаким «permanently» там и близко не пахнет.
Только если в прошивке уже есть необходимые драйверы и не хватает только самого TPMа. Обычно в таком случае нужно припаять сам чип (SSOP-28, паяется руками без проблем) и пару SMD-резисторов и конденсаторов для его питания. Иногда еще придется найти strap-резисторы и поменять их так, чтобы драйверы TPM начали стартовать.
Это проблема ASUS и всех остальных вендоров, которые используют SecureBoot вместе с CSM. В итоге SecureBoot вообще ни от чего не защищает, а только приводит к таким вот неприятностям. И ладно, когда такое встречается на ноутбуках выпуска 2013 года с прошивками на базе EDK первой версии, в которых CSM просто так не отключить, но когда в ASUS специально меняют настройки по умалчанию так, чтобы скрестить ужа с ежом — виноваты только они, жаль только, что страдают в итоге пользователи.
Apple никаких инструментов для работы с МЕ из OSX не предоставляет, а больше и некому. Насколько я успел понять, у Apple есть доступ к исходному коду ME, и потому на их системах прошивка сильно обрезана и не публикует интерфейс HECI, а то и вообще отключается после начальной инициализации, но тестовой машины у меня нет, так что судить не берусь.
Есть, но пока еще не во всех чипсетах, а только в SoC. Это PSP, который является ядром ARM с TrustZone и используется для HVB, реализации программного TPM 2.0, ускорения криптографических операций, а в последних поколениях Falcon SoC он уже и память тренирует, и S3 resume выполняет, так что платформа теперь без PSP фактически неработоспособна. При этом его прошивка зашифрована и подписана ключем AMD, что там в ней происходит — не знает практически никто, в том числе и потому, что машин AMD на рынке кот наплакал, и заниматься их реверсом почти никому не интересно.
Про PSP я, кстати, уже писал, почитайте, если интересно.

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Инженер встраиваемых систем, Системный инженер
Ведущий