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

Firmware Security Engineer

Send message
Тоже вариант, и намного лучше, чем UBF.
Под «только у ASUS» я имел в виду не отсутствие средств восстановления у других производителей, а отсутствие у них именно описанного в посте Lincoln6Echo метода с USB-носителем и кнопкой на задней панели. Неудачно выразился, прошу меня простить.
Отличительной особенностью технологии USB BIOS Flashback является возможность прошивки BIOS'а без процессора и оперативной памяти. Нужны только дежурное питание, FAT32 USB-носитель с правильно названным файлом BIOS'а и поддержка этой технологии со стороны платы.
Жаль только, что их выпуск преостановлен.
О возможности восстановления из состояния пустой микросхемы или разрушенного дескриптора на этих платах узнал от вас.
Если это действительно так — отлично.
Вопрос только в том, где эта локальная база хранится и насколько хорошо она зашифрована.
Не скажу наверняка, у меня нет платы с поддержкой SecureBoot в данный момент, но скорее всего хранится эта база в регионе BIOS в той же самой микросхеме, а зашифрована либо никак либо практически никак.
Буду рад ошибаться, но по опыту работы с UEFI мнение складывается именно такое.
Скажем так, в данный момент все реализации UEFI, доступные конечному пользователю, хромают на обе ноги, и не только в плане безопасности.
Что у Phoenix, что у AMI баги висят месяцами и переживают по 3-6 обновлений, пока их удается локализовать и исправить. А в новых версиях стабильно вылезают новые. Когда ситуацию станет лучше — непонятно, но пока — вот так.
Лучшая реализация безопасности UEFI на десктопных платах была у Intel, но они перестали их выпускать.
Называется эта технология USB BIOS Flashback и есть она только у ASUS, только на топовых платах X79, Z77 и Z87 (и на Maximus IV Extreme на Z68), и работает только с регионом BIOS. От повреждения (намеренного или случайного, не важно) других регионов она не защищает и после разрушения дескриптора восстановить ей БИОС не получится, проверено не одни раз.
У возможности добавления своих устройств в список загрузочных есть обратная сторона.
Эти добавочные строки хранятся в NVRAM и могут быть прочитаны и записаны любым userspace-кодом с правами root, если ОС предоставляет доступ к EFI Variables. Загруженный в UEFI-режиме Linux — предоставляет, даже утилита efibootmgr для управления загрузкой имеется. А так как раздел ESP можно просто смонтировать и писать на него что угодно, появляется возможность подмены загрузчика или загрузки вместо ОС вредоносного кода.
Более того, с учетом открытости формата EFI Capsule и открытости региона BIOS на запись на большинстве современных плат (закрыт он только на некоторых Z77 и X79, получивших последние обновления BIOS и на некоторых Z87, но далеко не на всех), атака через исполняемых модулей и драйверов UEFI достаточно легко осуществима.
Дамп и прошивка БИОСа могут быть сделаны при помощи flashrom в Linux и Intel Flash Programming Tool в Windows, неразрушающая модификация дампа также не составляет проблемы.
Если же на плате по каким-то причинам открыт регион Descriptor, то вредоносный код может вызвать отказ в обслуживании путем записи в этот регион случайных данных, в результате чего система вообще не сможет загрузиться или перейти в Recovery-режим, что на ноутбуках автоматически означает поход в сервисный центр, а на десктопах и серверах — потерю кучи времени.
На платах с закрытым дескриптором портить можно содержимое региона BIOS, если запись в него возможна, что тоже приводит к невозможности загрузки, но восстановление из такого состояния намного проще.
Также можно портить содержимое NVRAM, что на некоторых старых или неудачных реализациях тоже может привести к невозможности загрузки ни с одного носителя. К примеру, на некоторых Phoenix UEFI (к примеру, на Lenovo x121e AMD) при удалении строк из NVRAM можно удалить строку «BIOS Setup» и потерять возможность попасть в настройки. А при удалении всех строк — вообще потерять возможность сделать что либо без вынимания батареи CMOS на долгий срок или перешивки BIOS на программаторе, в зависимости от того, где хранится NVRAM. К счастью, такое встречается все реже.
Безопасность UEFI даже с учетом SecureBoot (который выключен у 95% пользователей как минимум) оставляет желать много лучшего. А с учетом того, как эту безопасность понимают производители материнских плат — можно считать, что ее там нет совсем. Я не верю, что это сделано специально или со злым умыслом, но я не вижу вообще никаких препятствий к заражению UEFI вредоносным кодом в данный момент.
Надо и про это тоже писать отдельную статью, наверное.
Не верю. Либо загрузчик запускается в тихом режиме и вы его не видите, либо он модифицирован.
А насчет лички — без проблем, но помните, я не настоящий сварщик и каску нашел на стройке. :)
Для меня OS X — не основная, и даже не второстепенная ОС, поэтому и разбираюсь я в ней соответственно.
Благо в сообществе есть более опытные участники, которые помогут, если правильно попросить.
Частота не меняется потому, что это X79. Решения есть, но пока они недостаточно хороши.
По поводу GPU power management — тут я подсказать не могу, HD3000 работает исправно.
Если исследовательский интерес действительно есть, присоединяйтесь к профильным сообществам вроде AppleLife и InsanelyMac и исследуйте на здоровье.
Это правда.

При использовании хорошего загрузчика, вроде Clover, для нормальной работы OS X на типичном современном железе (за исключением X79, у которого проблемы с поддержкой CPU power management, и Z87 по причине его новизны) нужна установка всего пары кекстов.
Как минимум, это FakeSMC.kext и драйверы для оборудования вроде встроенного Ethernet.
Наличие UEFI, кстати, для нормальных загрузчиков не обязательно, они эмулируют среду EFI для OS X. Более того, очень часто бывает, что в UEFI имеются ошибки и несовместимости с Apple EFI, отчего одна и та же система может лучше работать с legacy-загрузкой, чем с UEFI.

Есть небольшая проблема с поддержкой CPU power management в OS X на всех современных платах, кроме плат Gigabyte, которая решается либо патчем БИОСа, либо патчем кекста, либо установкой другого кекста взамен стандартного.
Я предпочитаю первый способ, для чего написал утилиту PMPatch.
Совсем забыть про BIOS получится пока только у обладателей оборудования с UEFI-совместимыми прошивками и отсутствием необходимости legacy-загрузки из MBR или с внешних устройств. Они могут отключить Compatibility Support Module совсем, после чего всем оборудованием вроде RAID/USB/SATA/Ethernet-контролеров начнут управлять драйверы UEFI, а не старые модули BIOS из CSM.
На некоторых платах можно выбрать, какая именно прошивка будет использоваться для вышеперечисленных контролеров, но на ноутбуках я такого пока не встречал.
UEFI GOP firmware есть «из коробки» на встроенных в SB/IB/Haswell графических картах Intel, а также на некоторых картах Nvidia 6xx и 7xx и ATI 7xxx. Вообще, тема UEFI достаточно интересная и там можно многое написать.
Если кому-то интересно, могу написать обзор формата файла EFI Capsule, типов используемых файлов и особенностях их модификации.
Заодно и пару полезных в хозяйстве патчей можно будет обсудить.
Не являюсь профессиональным математиком, чтобы судить, но на первый дилетансткий взгляд — отличная новая теория, берущаяся за основания математики с неожиданной стороны.
Вот тут можно прочесть краткую историческую справку, чтобы понять, зачем она вообще нужна.
А вот тут — пояснение, что именно в ней нового и чем она отличается от ОТТ.
Мое почтение разработчику.
Пришла на ум концовка песни Strange Charm:
«Is so God damn remarkable that I just sit in awe».
Вы верно говорите, что важен интерес человека к технологиям.
Только вот почему-то настойчиво проводите параллель между интересом к смартфонам/планшетам/электронным книгам/прочим гаджетам и интересам к технологиям.
Я интересуюсь технологиями, но мой интерес к гаджетам давно прошел.
Если новое устройство не решает никаких твоих задач, которых не решало бы старое, то покупать его — глупая и бессмысленная трата денег, независимо от того, что там в него добавили. И я не понимаю, почему для вас это странно.
А про технологии: вы слышали о протоколе FlexRay? А о сменяющем его RT Ethernet? А об ОСРВ AUTOSAR? О новых МК Infineon MCX1000? Есть множество очень интересных технологий, которые проходят мимо масс, но при этом они для причастных к ним людей не менее интересны.
По моему мнению, все эти гаджеты, планшеты, читалки, очки и часы — сильно переоценены. И делать хоть какие-то выводы по наличию оных у человека — это неправильно, вероятность ошибки слишком высока.
Я тот самый программист без смартфона.
Учусь в магистратуре TH Regensburg по специальности «Техническая информатика», через 3 недели последняя сессия.
Пишу на C для микроконтролеров, на С++/Qt для десктопа, разрабатываю дизайн плат в EagleCAD, патчу UEFI BIOS'ы, чиню электронику.
Погружен в дух профессии, слежу за новинками, читаю новости на 3 языках.
Не пользуюсь никакими сервисами Google, кроме синхронизации закладок в Chrome.
Пользуюсь простой звонилкой Nokia 6303i, с которой читаю только SMS.
Новости, почта, RSS, мессенджеры и уведомления достают за день так, что вечером дома я стараюсь вообще не включать ПК.
Если по вашему это все странно — я не знаю тогда. Иногда сигара — это просто сигара.

Выводимость можно описать как отношение формальной арифметики, и если формальная система Т может выражать отношения формальной арифметики, то она может выражать и выводимость. Да, отношение «высказывание S выводимо в T» посложнее, чем a+b=c, но принципиальной разницы между ними нет.
Прошу вас, прочтите Хофштадтера, там он вводит формальную систему (названную им Топографческой Теорией Чисел), в которой все манипуляции в ходе доказательства теоремы Гёделя можно отследить, просто считая палочки на бумаге.
Очень трудно описать гёделизацию простыми словами, но в английской вики у сообщества почти получилось.
Если доказательства на словах вас не устраивают, можете отследить работу системы доказательства теорем Nqthm, которую использовал Шанкар для доказательства теоремы Гёделя еще в 1986 году.
Можно пояснить лучше, если аналогия непонятна.

Пусть имеется формальная система Т, в которой можно выразить все утверждения формальной арифметики.
Если занумеровать каждую аксиому и каждое правило вывода, то сам процесс вывода какой либо теоремы (т.е. последовательного применения правил вывода к аксиомам и уже выведенным теоремам) можно рассматривать как манипуляцию с числами, т.е. сам вывод можно описать в терминах формальной арифметики.
Вот здесь и начинается проблема, т.к. можно построить автореферентное высказывание вида G = «G не выводима в формальной системе Т».
Если это высказывание выводимо, то его вывод является выводом не только G, но и высказывания not G = «G выводима в формальной системе Т», что делает формальную систему Т противоречивой. Если же вывод утверждения G не существует, то G — невыводимое в системе Т истинное утверждение (истинно оно потому, что оно утверждает свою невыводимость, и это действительно так), поэтому система Т — не полная.
На самом деле, теорему Гёделя можно доказывать не только построением «парадокса лжеца» в формальной системе, как это было сделано самим Гёделем, но и любым другим парадоксом, основанным на автореференции, например, парадоксом Берри.
Более того, существуют доказательства, не использующие автореференцию вообще, и основанные, к примеру, на теории вычислимости, но на пальцах я их пояснить уже не смогу.
Для понимания теоремы Гёделя очень советую прочесть книгу Д. Хофштадтера «Гёдель, Эшер, Бах — эта бесконечная гирлянда», там идея «странной петли», которая используется в доказательстве, пояснена на множестве простых примеров. Очень грубо и упрощенно теорему Гёделя о неполноте можно интерпретировать так: любой язык, достаточно мощный для того, чтобы быть собственным метаязыком (формальная арифметика — это язык именно такой мощности) либо не полон (содержит недоказуемые, т.е. не выводимые за конечное число шагов с помощью конечного числа правил вывода из конечного числа аксиом, истинные утверждения) либо противоречив (содержит доказательство как какой-либо гипотезы А, так и её отрицания not A).
Проблема именно в том, что язык становится для самого себя метаязыком, и на нем можно сформулировать автореферентную (ссылающуюся на саму себя) строчку вида G = «G — не теорема». Именно такая строчка и будет гёделевой для указанного языка. Парадоксальность утверждения «Это утверждение ложно» заметили еще древние греки, но его наличие не машает нам пользоваться естественным языком. Также и теорема Гёделя не сильно мешает использованию формальных систем.
Можно редактировать некоторые настройки AMI Aptio4 UEFI (на нем сейчас почти все современные десктопные платы) с помощью утилиты AMIBCP 4. Жаль только, что далеко не все.

Автору темы респект, отличный проект.
Я тоже сейчас неспеша занимаюсь темой патча UEFI: пишу поддержку новых БИОСов для плат на Z87 в PMPatch (это патчер для снятия защиты от записи с регистра 0xE2, которая не дает загружаться драйверу CPUPM из OS X).

Смотря в каком сегменте.
Если в обыкновенный ПК для дома — все перечисленные вполне конкуренты. Я не помню ни одного производителя плат на Z77, у которого был бы один шлак. Даже у ECS в тот раз получилось сделать что-то приличное.
Если брать оверклокеров, то Gigabyte, Asrock, MSI.
Если брать пользователей компактных систем, то Gigabyte, Asrock, MSI, Zotac.
А так при прочих равных для дома можно смело брать первую попавшуюся плату, разницу именно в надежности сейчас уже трудно заметить.

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer, System Software Engineer
Lead