Pull to refresh

Comments 35

Довольно интересно было почитать как все это устроенно.

> Платформы с архитектурой Intel 64 становятся всё менее пригодными для запуска свободного ПО
Это конечно не очень радует
А еще 15 лет назад все это нагромождение технологий заменял один джампер- FlashWriteProtect. И все работало и работает до сих пор.
О как вы правы! Полагаю мы к этому еще вернемся. Будет новая маркетинговая фишка сезона)

Не всегда, надо заметить. Если в ноутбук еще можно поставить джампер (хоть это будет и неудобно), то в в планшет или смартфон — чаще всего нельзя совсем.
Или другой кейс: вы — техдиректор небольшой компании на десять тысяч человек. И всем нужно срочно обновить биос. Вы лично пойдете переставлять джампера по всем филиалам? Есть и другие кейсы…
Интел выбрали правильный подход. И реализовали более-менее грамотно. Проблема как обычно в вендорах, которые не соблюдают рекомендации.

Если в ноутбук еще можно поставить джампер (хоть это будет и неудобно), то в в планшет или смартфон — чаще всего нельзя совсем.
Неудобно производителю. Потому что он после этого не может творить с купленной вами железкой чего захоется в любое удобное для него (а не для вас!) время.

Планшетов или смартфором размером с SD-карту (где джампер был) я не видел, так что всё упирается совсем не в то, что тут какие-то технологические проблемы…
Неудобно производителю, неудобно пользователю. Вообще давайте подумаем: от чего защищает джампер? От записи в ненужный момент. Но он не защитит от записи не того, например. Т.е. если мы убедим пользователя поставить джампер в нужное положение, то можно зашивать туда что угодно. В то время как криптографическая подпись позволит гарантировать что будет записана именно то, что надо. Просто криптография хороша только тогда, когда ею пользуются правильно. А вендоры не захотели делать это правильно, поэтому теперь у них проблемы. Но точно так же вендоры могли закоротить джампер прямо на заводе. Эффект был бы тот же.
Короче, не в джамперах проблема. А в кривых руках и непрофессионализме.

А то что вы не владеете купленным вами железом — это конечно проблема. Для вас. Потому что большинство остальных это устраивает. Если бы это не устраивало пользователей — они бы не покупали это железо. Обычному пользователю неинтересно ковыряться в этих ваших UEFI и сравнивать глазами SHA256 хеш скачанной прошивки с хешем на сайте производителя. Они хотят что бы всё происходило автомагически. И производители дают им эту возможность.

Но к счастью у вас есть возможность покупать девелоперские железки, где всё (или почти всё) разлоченно, и можно делать с ними что угодно. Хакеры всех эпох всегда оставались на обочине консьюмерского рынка. Это совершенно нормально.
UFO just landed and posted this here
Именно. Только то, что нужно вендору. Желания пользователя тут вообще в расчёт не берутся.

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

Производительность на нуле. Где найти девелоперский набор на Intel i7? И как это потом запихать в корпус ноутбука?

Можете купить MSI-йный ноутбук :) Судо по этом посту — там разлоченно вообще всё. Твори — не хочу.

Смотрите, я понимаю вашу позицию. И даже поддерживаю её. Просто я хочу донести простую мысль: мы с вами — не целевая аудитория HP, DELL, Asus. Lenovo, Xiaomi и Apple. Для них — мы маргиналы, хотящие странного. Глупо требовать от них открытости и прочих хакерских ценностей. Этого не надо основной массе их клиентов Надо уметь приспосабливать то что есть для своих нужд.

Было классно, если бы существовал дешевый и мощный компьютер на открытой платформе, которую поддерживает Open Source Community и для которой есть тонны хорошого, надежного и удобного софта. Звучит фантастически, не так ли? :)
UFO just landed and posted this here
Была ли хоть одна сколько-нибудь заметная эпидемия внедрения вредоносного кода в BIOS, которая бы подставила вопрос о необходимости разработки и внедрения подобной аппаратной защиты? Слышал про вирус, затирающий BIOS во времена DOS, но это было уже очень давно и подобные вирусы канули в Лету сильно раньше введения этой технологии.

Так что актуальность для простых пользователей такой продвинутой защиты, которую совсем никак невозможно отключить, под большим вопросом.
Это не совсем правда, потому что на современной микросхеме SPI хранится сразу несколько прошивок и управляют ей сразу несколько мастеров, каждый из которых хранит в своем регионе изменяющиеся во время загрузки и нормально работы данные, и если всю микросхему разом защитить от записи джампером, то все эти модифицируемые данные придется выносить в CMOS SRAM (15 лет назад именно там они и хранились), к которой очень просто получить доступ через CPU IO-порты 70h/71h или 74h/75h и у которой никаких защитных механизмов нет, а сама она в заметных объемах (256Кб, которые сейчас используют большая часть реализаций UEFI, а ведь есть еще ME, GbE и EC) стоит как самолет.
Можено попробовать разнести модифицируемые часто и модифицируемые только при обновлении данные по разным SPI-микросхемам и защитить «джампером» последнюю, но это удорожает производство и разработку платы и прошивки, поэтому массовый рынок этим не заморачивается и, скорее всего, никогда не будет.
Абсолютно согласен.
Да, WP-джампер сейчас применяется (путём разнесения модифицируемых и немодифицируемых участков прошивки) редко где. Я слышал только о некоторых моделях систем Dell.
Отличная статья и очень полезный реверс, теперь можно добавить разбор манифестов в UEFITool, не боясь праведного гнева Intel. По поводу контрольной суммы записей в FIT — ей управляет верхний бит Type, а считается она вот так.
В качестве продолжения предлагаю рассмотреть побольше реализаций цепочки доверия, включив Dell и HP, которые давно и относительно успешно занимаются безопасностью своих прошивок, плюс рассмотреть атаки на компоненты самой цепочки безотносительно BootGuard, который защищает только SEC и PEI.
Благодарю.
Фоном занимаюсь как раз изучением механизмов верификации прошивки в системах Dell. Так что, вероятно, сделаю в будущем материал по теме.
UFO just landed and posted this here

Проблема доверенной загрузки вызвана, в первую очередь:


  • реальными зловредами-буткитами;
  • реальными злоумышленниками с кратковременным физическим доступом к железу ("evil maid attack");
  • необходимостью обеспечения trusted path functionality для критически важных операций типа ввода пароля для полнодискового шифрования.
    К паранойе и/или копирастии это отношения не имеет. Все серьезные вендоры давно уже не борются с опенсорсом, а всячески его приветсвуют, т.к. он прямо и косвенно экономит им деньги и повышает лояльность пользователей.
Если они приветствуют опенсорс, то почему блобы шифрованные? Какой именно код скрывает Интел от владельцев устройства?

Вендоры скрывают код не от владельцев устройств, а от конкурентов и прочих игроков, которые могут использовать найденные в нем фичи и баги по собственному усмотрению. А тот факт, что те же ME/AMT/… обладают de facto функциональностью бэкдора, это, на минуточку, открытая информация, они для этого и создавались. Вот в смартфонах последнего поколения, помимо пользовательской ОС, присутствует ещё чуть ли не с полдесятка полноценных операционных систем, например, почему же никто не поднимает шум по этому поводу?

Ну зачем вы передёргиваете? Вендоры хотят скрыть код от конкурентов, а скрывают от владельцев устройств. Мне пофигу на конкурентов, но мне не пофигу на то, что у меня на компьютере работает дярявый код, который никогда не проходил независимого аудита, полный дыр и бэкдоров неизвестно от кого (включая программиста, которого увольняют через 3 месяца и он решает «оставить прикол») — и никто на свете не может проверить так это или нет.

Я бы сказал, что это паранойя, если бы не Сноуден и все викиликсы этого кода.
UFO just landed and posted this here
UFO just landed and posted this here
Проблема в том, что вы под буткитами подразумеваете зловреда на уровне внешнего загрузчика, а в статье говорится, что вирус из ОС может установить буткит на уровне UEFI, причем таким образом, что вы не сможете его оттуда удалить перепрошивкой UEFI — мат. плата просто не запустится.

Этот буткит может быть очень скрытный, активироваться по таймеру, периодически. Скажем, можно написать буткит, сканирующий всю RAM в поисках GPG-ключа каждые 5 минут. Он будет работать в SMM, ваша ОС ничего с ним не сможет сделать.

Кроме того, вы путаете Secure Boot, Trusted Boot и Verified Boot. Это разные вещи, и мне кажется довольно глупым, что им придумали такие похожие по смыслу названия.
В статье описывается Verified Boot. Trusted Boot, напротив, не ущемляет ваших прав как владельца, а дает возможность удостовериться, что вся цепочка загрузки не изменилась с момента предыдущего запуска.
Скажем, вы оставили ноутбук в отеле, злоумышленник мог пробраться и подменить загрузчик, а Trusted Boot поможет вам убедиться, что в ваш ноутбук залезали без вашего ведома. Trusted Boot не блокирует ничего сам по себе, он только дает вам возможность проверить цепочку загрузки из вашего кода.

Например, можно выводить значение TOTP на экран и проверять его на другом устройстве — телефоне, планшете. Если значение не совпало, значит, что цепочка доверенной загрузки нарушена. Можно просто автоматически доставать ключ шифрования жесткого диска из TPM, если все PCR-регистры доверенной цепочки совпали, а если не совпали, достать ключ не удастся.

Для GRUB2 есть патч для поддержки Trusted Boot.
Даже GNU не против него:
В настоящее время “модули доверенной платформы” вообще не применяются для цифрового управления ограничениями, и есть основания полагать, что применять их для этого будет невозможно. Как ни парадоксально, это значит, что современные применения “модулей доверенной платформы” ограничены невинными второстепенными приложениями — такими как проверка, что никто не изменил украдкой систему на компьютере.

Следовательно, мы приходим к заключению, что “модули доверенной платформы”, доступные для персональных компьютеров, не опасны, и нет оснований отказываться от включения такого модуля в состав компьютера или от поддержки его в системных программах.
https://www.gnu.org/philosophy/can-you-trust.html
Я не понимаю вашей терминологии. Каким образом зашифрованный проприетарный блоб без возможности контроля и анализа может считаться основой доверия? Почему я, как владелец устройства, должен ему доверять?

Вы доверяете не бинарному блобу — а производителю материнки. А если не доверяете — то нахрена покупали?

Я доверяю автобусу возить мою тушку (включая риски попасть в аварии), но я не доверяю автобусу ковыряться в моём кошельке, постить от моего имени в интернеты и не выдаю доверенность на распоряжение моей квартирой.
Я вот считаю что все эти усложнения крайне лишние. Проблема зловредов? Да емое, тем кто будет писать зловреда такого уровня насрать на все эти защиты и он всеравно найдет дыру размером с боинг. В конечном счете страдают пользователи от всех этих защит намного больше чем он неведомого руткита который может туда засесть.
Почему нельзя сделать просто и надежно? Скажем так:
1) Ставим 2 микрухи биоса. 1 всегда только в режиме ro без любой возможности записи. 2я обычная.
2) Делаем 2 джампера\тумблера\чего угодно но главное физического. Первый тумблер переключает какая микруха биоса будет работать сейчас(1 или 2я), 2й джампер переключает ro\rw 2й микрухи биоса.
Что в итоге получилось бы:
1) если пользователь параноик то просто обновляет без проблем свой биос на 2й микре как ему угодно и переключает джампер в RO. Финал.
2) Если пользователь массовый то пусть будет какая угодно утилита автообновления в его любимой венде и будет обновлять ему биос 1 кнопочкой в системе или полным автоматом. Естественно с завода джампер должен быть переключен в RW. Финал.
3) Для энтузиастов или любителей поколупать кишки биоса, ковыряйте и шейте такими же штатными средставми что угодно. Сломалось? Переключаем джампер для перехода на микру 1го биоса который всегда в RO, грузимся с него в любимую систему и шьем 2ю микру рабочим биосом, возвращаем все джамперы назад. Финал.
Все были бы довольны, массовый пользователь мог бы и не знать всех этих тонкостей и все бы работало само как должно, гики остались бы довольны тем что могут смело ковырять что угодно и не писаться кипятком от «а если навернется то чем шить, где программатор брать?», параноики остались бы довольными т.к. от них никто не прятал бы бинарные блобы в местах к которым нельзя получить доступ и были бы уверены что никакая сферическая дрянь в вакуме не подсунет им в биос свой коварный код.

Да, я знаю что 2 микрухи биоса любит ставить гигабайт на своих десктопных матерях, меня такие спасали пару раз. Но к примеру, у меня есть ноутбук с солидным железом индусского производста(casper у них, у нас они под видами днсъдекспов и т.д.), в нем стоит довольно не слабая карточка от АМД но вот незадача, биос видеокарты не стали распаивать на видяхе а его ром запихнули в ром биоса. Тут наступает интересный момент, чтобы была возможность пользоваться самыми новыми дровами нужно прошить биос видяхи свеженькой версией, чтобы его прошить надо прошить uefi\биос всего ноутбука и угадайте что? Правильно, все это прибито «гвоздями, сертификатами, всякими секюрами». В итоге я даже с пониманием как все это сделать немогу этого сделать =), на 10ке пришлось долго шаманить чтобы заставить карточку заработать с 1й единственной версией дров и то не без проблем. В целом все работает замечательно но вот только карта амд инициализируется аккурат в конце загрузки винды и в итоге в этот момент я вижу секунд 30 черный экран.

А как вариант того ччто многие производители кастрируют свои биосы оставляя возможность только выставления времени и приоритета загрузки? Раньше можно было чуть подшаманить биоса каким нибудь фениксом и разлочить все нужные пункты. Сейчас ничего не сделаешь чаще всего. В итоге перед покупкой нотбука\материнки добавился пунктик найти и посмотреть что там есть в биосе\uefi\efi.
тем кто будет писать зловреда такого уровня насрать на все эти защиты и он всеравно найдет дыру размером с боинг

Именно поэтому нет смысла закрывать квартиру/автомобиль/сейф на замок и все именно так и поступают, оставляя двери открытыми? :-)

«Замок» у вас остается в виде джампера\тумблера а закрывать или нет проблема сугубо твоя. А так даже абмарный замок и стальная дверь с кучей камер не спасут вашу квартиру если кто то задался целью проникнуть в нее. Сейф тупо утащат и раз*бут в спокойствии в гаражах. А автомобиль угнать сейчас вообще не проблема, покупаешь за 10к рублей кодграббер и открываешь любую машину у которой есть сигнализация а если есть еще и автозапуск то еще и покатаешься на ней. Так что ваш пример не к месту и не корректный.

Причины отсутствия нормальной криптографии в противоугонных системах — это больная тема, достойная отдельной теории заговора. Видимо, там сошлись воедино инерция рынка, патентные коллизии пополам с синдромом "not invented here" и квалификацией разработчиков, традиционная для отрасли парадигма "security through obscurity", высокие затраты на разработку при жестокой конкуренции, агрессивный risk management а ля "в среднем и так сойдет", и т.д.

А там Интел не придумали, случаем, механизм отзыва ключей на случай, если их приватный ключ утечёт?

UFO just landed and posted this here
UFO just landed and posted this here

А как вы считаете с картриджа pre-boot до первичной инициализации железа? :-)

UFO just landed and posted this here
Sign up to leave a comment.