Анализ возможностей создания каналов несанкционированного доступа к информации с использованием уязвимостей чипсета

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

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

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

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

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

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

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

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

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

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

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

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

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

Искажение содержимого BIOS ROM

 

На одном из этапов эволюции платформы PC, а именно в середине 90-х годов прошлого века, во времена процессоров Intel Pentium и AMD K5, в качестве носителя BIOS начали использовать микросхемы электрически стираемых и перепрограммируемых постоянных запоминающих устройств (Flash ROM). Это позволило изменять ("перешивать") содержимое BIOS без физического вмешательства в компьютер. Мотивацией для обновления BIOS является поддержка новых технологий и устройств, исправление ошибок, допущенных разработчиками BIOS, установка пользовательских заставок и т.п. Одной из важнейших функций BIOS является выполнение стартовой процедуры POST (Power-On Self Test) при включении питания или сбросе. Именно в ходе этой процедуры платформа инициализируется и подготавливается к загрузке ОС. Именно к BIOS (по адресу FFFFFFF0h) обращается процессор при чтении первой команды после сброса или включения питания. Таким образом, искажение содержимого BIOS может привести к отсутствию старта материнской платы. Такое искажение может произойти не только из-за действий вредительских программ, стирающих содержимое BIOS ROM или записывающих в него некорректную информацию, но и по другим причинам, например из-за дефекта микросхемы Flash ROM или зависания программы перезаписи в интервале времени, когда старый BIOS уже вытерт, а новый еще не записан.

Большинство микросхем Flash ROM, используемых в качестве физического носителя BIOS, имеют так называемый Boot Block размером 8-16 Кбайт (в зависимости от типа микросхемы). Это область, аппаратно защищена от перезаписи и вероятность ее искажения существенно меньше, чем у основного блока. И