Анализ проблем верификации драйверов Windows - page 1

Анализ проблем верификации драйверов Windows
1
УДК 681.3.066
Анализ проблем верификации драйверов Windows
© Н.Г. Ершов, Н.Ю. Рязанова
МГТУ им. Н.Э. Баумана, Москва, 105005, Россия
Статья посвящена вопросам, связанным с безопасностью работы ОС Windows.
Показано, что драйверы режима ядра, в которых используются средства взаимо-
исключения, могут быть потенциально опасными для системы и являться причи-
ной краха системы. Анализируются результаты работы включенных в систему
средств верификации Driver Verifier. Для проведения анализа разработаны драйве-
ры режима ядра, содержащие разные типы угроз, и выполнена их верификация.
Определены возможности и сформулированы практические рекомендации по ис-
пользованию системных средств верификации с целью обнаружения и исключения
из их кода потенциально опасных участков.
Ключевые слова
:
верификация, крах системы, драйвер, спин-блокировка,
тупик.
Операционные системы (ОС) семейства Windows, в отличие от
систем Linux, являются «закрытыми». Это значит, что изменить код
ядра системы нельзя. Однако часто возникает потребность адаптиро-
вать систему к выполнению конкретных задач. Изменить функцио-
нальность операционной системы Microsoft Windows можно, только
написав соответствующий драйвер режима ядра. Некорректно напи-
санный драйвер может разрушить систему, что приведет к потере
хранимой в системе информации. Драйвер, содержащий потенциаль-
но опасный код, может быть успешно откомпилирован, отлажен и
установлен в системе. При этом такой код может быть не выявлен ни
на одном из этапов разработки драйвера. Опасность заключается в
том, что при возникновении определенных ситуаций в системе такой
драйвер приведет к краху системы.
При написании драйвера могут потребоваться создание в нем
дополнительного потока, реализация монопольного доступа к внут-
ренним для драйвера структурам или к глобальным структурам
данных ядра системы средствами взаимоисключения, предоставля-
емыми ОС. Взаимоисключение в ОС Windows реализуется с помо-
щью специальных объектов ядра, отличающихся друг от друга осо-
бенностями реализации. Некорректно выполненное в драйвере вза-
имоисключение, особенно в ситуациях многократного обращения к
разделяемым ресурсам, может привести к взаимоблокировкам пото-
ков ядра и краху системы. Контроль над объектами взаимоисключе-
ния очень сложен и ресурсоемок, поэтому в системе по умолчанию
не осуществляется.
1 2,3,4,5,6,7,8,9,10,11,...12
Powered by FlippingBook