Угроза внедрения вредоносного кода в bios способы защиты
"Вирус в BIOS-е" или "BIOS-вирус") - вирус, который располагается в микросхеме Flash/EEPROM. Т.е. принципиальным отличием его есть тот факт, что он находится в постоянной памяти компьютера и удалить его без перешивки (обновления прошивки BIOS) нельзя. В дополнение ещё и то, что и обнаружить его тоже крайне сложно вплоть до вообще невозможно. В остальном (зловредные действия) бирусы ни чем не отличаются от различных вирусных программ типа троянов.
Получив управление, бирус внедряется в BIOS (например, считав текущую прошивку и добавив в неё свой код) и перезагружает компьютер (либо пассивно ждёт, пока сам пользователь её осуществит). После очередной загрузки зловредный код становится совершенно невидим для любой работающей в операционной системе программы. Кроме того его код получает возможность одинаково работать в любой операционной системе – Windows, Linux, MAC OS и т.д.
Что может BIOS-вирус?
Он может заразить (получить управление и/или выполнить другие зловредные действия) любое приложение для любой операционной системы.
Он может быть совершенно невидим - запретив возможность своего обнаружения.
Он может быть совершенно неудаляем – запретив возможность обновления BIOS.
Он может осуществлять зловредные действия в любое время и абсолютно прозрачно (т.е. его процесс активности нельзя заметить и остановить) в процессе работы компьютера.
Он имеет доступ ко всем устройствам компьютера, обладая всеми возможностями ОС и даже больше.
Можно ли защититься от заражения бирусом?
Можно. Но сначала перечислим, что ему не помешает:
Установки любых паролей в BIOS никак не защитит от бируса.
Прошивка нового BIOS «на самом компьютере» - может не помочь избавиться от бируса. Это верно для перешивки как под DOS, так и под Windows (или другой OS).
На многих материнских платах имеется джампер или переключатель, отвечающий за защиту BIOS от записи. Называться он может по-разному: BIOS Protect, BIOS Rewrite, иногда вместо переключателя вообще может использоваться пункт меню BIOS. Смысл такой защиты - не дать что-нибудь не то в BIOS случайно записать. Поищите намеки на такую защиту в документации к вашей материнской плате.
Внимательно прочитайте информацию по вашей плате и, в случае наличия такой перемычки, переключите ее в режим запрета прошивки.
Если в настройках есть функция защиты от записи BIOS (BIOS protect), обязательно включите ее.
К сожалению, и этот механизм защиты, поддерживаемый микросхемами SPI Flash, реально не используется разработчиками BIOS и материнских плат. Во всех платформах, исследованных автором, в регистре статуса Flash, бит BPL=0, то есть защита не используется и статусный регистр доступен для перезаписи.
Эта статья продолжает тему, связанную с угрозой искажения BIOS материнской платы вредоносными программами. В ранее опубликованном материале "Проникновение в BIOS ROM" N1 и N2 был приведен пример программы, выполняющей запись в микросхему BIOS, рассмотрены механизмы защиты, используемые производителями материнских плат и причины, по которым данные механизмы часто оказываются неэффективными. Напомним, что эта проблема возникла более 10 лет назад, когда в качестве носителя BIOS начали использовать микросхемы Flash ROM, допускающие перезапись содержимого без физического вмешательства в компьютер. Таким образом, возможность оперативной перезаписи (обновления) BIOS, привела к побочному эффекту – риску его случайного или преднамеренного искажения.
Казалось бы, сегодня на эту тему уже все сказано. Но время идет, появляются новые типы микросхем Flash ROM и интерфейсов для их подключения. Это сопровождается появлением новых методов защиты BIOS от несанкционированного искажения, и, конечно, новых уязвимостей. В ранее опубликованном материале, ссылка на который приведена в начале статьи, рассматриваемая тема раскрыта на примере платформы, использующей микросхему SST 49LF004A, подключенную к интерфейсу LPC (Low Pin Count). Сегодня, ему на смену пришел интерфейс SPI (Serial Peripheral Interface). Напомним, что для перезаписи содержимого микросхемы BIOS, программа должна взаимодействовать с двумя блоками регистров: регистры интерфейса Flash ROM, расположенные в составе "южного моста" чипсета и регистры, входящие в состав самой микросхемы Flash ROM. При переходе от интерфейса LPC к SPI, архитектура двух указанных блоков существенно изменилась. Поэтому есть смысл рассмотреть взаимодействие программ с микросхемой BIOS, механизмы защиты и их уязвимости применительно к современным платформам. Материал снабжен примерами на ассемблере. Для экспериментов использовалась материнская плата Gigabyte GA-965P-S3, построенная на чипсете Intel 965, описанном в 3. В качестве носителя BIOS на данной плате используется микросхема SST 25VF080B, описанная в [5]. Эта микросхема имеет объем 8 Мегабит (1 Мегабайт) и подключается к интерфейсу SPI. Некоторые микросхемы других производителей, использующих тот же интерфейс, описаны в [4,6,7]. Описание интерфейса SPI приведено в [8,9]. При взаимодействии с контроллером SPI, нам потребуется использовать механизмы доступа к конфигурационному пространству, описанные в документах 12.
*********
Механизмы доступа к Flash ROM и защита записи
В общем случае, для инициирования операций стирания или перезаписи микросхемы BIOS, программа должна выполнить четыре действия:
Настроить регистры "южного моста" чипсета, управляющие размещением микросхемы BIOS в адресном пространстве для обеспечения доступа к полному объему микросхемы.
Выключить режим защиты записи BIOS, реализуемый средствами "южного моста" чипсета.
Выключить режим защиты записи BIOS, реализуемый средствами микросхемы Flash ROM.
Передать команду стирания или записи микросхеме Flash ROM.
Рассмотрим подробнее эти процедуры, механизмы защиты, препятствующие их несанкционированному выполнению и, конечно, уязвимости этих механизмов.
Как было сказано выше, при выполнении операций записи и стирания, программный доступ к микросхеме SPI Flash осуществляется посредством регистров контроллера SPI, без использования диапазона адресов, в котором доступен образ микросхемы BIOS. Поэтому перенастройка чипсета для доступа к диапазону FFF00000h-FFFFFFFFh в данном примере не потребуется.
Практика показывает, что данный механизм "защиты от снятия защиты" обычно не активируется разработчиками BIOS. Во всех материнских платах, исследованных автором, бит BLE=0, поэтому для снятия защиты записи достаточно установить бит BIOSWE=1, эта операция не будет перехвачена.
Микросхема Intel ICH8 также поддерживает защиту содержимого микросхемы BIOS, путем задания адресных диапазонов, защищенных от чтения и (или) записи. Теоретически, на базе данного механизма можно реализовать эффективную защиту, так как запрет программно включается процедурами BIOS при старте платформы, и может быть снят только при аппаратном сбросе. Но и этот механизм обычно не активируется разработчиками BIOS.
Добавлено через 17 минут 11 секунд
Что такое BIOS
BIOS и CMOS RAM
Иногда пользователи путают BIOS и CMOS RAM системы. Причиной путаницы является то, что программа Setup BIOS используется для установки и хранения параметров конфигурации в CMOS RAM. Следует заметить, что это, фактически, совершенно разные компоненты. Обычно BIOS находится в отдельной микросхеме системной платы. Кроме того, на системной плате расположена так называемая микросхема RTC/NVRAM, содержащая в себе часы истинного времени и энергонезависимую память. По сути, эта микросхема представляет собой цифровой датчик времени с несколькими дополнительными байтами памяти. Обычно она называется CMOS-микросхемой, поскольку создана на основе комплементарных металло-оксидных полупроводников (complementary metal-oxide semiconductor — CMOS).
При загрузке программы BIOS Setup и последующем конфигурировании/сохранении параметров жесткого диска или других устройств, установочные параметры системы записываются в соответствующую область памяти RTC/NVRAM (или, говоря иначе, CMOS RAM). При каждой загрузке системы для определения ее конфигурации проводится считывание параметров, хранящихся в микросхеме CMOS RAM. Несмотря на существование определенной связи между базовой системой ввода-вывода (BIOS) и CMOS RAM, это абсолютно разные компоненты.
Системная BIOS
Во всех системных платах есть микросхема, в которой записано программное обеспечение, называемое BIOS или ROM BIOS. Эта микросхема содержит стартовые программы и драйверы, необходимые для запуска системы и функционирования основного аппаратного обеспечения. В ней также содержится процедура POST (самотестирование при включении питания) и данные системной конфигурации. Все эти параметры записаны в CMOS-память, которая питается от батарейки, установленной на системной плате. Эту CMOS-память часто называют NVRAM (Non-Volatile RAM).
Таким образом, BIOS представляет собой комплект программ, хранящихся в одной или нескольких микросхемах. Эти программы выполняются при запуске компьютера до загрузки операционной системы. BIOS в большинстве PC-совместимых компьютеров выполняет четыре основные функции.
POST — самотестирование при включении питания процессора, памяти, набора микросхем системной логики, видеоадаптера, контроллеров диска, дисковода, клавиатуры и других жизненно важных компонентов системы. Программа установки параметров BIOS (Setup BIOS) — конфигурирование параметров системы. Эта программа запускается при нажатии определенной клавиши (или комбинации клавиш) во время выполнения процедуры POST. В старых компьютерах на базе процессоров 286 и 386 для запуска этой программы необходима специальная дискета. Загрузчик операционной системы — подпрограмма, выполняющая поиск действующего основного загрузочного сектора на дисковых устройствах. При обнаружении сектора, соответствующего определенному минимальному критерию (его сигнатура должна заканчиваться байтами 55AAh), выполняется код начальной загрузки. Эта программа загружает загрузочный сектор операционной системы, который, в свою очередь, загружает файлы ядра операционной системы. BIOS — набор драйверов, предназначенных для взаимодействия операционной системы и аппаратного обеспечения при загрузке системы. При запуске DOS или Windows в режиме защиты от сбоев используются драйверы устройств только из BIOS.
Память EEPROM, или Flash ROM
Это более новый тип памяти ROM — электронно-стираемая программируемая постоянная память. Данные микросхемы также называются Flash ROM, и их можно перепрограммировать, не снимая с платы, на которую они установлены, без специального оборудования. Используя Flash ROM, можно стирать и перепрограммировать ROM непосредственно на системной плате, не удаляя микросхему из системы и даже не открывая системного блока! Для перепрограммирования не требуется устройство стирания ультрафиолетовым облучением или какое-либо иное программирующее устройство.
Использование Flash BIOS
Начиная с 1996 года во всех компьютерах BIOS записывается в микросхему Flash ROM. Информацию в этой микросхеме можно стирать и перепрограммировать непосредственно в компьютере без специального оборудования. Для стирания и перепрограммирования старых микросхем PROM требовались специальный источник ультрафиолетового освещения и устройство программирования, а во Flash ROM данные могут быть удалены и перезаписаны даже без удаления их из системы.
Использование Flash ROM дает возможность загрузить новую версию BIOS из Internet или, имея ее на дискете, загрузить в микросхему Flash ROM на системной плате без удаления и замены микросхемы. Обычно эти обновления загружаются с Web-сервера изготовителя; затем используется прилагаемая программа для создания самозагружаемой дискеты с новым образом BIOS. Важно выполнить эту процедуру, воспользовавшись дискетой с программой начальной загрузки, так как никакое другое программное обеспечение или драйверы не должны мешать модификации. Этот метод обновления позволяет сэкономить время и деньги как изготовителя системы, так и конечного пользователя.
Иногда микросхема Flash ROM в системе защищена от записи; тогда, прежде чем приступить к модификации, вы должны отключить защиту. Обычно это делается с помощью переключателя, который управляет блокировкой модификации ROM. Без блокировки любая программа может перезаписывать ROM в вашей системе, а это опасно. Без защиты записи программы-вирусы могли бы записывать свои копии непосредственно в код ROM BIOS на вашем компьютере. Даже без физической защиты от записи современные BIOS в микросхемах Flash ROM имеют алгоритм защиты, который предотвращает несанкционированные модификации. Эту методику Intel использует на своих системных платах.
Запуск программы Setup BIOS
Для запуска этой программы необходимо во время загрузки системы нажать определенную клавишу или комбинацию клавиш. Ниже представлены клавиши запуска этой программы для BIOS различных производителей, которые необходимо нажимать во время выполнения процедуры POST.
AMI BIOS - "Delete". Phoenix BIOS — "F2". Award BIOS — "Delete" или комбинация клавиш "Ctrl+Alt+Esc". Microid Research BIOS — "Esc"
Если ни одна из этих клавиш не обеспечивает запуска программы Setup BIOS, посмотрите документацию к вашей системной плате или обратитесь к ее производителю.
Методы защиты информации на уровне BIOS: идеология и подходы
О необходимости комплексного подхода к обеспечению должного уровня ИБ, соответствующего современным угрозам, а также о необходимости создания вычислительных систем, в которых средства защиты и контроля информации начинают работать уже на уровне BIOS, редакции журнала “Информационная безопасность / Information Security" рассказал Ренат Юсупов, старший вице-президент компании Kraftway.Старший вице-президент компании Kraftway Архитектурные особенности х86 систем связаны с поэтапной инициализацией системы: процессор – материнская плата – ОС. Доверенной можно назвать только такую вычислительную систему, в которой контролируется каждый этап работы, каждая функция внутри этапа, а также процесс передачи управления между ними. Большинство используемых средств защиты запускаются только на этапе работы ОС, что не позволяет избавить систему от вредоносных программ, стартующих на более ранних фазах, и в частности в процессе работы BIOS – первого программного кода, исполняемого после старта процессора.
– Какую вычислительную систему можно назвать доверенной и способна ли современная архитектура РС и серверов выполнять на аппаратном уровне задачи по обработке конфиденциальной информации?
– Подавляющее большинство используемых вычислительных систем построено на материнских платах импортного производства и нельзя исключить наличия в их BIOS недекларированных возможностей, так называемых back door, позволяющих обойти любые средства защиты, установленные на данном устройстве. Их выявление в настоящее время практически невозможно.
Если поставщик компьютерного оборудования не способен реализовать непрерывную цепочку доверия (проектирование самой платформы, производство ключевых компонентов и сборка, прошивка всех устройств, установка ПО и приложений, разворачивание у заказчика), то получившаяся IТ-инфраструктура не может быть доверенной. Необязательно (хотя и желательно), чтобы все элементы цепочки были "из одного флакона". Но в любом случае все фазы процесса должны быть контролируемыми, в том числе и переходы с этапа на этап.
– Насколько важен вопрос защиты системного BIOS? Способны ли встроенные в BIOS или интегрированные с ним приложения безопасности обеспечить наиболее эффективную модель превентивной защиты вычислительной системы от проникновения изображения?
– Системный BIOS является потенциально привлекательной целью для атак. Вредоносный код, работающий на уровне BIOS, может получить огромные преимущества по контролю над компьютерной системой. Он может использоваться для компрометации любых компонентов, которые загружаются позднее в процессе загрузки, включая системные функции, загрузчик, гипервизор, ОС, приложения безопасности. BIOS хранится в энергонезависимой памяти, которая сохраняется и после цикла включения/выключения. Вредоносный код, записанный в BIOS, может использоваться для повторного заражения компьютеров даже после установки новых ОС или замены жестких дисков.
Поскольку системный BIOS выполняется на компьютере очень рано в процессе загрузки с очень высоким уровнем привилегий, то вредоносный код, работающий на уровне BIOS, бывает очень сложно детектировать. Так как BIOS загружается первым, то антивирусные продукты не имеют возможности его гарантированно проверить. С другой стороны, если на рынке уже существует достаточно большое количество доверенных сборок ОС, то доверенные сборки BIOS возможно производить только компаниям, самостоятельно разрабатывающим и производящим материнские платы. При этом, используя материнские платы зарубежных вендоров, производители ПК и серверов вынуждены использовать недоверенный микрокод BIOS, который по своему объему и сложности сопоставим с микрокодом ОС.
В современных вычислительных комплексах BIOS выполняет не только функции инициализации, но также становится защищенной средой для безопасного запуска и исполнения приложений безопасности, мониторинга и управления системой. При этом функции безопасности и управления гарантированно имеют более высокий приоритет перед любыми другими приложениями, поскольку они начинают работу еще до запуска ОС. Учитывая, что BIOS является замкнутой программной средой с возможностью блокировки несанкционированной модификации пользователем (или злоумышленником), интегрированные на уровне BIOS приложения безопасности и управления обладают иммунитетом к воздействию вредоносного кода. Таким образом, встроенные в BIOS или интегрированные с ним приложения безопасности обеспечивают наиболее эффективную модель превентивной защиты вычислительной системы от проникновения и заражения.
– Каковы основные подходы к обеспечению защиты информационной инфраструктуры организации?
– Поскольку наиболее критические уязвимости лежат на достаточно низком уровне (микропроцессоры, архитектурные уязвимости, низкоуровневый код инициализации систем, скрытые виртуальные машины и т.д.), на котором их практически невозможно обнаружить штатными методами, средства защиты должны иметь принципиально другую основу. К таким основополагающим принципам безопасности можно отнести следующие: превентивность (не исправлять проблемы, а предотвращать их появление), непрерывность (отсутствие лазеек для проникновения), интеграция средств защиты информации еще на уровне проектирования железа и ПО, адаптивность (способность противостоять новым угрозам), приоритет средств защиты. При выполнении этих принципов защита становится не лоскутной, а системной, что позволяет эффективно бороться с внутренними и внешними угрозами.
Национальный институт США по стандартам и технологиям (NIST) обратил внимание на безопасность системы BIOS, с целью защитить её от заражения вирусами, такими как Mebromi и Niwa!mem. Тема довольно специфическая: к настоящему времени существует несколько таких вредоносных программ, в методиках внедрения зловредов в BIOS разбираются считанные специалисты антивирусных компаний. Тем неожиданнее выглядит подобная инициатива со стороны государственной американской организации. Вероятно, эта проблема их сильно тревожит в свете угрозы тотального заражения BIOS на компьютерах, собранных в Китае.
Так или иначе, но NIST предложил новые правила безопасности для BIOS на серверах (черновик стандарта, pdf). Ранее они уже выпустили аналогичный стандарт для защиты BIOS на настольных компьютерах (pdf).
Новый документ представляет собой руководство для производителей серверного оборудования и серверных администраторов с описанием методик, которые помогут избежать попадания вредоносного кода в BIOS.
NIST называет четыре ключевые функции безопасности BIOS:
— Аутентификация при апдейте BIOS с использованием цифровых подписей для проверки аутентичности новой прошивки.
— Опциональный безопасный механизм локального апдейта, которые требует обязательного физического присутствия администратора возле машины для обновления BIOS без цифровой подписи.
— Защита цельности прошивки для предотвращения её изменения способом, который не соответствует двум вышеперечисленным.
— Функции защиты, которые гарантируют, что не существует механизма для процессора или другого системного компонента, чтобы обойти защиту BIOS.
По мнению экспертов NIST, неавторизованная модификация BIOS вредоносными программами представляет собой серьёзную угрозу, поскольку BIOS занимает привилегированное положение в системе и позволяет зловреду сохранить работоспособность даже после переустановки операционной системы.
Специальный сертификат будет размещать в UEFI, при этом UEFI будет осуществлять проверку загрузчика до его запуска. Если какая-либо вредоносная программа сделает подмену загрузчика, UEFI не даст запустить систему.
В ранее опубликованной статье "Вирус
в Shadow RAM" были рассмотрены уязвимости, позволяющие программно
модифицировать выполняемый блок BIOS, находящийся в оперативной памяти.
Очевидно, это дает вредоносным программам широкие возможности, но не вызывает
повреждения оборудования, поскольку искажается не содержимое микросхемы BIOS, а
его копия, находящаяся в ОЗУ и обновляемая при каждом перезапуске компьютера.
Продолжая начатую тему, рассмотрим и более тяжелый случай – искажение
содержимого микросхемы BIOS. После такой атаки, материнская плата требует
ремонта, а точнее – восстановления содержимого микросхемы BIOS.
Как известно, авторы вирусов начали использовать эту уязвимость еще около 10
лет назад, практически сразу после того, как в качестве носителя BIOS стали
применяться микросхемы электрически перепрограммируемых ПЗУ (Flash ROM). В
сложившейся ситуации, минимизация угрозы стала заботой не только авторов
антивирусных программ, но и разработчиков аппаратного обеспечения, в частности,
материнских плат. Отметим, что полностью исключить опасность несанкционированной
модификации BIOS невозможно, так как для этого пришлось бы отказаться от
"законной" возможности его обновления.
В предлагаемом материале, на уровне ассемблера и программирования
конфигурационных регистров, рассматривается процесс программного доступа к
функциям микросхемы Flash ROM, а также системные ресурсы, управляющие таким
доступом и защищающие BIOS от несанкционированного искажения.
При таком глубоком исследовании, нам потребуется работать с регистрами,
которые в каждом чипсете реализованы по-разному. Разумеется, в одной статье
невозможно описать архитектуру всех чипсетов. Поэтому, для того, чтобы разговор
был предметным, остановимся на одном из вариантов: в качестве примера рассмотрим
платформу на чипсете Intel 815, детально описанном в 2, использующую
микросхему BIOS SST 49LF004A, детально описанную в [18]. Перечислим все действия
программы, выполняемые при стирании сектора и записи данных в микросхему Flash
ROM для такой платформы. Протокол доступа к микросхеме Flash ROM, описанный
ниже, используется как программами обновления BIOS, так и вредоносными
программами, цель которых – искажение или стирание содержимого микросхемы BIOS.
В приложении к статье содержатся исходные тексты программы, осуществляющей
доступ к функциям микросхемы Flash ROM.
Как это делается
1) Микросхема BIOS подключена к "южному мосту" чипсета посредством
интерфейса LPC (Low Pin Count), детально описанного в [1]. Для доступа к
содержимому BIOS на предмет чтения и записи, а также передачи управляющих команд
и контроля текущего состояния микросхемы Flash ROM, используется 16-мегабайтный
диапазон FF000000h-FFFFFFFFh в адресном пространстве памяти. Чтобы программные
обращения к указанному диапазону транслировались в физические циклы чтения и
записи на интерфейсе LPC, конфигурационные регистры "южного моста" чипсета
должны быть установлены следующим образом.
В 16-битном регистре BIOS_CNTL (его координаты в конфигурационном
пространстве Bus=0, Device=1Fh, Function=0, Register=4Eh-4Fh) бит 0 нужно
установить в "1". Это снимает блокировку циклов записи и разрешает их трансляцию
на интерфейс LPC.
2) Микросхема SST 49LF004A, используемая в качестве носителя BIOS,
имеет объем 512 Кбайт и разделена на 8 блоков по 64 Кбайт. Каждый блок имеет
свой регистр защиты записи (Block Locking Register). Например, для блока 0,
расположенного по адресам FFF80000h-FFF8FFFFh, адрес регистра Block Locking
Register равен FFB80002h. Для разрешения стирания и записи блока, бит 0 этого
регистра должен быть установлен в "0". Адреса регистров защиты записи для
каждого блока и другие подробности содержаться в [18]. Манипуляции с регистрами
микросхемы Flash ROM, расположенными в пространстве памяти, выполняются с
помощью стандартных инструкций архитектуры x86, обеспечивающих чтение и запись
ячеек памяти, например MOV. Вопросы организации регистров, отображенных на
память (Memory-mapped I/O) детально рассмотрены в ранее опубликованной статье
"Устройства системной поддержки. Исследовательская работа №
7,
8 и
9".
3) Для запуска операции стирания блока или сектора требуется выполнить
последовательность из шести циклов записи заданных байтов по заданным адресам.
Последовательности приведены в [18] а также в исходном тексте программы,
прилагаемом к статье. Использование многоцикловых последовательностей для
запуска операций стирания и записи, снижает вероятность случайного искажения
содержимого Flash в результате программного сбоя.
4) Для запуска операции записи байта требуется выполнить
последовательность из четырех циклов записи заданных байтов по заданным адресам.
Отметим, что перед выполнением записи, для сектора, в который выполняется
запись, необходимо выполнить стирание.
Об аппаратной защите BIOS и ее эффективности
Как было показано выше, для перезаписи содержимого Flash ROM, программа
должна выполнить три действия: перенастроить чипсет для обеспечения доступа к
микросхеме BIOS, перенастроить регистры блокировки записи, входящие в состав
самой микросхемы BIOS и, наконец, передать приказ записи или стирания. На каждом
из этих трех этапов действуют механизмы защиты BIOS от несанкционированной
модификации. Рассмотрим подробнее эти механизмы, а также причины, по которым они
в ряде случаев оказываются неэффективными. Приведенная информация поможет
выработать методику, позволяющую исследовать заданную материнскую плату на
предмет наличия рассматриваемой уязвимости.
1) Регистр BIOS_CNTL, рассмотренный выше входит в состав "южного
моста" чипсета, его бит 0 управляет блокировкой циклов записи, адресованных
микросхеме BIOS. Бит 1 того же регистра (это бит BLE, BIOS Lock Enable)
позволяет установить режим, при котором попытка снять защиту записи будет
перехватываться BIOS, а точнее, при попытке установить бит 0 в "1" будет
генерироваться прерывание SMI (System Management Interrupt) с передачей
управления специальной процедуре, входящей в состав BIOS. Причем, если BIOS при
старте установит такой режим перехвата, программно выключить его чипсет не
позволяет, этот режим будет выключен только после аппаратного сброса (по сигналу
RESET). Подробности в [3].
К сожалению, разработчики BIOS обычно не используют этот механизм,
предоставляемый чипсетом. Во всех материнских платах, исследованных автором, бит
BLE (бит 1 регистра BIOS_CNTL) установлен в "0", поэтому, попытки снятия защиты
записи не перехватываются.
Вместе с тем, работа "вирусописателей" несколько осложнена тем, что
архитектура регистров управления доступом к BIOS в каждом чипсете различна,
поэтому для снятия защиты, вирус должен распознавать чипсет и иметь модули
поддержки под каждый чипсет.
2) Регистры защиты записи Block Locking Register, также рассмотренные
выше, входят в состав микросхемы Flash ROM SST 49LF004A. Здесь также
предусмотрен бит защиты записи (бит 0) и бит, установка которого в "1" позволяет
запретить снятие защиты записи (бит 1). Если биты 0 и 1 установлены в "1",
микросхему BIOS программно вывести из состояния защиты записи невозможно, это
произойдет только при аппаратном сбросе (по сигналу RESET). Подробности в [18].
К сожалению, и этот механизм обычно не используется разработчиками BIOS, а
ведь его применение могло бы существенно улучшить защищенность. Во всех платах,
исследованных автором, бит 1 в регистрах защиты блоков микросхем Flash ROM
установлен в "0", то есть снятие защиты записи разрешено.
3) Третий уровень защиты, состоит в том, что для запуска операций
стирания и перезаписи микросхемы BIOS, требуется своеобразный пароль, а именно,
передача многоцикловых "ключевых" последовательностей со строго определенными
адресами и данными. Так как у всех микросхем одного типа пароль одинаковый и его
можно узнать из документации на микросхему, например 6, 24, такая мера
может защитить только от случайного искажения содержимого BIOS при программном
сбое и записи беспорядочных данных. Вредоносная программа, прочитав
идентификаторы ROM Vendor ID и ROM Device ID, может распознать тип микросхемы
BIOS и сформировать требуемые ключевые последовательности в соответствии с
документацией на данную микросхему.
С точки зрения использования этих сигналов, материнские платы бывают трех
видов:
Третий вариант - сигналы защиты записи формируются с помощью
программно-доступного регистра, состоянием которого управляет BIOS. При этом
пользователю не нужно переключать "перемычки", но защищенность будет хуже, так
как в отличие от второго варианта, здесь есть возможность программного
выключения защиты. Вместе с тем, это неплохой компромисс. Так как указанный
программно-доступный регистр обычно реализуется специфическими ресурсами платы,
"вирусописатель", располагая информацией только на чипсет и микросхему BIOS, но,
не имея принципиальной электрической схемы материнской платы, не узнает о том,
что и в какой регистр надо записать для снятия защиты на данной материнской
плате.
Источники информации
14) PCI BIOS Specification. Revision 2.1.
15) PCI Local Bus Specification. Revision 3.0.
16) PCI-to-PCI Bridge Architecture Specification. Revision 1.1.
17) 2 Megabit (256K x 8) Multi-Purpose Flash SST39SF020 Data Sheet.
18) 2 Mbit / 4 Mbit Firmware Hub SST49LF002A / SST49LF004A Data Sheet.
19) 2 Mbit LPC Flash SST49LF020 Data Sheet.
20) 1 Mbit SPI Serial Flash SST25VF010 Data Sheet.
21) 2 Mbit / 4 Mbit SPI Serial Flash SST25VF020 / SST25VF040 Data Sheet.
22) W49V002FA 256K x 8 CMOS Flash Memory with FWH Interface Data Sheet.
23) W49V002A 256K x 8 CMOS Flash Memory with LPC Interface Data Sheet.
24) MX28F1000P 1M-BIT [128K x 8] CMOS Flash Memory Data Sheet.
25) SPI EEPROM Interface Specification. Part Number 223-0017-004 Revision H.
26) SPI Interface Specification. Technical Note 15.
Книги
27) В.Л. Григорьев. Микропроцессор i486. Архитектура и программирование.
Москва ТОО “ГРАНАЛ” 1993.
28) 2B ProGroup: В.А. Вегнер, А.Ю. Крутяков, В.В. Серегин, В.А. Сидоров, А.В.
Спесивцев. Аппаратура персональных компьютеров и ее программирование. IBM PC/XT/AT
и PS/2. Москва “Радио и связь” 1995.
Для иллюстрации этой тревожной тенденции рассмотрим пятерку опасных аппаратных уязвимостей, обнаруженных за последнее время в начинке современных компьютеров.
1 место: оперативная память
Первое место безоговорочно занимает проблема с оперативной памятью DDR DRAM, которую принципиально невозможно решить никаким программным патчем. Уязвимость, получившая название Rowhammer, связана… с прогрессом технологий производства чипов.
По мере того как микросхемы становятся компактнее, их соседние элементы все больше влияют друг на друга. В современных чипах памяти это может приводить к редкому эффекту самопроизвольного переключения ячейки памяти под действием электрического импульса от соседей.
До недавних пор предполагалось, что этот феномен практически невозможно использовать в реальной атаке для получения контроля над компьютером. Однако команде исследователей удалось таким образом получить привилегированные права на 15 из 29 тестовых ноутбуков.
Работает эта атака следующим образом. Для обеспечения безопасности изменения в каждый блок оперативной памяти могут вносить только определенная программа или процесс операционной системы. Условно говоря, некий важный процесс работает внутри хорошо защищенного дома, а неблагонадежная программа — на улице, за входной дверью.
Однако выяснилось, что если за входной дверью громко топать (быстро и часто менять содержимое ячеек памяти), то дверной замок с высокой вероятностью ломается. Такие уж замки ненадежные стали нынче делать.
Память более нового стандарта DDR4 и модули с контролем четности (которые стоят существенно дороже) к этой атаке невосприимчивы. И это хорошая новость.
Плохая же состоит в том, что очень многие современные компьютеры взломать таким образом можно. И сделать с этим ничего нельзя, единственное решение — поголовная замена используемых модулей памяти.
2 место: жесткие диски
Хорошая новость состоит в том, что такая атака — крайне трудоемкое и дорогостоящее мероприятие. Поэтому подавляющему большинству пользователей данная опасность не грозит — только особым счастливчикам, чьи данные настолько ценны, что их кража способна окупить расходы.
3 место: интерфейс USB
На третьем месте в нашем хит-параде уже не очень свежая, но по-прежнему актуальная уязвимость интерфейса USB. Совсем недавно новую жизнь в эту тему вдохнула современная компьютерная мода. Дело в том, что последние модели ноутбуков Apple MacBook и Google Pixel оснащены универсальным портом USB, через который в числе прочего подключается и зарядное устройство.
На первый взгляд ничего плохого здесь нет, всего лишь красивая унификация интерфейсов. Проблема в том, что подключение любого устройства через шину USB — дело небезопасное. Мы уже писали о критической уязвимости BadUSB, обнаруженной летом прошлого года.
Она позволяет внедрить вредоносный код непосредственно в микроконтроллер USB-устройства (флешки, клавиатуры и любого другого устройства) — там, где его не обнаружит, увы, ни одна антивирусная программа, даже самая хорошая. Тем, кому есть что терять, эксперты по безопасности советуют на всякий пожарный просто не пользоваться USB-портами. Вот только для новых Макбуков такая рекомендация нереализуема в принципе — зарядку же нужно подключать!
4 место: интерфейс Thunderbolt
Созданный им буткит Thunderstrike (кстати, первый буткит для яблочной операционной системы) использует функцию загрузки дополнительных модулей прошивки с внешних устройств. Thunderstrike подменяет ключи цифровых подписей в BIOS, которые используются для проверки обновлений, после чего с компьютером можно творить все что заблагорассудится.
После публикации исследования Хадсона Apple заблокировала возможность такой атаки в обновлении операционной системы (OS X 10.10.2). Правда, по словам Хадсона, этот патч — всего лишь временное решение. Принципиальная основа уязвимости по-прежнему остается нетронутой, так что история явно ждет продолжения.
5 место: BIOS
Когда-то каждый разработчик BIOS для материнских плат ПК использовал собственные рецепты, которые держались в секрете. Разобраться в устройстве таких микропрограмм было очень непросто, а значит, мало какой хакер был способен обнаружить в них баги.
С распространением UEFI изрядная часть кода для разных платформ стала общей, и это здорово облегчило жизнь не только производителям компьютеров и разработчикам BIOS, но и создателям зловредов.
Например, одна из недавних уязвимостей UEFI-систем позволяет перезаписать содержимое BIOS, несмотря на все ухищрения защиты, включая новомодную функцию Secure Boot в Windows 8. Ошибка допущена в реализации стандартной функции, поэтому работает во многих версиях BIOS разных производителей.
Большинство описанных выше угроз пока остаются некой экзотикой, с которой рядовые пользователи едва ли столкнутся. Однако завтра ситуация может в корне измениться — возможно, скоро мы с умилением будем вспоминать старые добрые времена, когда самым надежным способом лечения зараженного компьютера считалось форматирование жесткого диска.
Читайте также: