Как защитить Биос от сброса: полезные советы и рекомендации

Чтобы защитить BIOS от сброса, можно установить пароль на вход в настройки системы, что предотвратит несанкционированные изменения. Также важно отключить возможность загрузки с внешних устройств в BIOS, чтобы минимизировать риски неавторизованного доступа.

Дополнительно, некоторые материнские платы предлагают опцию защиты BIOS с помощью физического переключателя или перемычки. Использование таких решений в сочетании с регулярным обновлением прошивки поможет повысить уровень безопасности системы.

Учетная запись ребенка на компьютере

Если у ребенка, чья учетная запись имеет ограничения на уровне операционной системы, возникнет необходимость обойти эти ограничения, он сможет загрузить компьютер с внешнего загрузочного устройства. В качестве такого устройства может использоваться либо оптический диск, либо флэш-накопитель.

Чтобы предотвратить загрузку с внешних носителей, можно использовать настройки BIOS. BIOS (базовая система ввода-вывода) — это программа, ответственная за конфигурацию аппаратных компонентов компьютера. Она доступна на устройстве независимо от установленной операционной системы.

Чтобы получить доступ к интерфейсу настройки BIOS, известному как BIOS Setup, необходимо в самом начале загрузки устройства нажать специальную клавишу на клавиатуре. Конкретная клавиша зависит от конкретной модели компьютера или ноутбука. Обычно информация о нужной клавише отображается в начале загрузки. Время для нажатия клавиши обычно ограничено 1–2 секунд.

Перед тем как работать с BIOS вашего компьютера, найдите инструкцию к нему или к его материнской плате. В таких инструкциях есть разделы , посвященные настройкам BIOS . Там, кроме того, указано, какую клавишу клавиатуры нужно нажать для входа в BIOS Setup .

Изучив инструкцию, узнайте следующее:

  1. Какую клавишу следует нажать и в какой момент для доступа к настройкам BIOS.
  2. Как задать пароль, который будет защищать настройки BIOS от изменений.
  3. В каком разделе BIOS Setup располагаются параметры, определяющие порядок загрузки различных устройств (жесткого диска, CD/DVD-дисковода, USB-дисков).
  4. Как покинуть BIOS Setup, сохранив внесенные изменения.

В качестве примера рассмотрим настройку BIOS настольного компьютера, на котором установлена материнская плата Gigabyte GA-990FXA-D3, использующая Award Modular BIOS . Процесс работы разбит на шаги, соответствующие вышеприведенному плану.

1

Чтобы войти в BIOS Setup, необходимо в момент загрузки ПК нажать и удерживать клавишу DEL. Это нужно делать, когда на дисплее появится сообщение, информирующее о том, какую клавишу следует нажимать. В данном случае это сообщение будет звучать как "BIOS Setup". После этого появится основной экран BIOS Setup (рис. 5.24).

увеличить изображениеРис. 5.24. Основной экран настройки BIOS

2

Чтобы установить пароль, который будет защищать конфигурацию BIOS от изменений, необходимо с помощью клавиш-стрелок перейти к опции Set Supervisor Password. После нажатия клавиши Enter появится окно, где нужно ввести пароль. После ввода пароля снова нажмите Enter, и будет предложено подтвердить введенный пароль. После завершения ввода нажмите Enter еще раз.

Обязательно запомните этот пароль. Хотя его можно сбросить, если у вас нет опыта разборки компьютера и работы с его внутренними компонентами, это может оказаться затруднительным. Для сброса пароля обычно требуется замкнуть определенные контакты на материнской плате или извлечь батарею на некоторое время. Поэтому лучше записать пароль и хранить его в безопасном месте. Восстановление пароля на ноутбуках может оказаться еще более сложной задачей.

Для настройки порядка использования загрузочных устройств нужно перейти в раздел Advanced Bios Features ( рис. 5.25).

3

увеличить изображениеРис. 5.25. Расширенные настройки BIOS

В этом разделе представлены настройки, отвечающие за первичное, вторичное и третичное загрузочные устройства. Они обозначены как First Boot Device, Second Boot Device и Third Boot Device. Если первое устройство окажется недоступным (или если соответствующий носитель не поддерживает загрузку), система перейдет к проверке второго устройства. Если и оно не подойдет для загрузки, будет выбрано третье устройство. На многих компьютерах в качестве первого загрузочного устройства по умолчанию установлен CD-диск. В данном случае это именно так: параметр имеет значение CDROM.

Лучше всего установить все эти параметры в значение Hard Disk, которое соответствует жесткому диску компьютера. Для изменения параметра нужно перейти к нему, нажать Enter, с помощью клавиш-стрелок выбрать в появившемся окне ( рис. 5.26) нужный параметр и снова нажать Enter.

Расширить изображениеРис. 5.26. Диалог выбора загрузочного устройства

4

После установки параметров нужно перейти на главный экран BIOS Setup, нажав клавишу ESC на клавиатуре. Для того чтобы выйти из BIOS Setup с сохранением изменений, нужно перейти к пункту Save Exit Setup и нажать Enter. Появится окно с вопросом SAVE to CMOS and EXIT (Y/N)?. Для выхода с сохранением изменений нужно ввести с клавиатуры символ Y и нажать Enter.

По завершении перечисленных настроек загрузка компьютера будет возможно исключительно с внутреннего жесткого диска, а параметры BIOS будут защищены паролем.

В ходе данного урока вы научились применять инструменты операционной системы для создания учетной записи для вашего ребенка, а также настраивать семейные параметры безопасности. Кроме того, вы изучили, как ограничить загрузку компьютера с внешних устройств, используя настройки BIOS.

Об аппаратной защите 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).

К сожалению, разработчики BIOS обычно не используют этот механизм, предоставляемый чипсетом. Во всех материнских платах, исследованных автором, бит BLE (бит 1 регистра BIOS_CNTL) установлен в "0", поэтому, попытки снятия защиты записи не перехватываются.

Кроме того, деятельность "вирусописателей" сталкивается с определенными сложностями из-за того, что архитектура регистров контроля доступа к BIOS варьируется в зависимости от чипсета. Поэтому для успешного обхода защиты вирусу необходимо идентифицировать чипсет и обладать соответствующими модулями поддержки для каждого типа чипа.

2) Регистры защиты записи, такие как Block Locking Register, о которых говорилось ранее, являются частью микросхемы Flash ROM SST 49LF004A. В этой микросхеме также предусмотрен бит для защиты записи (бит 0) и бит, установка которого в "1" блокирует возможность снятия защиты записи (бит 1). Если биты 0 и 1 установлены в "1", вернуть микросхему BIOS в состояние, свободное от защиты записи, невозможно программным путем; это можно сделать только путем аппаратного сброса (по сигналу RESET).

К сожалению, и этот механизм обычно не используется разработчиками BIOS, а ведь его применение могло бы существенно улучшить защищенность. Во всех платах, исследованных автором, бит 1 в регистрах защиты блоков микросхем Flash ROM установлен в "0", то есть снятие защиты записи разрешено.

3) Третий уровень защиты обеспечивает, что для выполнения операций по стерению и перезаписи BIOS-микросхемы необходим специальный пароль. Это подразумевает передачу многоцикловых "ключевых" последовательностей с точно установленными адресами и данными. Поскольку у всех микросхем одного типа пароль является единым и может быть найден в документации к микросхеме, такая мера защиты ограничивает возможность случайного повреждения содержимого BIOS только при программных сбоях и несанкционированной записи случайных данных. Вредоносное ПО, изучив идентификаторы ROM Vendor ID и ROM Device ID, может определить тип BIOS-микросхемы и создать соответствующие ключевые последовательности, опираясь на доступную документацию.

4) Большинство микросхем Flash ROM, используемых в качестве носителей BIOS, имеют специальные входы, для подачи сигналов управления защитой записи. У рассматриваемой микросхемы SST 49LF004A это сигналы WP# (Write Protect) и TBL# (Top Block Lock). Для варианта исполнения микросхемы в 32-контактном корпусе PLCC, это контакты с номерами 7 и 8 соответственно.

Сигнал WP# отвечает за контроль записи в главный блок (первые 448 килобайт): 0=записать нельзя, 1=запись разрешена.

Сигнал TBL# управляет защитой записи блока загрузки (старшие 64 килобайта): 0=записать нельзя, 1=разрешена запись.

С точки зрения использования этих сигналов, материнские платы бывают трех видов:

В первом случае отсутствуют сигналы защиты записи, а на выводах WP# и TBL# постоянно находится уровень логической "1", который позволяет осуществлять запись. Защита не предусмотрена.

Второй вариант — сигналы защиты записи формируются с помощью "перемычек" (jumpers), переключаемых пользователем. Здесь установкой и снятием защиты записи можно управлять вручную. Такая мера достаточно эффективна, так как при логическом нуле на линиях WP# и TBL#, программно исказить содержимое микросхемы BIOS невозможно. Неудобство в том, что на время выполнения операции обновления BIOS, а также при перезаписи блоков параметров, связанной с изменением конфигурации, запись требуется разрешать вручную.

Третий вариант предполагает, что сигналы для защиты записи создаются с использованием регистра, к которому можно получить доступ программно, а управление его состоянием осуществляется BIOS. При этом пользователю нет необходимости переключать "перемычки", однако уровень защиты будет ниже, поскольку в отличие от второго варианта, здесь существует вероятность программного отключения защиты. Тем не менее, это может стать разумным компромиссом. Поскольку указанный программно-доступный регистр обычно реализуется специфическими компонентами платы, "вирусописатель", обладая информацией только о чипсете и микросхеме BIOS, но не имея схемы материнской платы, не сможет понять, какие данные и в какой регистр необходимо ввести для отключения защиты на данной материнской плате.

Проникновение в BIOS ROM: осваиваем SPI Flash №1

Данная статья продолжает рассматривать проблему угрозы изменения 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, который подробно рассмотрен в [2-3].

На указанной плате для хранения BIOS используется микросхема SST 25VF080B, информация о которой содержится в [5]. Эта микросхема имеет емкость 8 Мегабит (1 Мегабайт) и подключается через интерфейс SPI. В статье также затрагиваются микросхемы других производителей, использующих аналогичный интерфейс, что можно найти в [4,6,7]. Информация об интерфейсе SPI представлена в [8,9]. При работе с контроллером SPI потребуется учитывать механизмы доступа к конфигурационному пространству, которые описаны в документах [10-12].

Интерфейс SPI: историческая справка

Как известно, быстродействие микросхемы постоянного запоминающего устройства (Flash ROM), используемой в качестве носителя BIOS, практически не влияет на общую производительность компьютера. Это связано с тем, что при старте материнской платы, BIOS переписывается (или распаковывается) в оперативную память Shadow RAM и при обращении к BIOS в сеансе ОС, программы работают с оперативной памятью, а не с микросхемой Flash ROM. Поэтому, в отличие от процессора, памяти, графической подсистемы, эволюция которых сопровождается ростом производительности, микросхемы Flash ROM и их интерфейсы развиваются в другом направлении. Здесь главными критериями являются уменьшение стоимости, потребляемой мощности и занимаемой площади на материнской плате. Главный метод достижения этих целей – уменьшение количества проводников между микросхемой BIOS и контроллером, обычно входящим в состав "южного моста" чипсета. С точки зрения метода подключения микросхемы BIOS, можно выделить три поколения материнских плат:

1) На платах, где применяется шина ISA, устанавливались микросхемы постоянного запоминания, которые имели отдельные линии для адресов, данных и управления. Для каждого бита адреса и данных, а также для каждого управляющего сигнала (чтение, запись) необходим был свой провод, а именно печатный проводник на плате.

2) С появлением чипсетов Intel 810, 815, на основе "хабовой" архитектуры, шина ISA ушла в прошлое. Ряд устройств материнской платы, ранее подключаемых к ISA (контроллер гибких дисков, порты COM и LPT, микросхема BIOS), "переехали" на интерфейс Low Pin Count или LPC, название которого переводится как "малое количество сигналов". Сигналы адреса, данных и управления в этом интерфейсе передаются по пяти линиям (не считая сигналов сброса, тактирования и линий питания), в режиме мультиплексирования во времени. Микросхемы BIOS, используемые в таких платформах, иногда называют Firmware Hub или FWH. Пример программы стирания и записи микросхемы BIOS, приведенный в ранее опубликованной статье "Проникновение в BIOS ROM" N1 и N2" предназначен для таких платформ.

3) С момента появления чипсета Intel 945 в состав "южного моста" был интегрирован контроллер специализированной последовательной шины Serial Peripheral Interface (SPI), который обеспечивает передачу данных как в режиме чтения, так и записи, а также управление и статусную информацию через однобитный последовательный канал. Это дало возможность использовать 8-контактный корпус для микросхемы BIOS. В данной статье мы сосредоточимся на изучении именно таких платформ.

Важно отметить, что интерфейс LPC также поддерживается современными чипсетами, и разработчики материнских плат имеют возможность подключать микросхемы BIOS как через LPC, так и через SPI. Однако сфера применения интерфейса SPI не ограничивается только материнскими платами компьютеров. Внимательный читатель мог заметить, что переход к последовательному формату данных приводит к тому, что каждый из упомянутых интерфейсов требует больше тактов для операций чтения и записи по сравнению с их предшественниками, что потенциально может снизить производительность. Тем не менее, этого не происходит, поскольку увеличение частоты и оптимизация форматов данных позволяют компенсировать данный недостаток. Шина ISA функционирует на частотах 5-8 МГц, LPC — на 33 МГц, а SPI — на 33-50 МГц.

Архитектура микросхемы SPI Flash ROM

Микросхемы SPI Flash, в частности SST25VF080B, используют три сигнала для приема и передачи данных. SCK (Serial Clock) – вход для тактирования передаваемых или принимаемых данных. SI (Serial Input) – вход для передачи данных от контроллера к микросхеме, по этой линии побитно передаются адрес, данные для записи, и коды команд управления микросхемой. SO (Serial Output) – выход для передачи данных от микросхемы к контроллеру, по этой линии побитно передаются читаемые данные, а также информация о состоянии микросхемы. Контроллер управляет микросхемой посредством команд, инициирующих операции чтения и записи данных, стирания, чтения идентификаторов микросхемы, чтения и записи регистра статуса и т.п.

Информация о функциях всех восьми контактов микросхемы, описание команд и дополнительные сведения можно найти в [5].

Архитектура контроллера SPI

Контроллер SPI, входящий в состав "южного моста" Intel ICH8, содержит более 20 регистров управления и состояния. Регистры адресуются в пространстве памяти с использованием технологии memory-mapped I/O, рассмотренной в ранее опубликованной статье "Устройства системной поддержки. Исследовательская работа N [7-9]". Описание всех регистров и команд контроллера SPI выходит за рамки данной статьи, рассмотрим основные отличия программной модели интерфейса SPI от его предшественника — интерфейса LPC, акцентируя внимание на регистрах, используемых при выполнении основных операций – чтении идентификаторов, записи и стирании Flash ROM.

Следует отметить, что физический доступ к чипу BIOS (не стоит путать с областью Shadow RAM) осуществляется через окно, находящееся у верхней границы диапазона 0-4GB. К примеру, Flash ROM объемом 1 Мбайт будет доступен в пределах FFF00000h-FFFFFFFFh.

На платформах с интерфейсами ISA и LPC, в этом же диапазоне, при осуществлении операций стирания и записи происходит передача команд и данных для микросхемы Flash ROM, а также считывание её статуса. Платформа, использующая интерфейс SPI, рассматриваемый в данной статье, также позволяет считывать информацию из микросхемы BIOS через указанный диапазон, однако для передачи управляющей и статусной информации в процессе записи и стирания Flash ROM применяется другой способ доступа. Данные, необходимые для выполнения цикла на шине SPI (адрес и данные), записываются в специальные регистры контроллера SPI (Flash Address и Flash Data соответственно), затем команда на выполнение цикла обращения к Flash ROM (чтения или записи) передается в регистр Software Sequencing Flash Control. После этого, через регистр Software Sequencing Flash Status можно определить, когда операция завершена, и проконтролировать наличие ошибок. Данные, полученные из Flash ROM, хранятся в регистре Flash Data.

В платформах с интерфейсами ISA и LPC, передача команд выполнялась путем прямой записи байта кода команды в адресный диапазон Flash ROM. Интерфейс SPI использует косвенный метод передачи команд посредством 8-байтного регистра OpCode Menu. Каждый из байтов этого регистра хранит код одной из команд для управления Flash ROM (запись, стирание, чтение идентификатора и т.п.).

Для выполнения необходимой операции, программе необходимо указать номер байта (в диапазоне от 0 до 7), который содержит код соответствующей операции. Этот номер передается через 3-битное поле COP (Cycle Opcode Pointer), которое является частью 32-битного кода, записываемого в регистр Software Sequencing Flash Control для инициирования выполнения команды. Блок регистров OpCode Menu обычно инициализируется BIOS в момент загрузки платформы. Позиции байтов с кодами операций в 8-байтном блоке определяются конкретной реализацией BIOS и могут варьироваться, поэтому программе необходимо просканировать этот блок и выяснить, под каким номером находится нужная команда. Именно этот номер затем будет использован для заполнения поля COP.

Рассмотрим использование регистров Software Sequencing Flash Status и Software Sequencing Flash Control подробнее. Регистр Software Sequencing Flash Status имеет разрядность 8 бит и расположен по смещению 90h относительно базового адреса контроллера SPI (SPIBAR+90h). Регистр Software Sequencing Flash Control имеет разрядность 24 бит и расположен по смещению 91h.

В процессе программирования контроллера для обращения к двум указанным регистрам можно эффективно использовать одну 32-битную операцию чтения или записи по адресу 90h. В данном случае биты 0-7 относятся к регистру состояния Software Sequencing Flash, а биты 8-31 — к регистру управления Software Sequencing Flash. Такой способ доступа применяется в ассемблерных примерах, приводимых в статье. Далее рассмотрим назначение битов, основываясь на описанной выше нумерации.

Бит 0 (SPI Cycle In Progress) – данный бит служит для определения завершения операции на шине SPI. Значение "0" указывает на то, что шина SPI свободна и программа может инициировать следующий цикл. Значение "1" говорит о том, что шина SPI занята и в данный момент выполняется транзакция. Бит изменяется аппаратно и доступен только для чтения.

Бит 1 (Reserved) – не используется.

Бит 2 (Статус завершения цикла) – устанавливается в "1" аппаратным способом после окончания транзакции на шине SPI. Для его сброса программе необходимо записать "1" в этот бит.

Бит 3 (Flash Cycle Error) – устанавливается в "1" аппаратно, если при выполнении транзакции имели место ошибки: защита записи или попытка запуска следующей транзакции до завершения предыдущей. Для сброса, программа должна записать "1" в данный бит.

Бит 4 (Журнал ошибок доступа) – устанавливается в "1" на уровне аппаратного обеспечения при наличии попыток доступа к микросхеме BIOS, которые нарушают установленные права на доступ к определённым диапазонам адресов, заданным в конфигурационных регистрах контроллера SPI.

Биты 5-7 (Зарезервировано) – не применяются.

Бит 8 (Reserved) – не используется. Как было показано выше, биты 8-31 рассматриваемого 32-битного слова соответствует битам 0-23 регистра Software Sequencing Flash Control.

Бит 10 (Atomic Cycle Sequence) – при отправке команды на выполнение транзакции, установка значения "1" в этом бите блокирует внешние события от влияния на процессы, происходящие через интерфейс SPI, до тех пор, пока не завершатся три этапа: отправка префиксной команды, выполнение основной команды и завершение её выполнения.

Отметим, что таким образом реализуется один из механизмов защиты от случайного искажения содержимого микросхемы BIOS. Так называемые префиксные команды (например, Write Enable) должны предшествовать командам, изменяющим содержимое микросхемы (например, Write, Erase). Получив код команды, содержащий "1" в данном бите, все три фазы контроллер выполняет аппаратно, без вмешательства процессора до завершения выполнения основной команды.

Бит 11 (Указатель Префиксного Операционного Кода) – в случае применения префиксных инструкций (когда 10 бит установлен на "1", как упоминалось ранее), данный бит определяет один из двух байтов, который будет отправлен в качестве префиксной инструкции для микросхемы SPI Flash. При значении "0" выбирается младший байт из регистра конфигурации префиксного операционного кода, а при "1" – старший.

Биты 12-14 (Указатель Основного Операционного Кода) – данное битовое поле определяет один из восьми байтов, который будет использован в качестве основной команды для микросхемы SPI Flash. Эти байты хранятся в регистре конфигурации меню операционных кодов.

Бит 15 (Reserved) – не используется.

Биты с 16 по 21 (Количество байтов данных) указывают на общее число байтов, используемых для чтения или записи. Это количество соответствует значению этого поля, увеличенному на единицу. К примеру: 000000b=1 байт, 111111b=64 байта.

Бит 22 (Data Cycle) – Задает наличие байтов данных в команде. "0" означает, данные отсутствуют (например, в команде стирания), "1" означает, что данные присутствуют (например, в команде чтения статуса, данными является содержимое регистра статуса).

Бит 23 (SPI SMI# Enable) – активирует возможность запроса на возникновение прерывания System Management Interrupt по окончании транзакции, 0=выключено, 1=включено.

Биты 24-26 (SPI Cycle Frequency) – устанавливает частоту битовой синхронизации во время выполнения транзакции по SPI. Используются два значения (остальные зарезервированы): 000b=20MHz, 001b=33MHz.

Биты 27-31 (Reserved) – не используются.

Следует отметить, что инициализация восьми байтов регистра Opcode Menu Configuration Register и двух байтов регистра Prefix Opcode Configuration Register осуществляется BIOS в момент запуска платформы. Таким образом, при создании битовых полей для выбора кода команды и кода префикса, программное обеспечение обязано просканировать указанные регистры, чтобы определить, под каким номером в них располагаются коды необходимых операций. Варианты их заполнения могут значительно различаться, даже среди матерей одной модели, использующих разные версии BIOS. Некоторые утилиты перепрошивки Flash способны изменять содержимое указанных регистров.

Детальное описание всех регистров и команд контроллера SPI приводится в [3]. Описание команд микросхемы SPI Flash приводится в [4-7]. Информация, изложенная выше, также проиллюстрирована ассемблерными примерами, прилагаемыми к статье.

Механизмы доступа к Flash ROM и защита записи

В общем, для начала процессов стирания или перезаписи микросхемы BIOS, программе необходимо осуществить четыре шага:

  1. Настроить регистры "южного моста" чипсета, отвечающие за размещение микросхемы BIOS в адресном диапазоне для обеспечения доступа ко всему объему микросхемы.
  2. Отключить защиту записи BIOS, которая реализуется средствами "южного моста" чипсета.
  3. Отключить защиту записи BIOS, осуществляемую средствами микросхемы Flash ROM.
  4. Отправить команду на стирание или запись микросхеме Flash ROM.

Давайте более подробно рассмотрим эти шаги, механизмы защиты, которые препятствуют их несанкционированному осуществлению, а также уязвимости этих защитных мер.

Как было сказано выше, при выполнении операций записи и стирания, программный доступ к микросхеме SPI Flash осуществляется посредством регистров контроллера SPI, без использования диапазона адресов, в котором доступен образ микросхемы BIOS. Поэтому перенастройка чипсета для доступа к диапазону FFF00000h-FFFFFFFFh в данном примере не потребуется.

Механизм защиты данных, внедрённый в "южный мост" Intel ICH8, основан на той же концепции, что и в предыдущих версиях платформ, но варьируются лишь адреса регистров. Таким образом, процесс отключения этой защиты схож с процессом, детализированным в ранее опубликованных материалах.

Доступом к микросхеме BIOS управляет 8-битный регистр BIOS_CNTL (его координаты в конфигурационном пространстве Bus=0, Device=1Fh, Function=0, Register=DCh). Бит 0 этого регистра (бит BIOSWE, BIOS Write Enable) управляет разрешением записи в микросхему BIOS, 0=запрещена, 1=разрешена. Бит 1 того же регистра (бит BLE, BIOS Lock Enable) обеспечивает перехват несанкционированного выключения защиты.

Когда бит BLE=1, попытка установить бит BIOSWE=1 приведет к генерации прерывания SMI (System Management Interrupt), которое вызовет специальную процедуру из BIOS. Кроме того, если при запуске BIOS установит бит BLE=1, программно обнулить его чипсет не даст, и режим перехвата можно отключить только с помощью аппаратного сброса (по сигналу RESET). Дополнительную информацию можно найти в [3].

На практике выясняется, что этот механизм "защиты от снятия защиты" зачастую не используется разработчиками BIOS. Во всех материнских платах, которые исследовал автор, бит BLE=0, поэтому для снятия защиты записи достаточно активировать бит BIOSWE=1, и эта операция не будет перехвачена.

Микросхема Intel ICH8 также поддерживает защиту содержимого микросхемы BIOS, путем задания адресных диапазонов, защищенных от чтения и (или) записи. Теоретически, на базе данного механизма можно реализовать эффективную защиту, так как запрет программно включается процедурами BIOS при старте платформы, и может быть снят только при аппаратном сбросе. Но и этот механизм обычно не активируется разработчиками BIOS.

Источники информации

Электронные документы, доступные на сайте developer.intel.com

1) Спецификация интерфейса Intel Low Pin Count (LPC). Ревизия 1.1. Номер документа 251289-001. 2) Технический справочник по семейству чипсетов Intel P965 Express – для контроллера памяти Intel 82P965 (MCH). Номер документа: 313053-001.

3) Intel I/O Controller Hub 8 (ICH8) Family Datasheet – For the Intel 82801HB ICH8 and 82801HR ICH8R I/O Controller Hubs. Document Number: 313056-001.

Электронные документы, доступные на сайте www.superflash.com или ssti.com

4) Технический паспорт на 1 Mbit SPI Serial Flash SST25VF010. Номер документа: S71233-01-000. 5) Технический паспорт на 8 Mbit SPI Serial Flash SST25VF080B. Номер документа: S71296-01-000.

Электронные документы, доступные на сайте winbond.com.tw

6) Память с последовательным доступом W25X10A, W25X20A, W25X40A, W25X80A на 1 Мбит, 2 Мбит, 4 Мбит и 8 Мбит с секторами по 4 КБ и двойным выводом SPI. Технический паспорт.

Электронные документы, доступные на сайте macronix.com

7) MX25L802 8M-bit [8Mx1] CMOS Serial Flash EEPROM Data Sheet.

Электронные документы, доступные на сайте datakey.com

8) Спецификация интерфейса SPI EEPROM. Номер детали 223-0017-004 Редакция H.

Электронные документы, доступные на сайте vtitechnologies.com

9) SPI Interface Specification. Technical Note 15.

Электронные документы, доступные на сайте pcisig.com

Материалы [11], [12] на ресурсе pcisig.com предоставляются исключительно участникам группы PCI Special Interest Group. Используя поисковики, можно обнаружить эти документы для свободного скачивания. 10) Спецификация BIOS PCI. Редакция 2.1. 11) Спецификация локальной шины PCI.

Редакция 3.0. 12) Спецификация архитектуры мостов PCI-to-PCI. Редакция 1.1.

Оцените статью
LeeReload
Добавить комментарий