All streams
Search
Write a publication
Pull to refresh
310
0
Николай Шлей @CodeRush

Firmware Security Engineer

Send message
Согласен со всем, но для DIY-железа, на мой взгляд, скоростные характеристики не очень важны, а даташит на конкретный чип все равно потом читать придется. Но замечание резонное, спасибо.
А как именно физически реализован сигнал о прерывании? Если выставлением высокого\низкого уровня на ноге, то достаточно соединить её с любым свободным входом GPIO (ACBUS7 вполне подойдет), и периодически читать состояние этой ноги опкодом GPIOReadLB (0x81). Варианта с полной остановкой потока чтения я не знаю. В документации есть режимы Wait On I/O High/Low (опкоды 0х88 и 0х89), но их не использовал ни разу, поэтому ничего об их работе сказать не могу.
Я сел писать эту статью в 12 ночи и планировал написать обо всех опробованных мной способах применения FT232H, но написание затянулось до 2 и я сдался, оставив JTAG на следующий раз.
Много получилось в первую очередь для меня — давно не писал больших текстов на русском.
Прошу меня простить, в следующий подумаю еще разок, прежде чем садиться писать на Хабр перед сном.
Решил рассказать об этом в следующей статье, а то получается слишком много все за раз.
Программатор там делается из любого устройства на чипе FT2232 (и аналоге), которые стоят дешево, а сделать из них можно просто прорву всего.
В том числе и программатор\отладчик по JTAG.
Надо будет статью написать про этот чип, наверное.
КОмплект для СОздания ГОрода-Рая.
С учетом того, что G.E.C.K. — это Garden of Eden Construction Kit, перевод получается не самым плохим.
Но пласт потерян безвозвратно, это да.
AISuite — очень сомнительной полезности набор, если честно. Если можно избежать его установки — лучше так и сделать.

Вообще, софт от производителей железа бывает двух видов: отличные сторонние программы, которые были куплены и ребрендированны (так RivaTuner стал MSI Afterburner'ом, WinUSB Maker — Zotac WinUSB Maker'ом, CPU-Z и GPU-Z сменили шкурки для ASUS и Gigabyte, а у EVGA вообще весь софт такой, и это правильно) и написанные в недрах этих самых производителей поделки на .NET, крайне кривые и глючные, устанавливающие в систему кучу ненужных драйверов и служб, конфликтующие с нормальными программами мониторинга и управления или портящие BIOS при попытке поменять в нем картинку при загрузке.
Лучший способ избежать подобных глюков — чистая установка системы сразу после покупки ПК и вдумчивое добавление программ, а не отчаянное их удаление в попытке выяснить, какая именно из тех ненужных 20 утилит мешает системе работать нормально.
НДМГ — такая жуткая дрянь, что пусть хоть на керосине летают, и черт с ним, с удельным импульсом.
Я понимаю, когда ракеты вроде «Синевы» летают на НДМГ+АТ, но у них и задачи другие совсем.
Правильно. Загрузчик нужен все равно, но его теперь гораздо проще написать, т.к. сервисы вроде доступа к файловой системе подключенных дисков, сети (браузер пока не встречал, но TCP и UDP уже имеются), видеокарте, USB-устройствам и т.п. предоставляет UEFI.
Microsoft — одни из самых ранних и активных членов UEFI Forum, и они повлияли на его разработку очень сильно. Половина форматов файлов, используемых в UEFI мало чем отличается от разработанных MS для Windows: DXE-драйверы и UEFI-приложения хранятся в исполняемых файлах PE32+ (с неизменной еще с DOS сигнатурой MZ в начале файла), сертификаты хранятся в структурах WIN_CERTIFICATE, да и INTN EFIAPI EfiMain подозрительно напоминает WinMain.
SecureBoot же MS продавливает очень сильно, и Windows 8.1 даже пишет в правом нижнем углу рабочего стола «SecureBoot отключен», чтобы пользователь видел, что системе это не нравится. Вся возня с SecureBoot сделана ради одной единственной цели — усложнить конечному пользователю модификацию БИОСа или загрузчика ОС, независимо от цели модификации. Если у них все получится, как они хотят, то придется делать «Jailbreak» своему ноутбуку. К счастью для нас, пока все их усилия не привели ни к чему, кроме небольшой потери времени на поиск недокументированных ключей или сборку программатора SPI-flash из спичек и желудей, но эта ситуация может измениться к худшему с выходом каждой следующей линейки процессоров и чипсетов Intel. На данный момент — все фарс и тлен, специалисты по безопасности хмыкают и крутят пальцем у виска, а паранойики уже давно на ARM, еще с момента переезда Management Engine в чипсет.
Достаточно перестать добавлять в свои утилиты недокументированные ключи для обхода своей же защиты от прошивки чего попало — и все будет хорошо. Но пока гром не грянет — ничего сделано не будет.
Пока никто Compatibility Support Module выбросить не додумался, это да, но это не совсем «опция по выключению». Весь стек UEFI (кроме драйверов на то оборудование, для которого есть старые Option ROM) продолжает работать, а Legacy BIOS запускается в режиме эмуляции. Возможно, на серверах это не так, не знаю. Олдскульные загрузчики с х86 не выкинут еще лет 10, наверное, слишком ценна обратная совместимость.
Не знаком с рынком серверов, кроме мелочи на базе плат SuperMicro, но на десктопах, ноутбуках и этих мелких серверах уже с 2011 года нет никакого выбора, UEFI или не UEFI — Intel сделала его за всех нас. Ни одни десктопный вендор более плат без UEFI не делает. За все ноутбуки не скажу, но тоже давно БИОСов не видел. Хороший, плохой, в общем — пушка все равно у Intel.
Можно попробовать снять дамп БИОСа с любого достаточно современного сервера и посмотреть, что там. Практически уверен, что там UEFI.
SecureBoot со своими ключами решает эту проблему, по идее.
Но по факту, на десктопах сейчас безопасность UEFI — никакая. Я могу за вечер написать вирус, аналогичный «чернобылю», который будет использовать только стандартный и подписанный сертификатами AMI Flash Utility, и при этом невосстановимо (без программатора) портить BIOS с потерей всего, что в нем было (серийных номеров, ключей для DTS UltraPC, Virtu, SLI и Windows 8). Спасает только одно — портить компьютеры нынешним злоумышленникам не выгодно.
Эти статьи — прекрасны.
Они написаны не переводчиком документации, и не диванным аналитиком, и уже этим они очень ценны.
Искреннее большое спасибо.
Промазал мимо ветки, ответ ниже.
Вся левая ерунда нужна маркетологам, чтобы было чем выделить свою плату среди сотни других таких же. «У нас звук при загрузке!», «Зато мы умеем с флешки БИОС восстанавливать после сбоя!», «А у нас управление настройками БИОСа возможно прямо из ОС», «А на нашу плату можно Mac OS X поставить без бубна» и так далее. Ясно, что нам, как потребителям, эта возня мышинная только вредит — слишком много времени тратится на вытребеньки, а не на отладку действительно важного кода.
Про ключи — это отдельная тема. Ребята решили устроить Chain of trust, которая начиналась бы поближе к аппаратуре (спят и видят ключи прямо в процессоре, я уверен), а заканчивалась поближе к кошельку пользователя.
Идея подписывания содержимого микросхемы SPI и выполняемого при загрузке кода — она не настолько плохая, как может показаться, с учетом того, что теперь obscurity нет вообще, и любая программа может делать с содержимым микросхемы SPI все, что угодно.
Никто, черт побери, не мешал решить эту проблему обыкновенным джампером или тумблером на задней панели и не городить огород. SecureBoot в его нынешнем виде продавлен Майкрософтом и сочувствующими, т.к. MS потеряла немало прибыли на пользователях, добавлявших себе в БИОС таблицу SLIC и активировавших свою систему как OEM'ную, и теперь им любые модификации БИОСа — как соль на рану.
Плюс UEFI в том, что некоторые глюки, которые меня бесят, я могу взять и отладить самостоятельно, пользуясь привычными и доступными средствами, дизассемблерами, эмуляторами и отладчиками, не разгребая при этом BLOB на 4 мегабайта.
Понятно, что сделано не очень, и линуксоиды справились бы лучше, скорее всего. Но вариантов нет, изучаем то, что есть.
Пользуйся UEFI или иди на ARM — тут позиция Intel и производителей десктопных плат вполне однозначная.
Сложность, по сравнению с BIOS'ами последних лет, только понизилась.
Я говорю как о сложности программирования и отладки, так и о сложности процесса загрузки.
Основная задача UEFI — загрузить и выполнить все доступные прошивки для всех подлюченных к системе устройств, и выполняет он эту задачу на «твердую четверку». Я бы тоже предпочел CoreBoot, если бы у меня был выбор, но между BIOS и UEFI я выбираю UEFI, несмотря на все его недостатки.
Добавлено в стандарт UEFI 2.3.1C, будет реализовано на всех платах, которые будут его внедрять.

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer, System Software Engineer
Lead