информационная безопасность
без паники и всерьез
 подробно о проекте
Rambler's Top100Атака на InternetВсе любят медСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / библиотека / безопасность
БИБЛИОТЕКА
вход в библиотеку
книги
безопасность
программирование
криптография
internals
www
телефония
underground
беллетристика
разное
обзор: избранное
конкурс
рейтинг статей
обсуждение




Подписка:
BuqTraq: Обзор
RSN
БСК
Закон есть закон




Противодействие атакам, основанным на использовании ошибок в системном и в прикладном ПО
А.Ю.Щеглов
Опубликовано: dl, 10.01.06 04:08

Анализ статистики успешных атак на механизмы защиты современных ОС показывает, что существенное место в них занимают атаки, связанные с использованием злоумышленниками ошибок в прикладном и в системном ПО. При этом надо понимать, что, во-первых, подобные уязвимости всегда будут присутствовать в системе, во-вторых, по мере развития встроенных в ОС механизмов защиты, их удельная доля будет возрастать, как следствие, данная задача защиты информации со временем будет доминировать. В данной работе мы рассмотрим предлагаемые и апробированные в КСЗИ "Панцирь-К" для ОС Windows 2000/XP/2003 (разработка ЗАО "НПП "Информационные технологии в бизнесе") методы противодействия подобным атакам.

Вместо введения приведем выдержки из двух недавно опубликованных статей.

Из опубликованной на сайте www.itsec.ru статьи ("Нарушение конфиденциальности информации - самая большая внутренняя ИТ-угроза" от 08.06.2005):

"Величина ущерба от действий хакеров разнится. Если по 2003 году исследователи более-менее пришли к общему мнению и определились, что сумма составляет 17 млрд. долларов, то по 2004 году оценки совершенно разные. По данным исследовательской компании Datamonitor, мировой экономический ущерб от хакерских атак - явных и скрытых - может достигнуть 155,5 млрд. долларов. По мнению экспертов, ежегодно хакерами взламывается до 90% сетей предприятий.

Один из основных элементов безопасности - это операционная система компьютера. Британские исследователи из группы mi2g наиболее безопасными платформами считают Apple Mac OS X и открытую версию UNIX - BSD (Berkeley Software Distribution). Операционные системы Linux и Microsoft Windows, напротив, были признаны слабо защищенными. Свои выводы специалисты mi2g сделали, проанализировав 235 тыс. успешных хакерских атак, проведенных во всем мире с ноября 2003 по октябрь 2004 года.

Среди компьютеров под управлением ОС Linux взломанными оказались 65%, под управлением Windows - 25%."

Из опубликованной на сайте www.cnews.ru статьи ("В Windows найдены критические уязвимости" от 12.10.05):

Уязвимы Microsoft Windows 2000 SP4; Microsoft Windows XP SP1, SP2 Microsoft Windows XP Professional x64 Edition; Microsoft Windows Server 2003 Service Pack 1; Microsoft Windows Server 2003 with SP1 for Itanium-based Systems; Microsoft Windows Server 2003 x64 Edition.

Уязвимость обнаружена в библиотеке MSDTCPRX.DLL координатора распределенных транзакций Microsoft (MSDTC), слушающим на динамическом порту и порту TCP 3372, при включенной поддержке Network DTC Access. Удаленный пользователь может послать специально сформированное сообщение службе, вызвать переполнение буфера и выполнить произвольный код с системными привилегиями.

Уязвимость в компоненте COM+ позволяет удаленному пользователю выполнить произвольный код на целевой системе. В Windows XP SP2 и Windows Server 2003 только локальный пользователь может выполнить произвольный код на целевой системе.

"Дырам" присвоен рейтинг опасности "критическая".

Заметим, что подобная информация об обнаруженных критичных уязвимостях для современных ОС не является редкостью. Тому есть ряд причин. Во-первых, современные ОС это не нечто вновь созданное, в большинстве своем они представляют собою развитие подходов к построению системы, заложенных десятки лет назад, когда вопросы компьютерной безопасности не рассматривались всерьез (быстро создавать новые версии сложных систем, что требует от разработчиков конкуренция, возможно лишь при доминирующем внедрении технических решений и программного кода, использованного в предшествующих версиях). Во-вторых, современные ОС достаточно сложные системы, поэтому исправление уязвимости на системном уровне, предполагающее последующее полнофункциональное тестирование системы, может затянуться на недели и месяцы (если же это не коммерческое ПО, то и эти сроки могут существенно увеличиваться). В-третьих, что, возможно, особенно критично, уязвимость защиты современных ОС обусловливается не только уязвимостью системных средств, но, что следует из анализа существующей статистики уязвимостей, и ошибками в приложениях, в этом случае, подчас, вообще сложно говорить о какой-либо оперативности исправления ошибок. Ну, и, наконец, в-четвертых, у программистов бытует мнение, что на 3 исправленные ошибки вносится 1 новая (что не лишено основания).

Исследуя существующую статистику уязвимостей - для ее получения достаточно обратиться к бюллетеням безопасности Microsoft (http://www.microsoft.com/technet/security) и к архиву рассылки NTBugTraq (http://www.ntbagtraq.com, http://security.nnov.ru), не трудно показать, что к основным причинам уязвимости современных ОС, применительно к семейству ОС Windows, характеризуемых сегодня, пожалуй, наиболее динамичным развитием встроенных средств защиты (что, вместе с тем, как отмечали в начале работы, не позволяет признать их хорошо защищенными), относятся ошибки программирования и архитектурные недостатки реализации механизмов защиты.

Рассмотрим технологии защиты и реализацию механизмов защиты, решающих задачи устранения уязвимостей современных ОС, в основе которых лежат ошибки программирования и архитектурные недостатки реализации механизмов защиты в ОС, на примере КСЗИ "Панцирь-К" для ОС Windows 2000/XP/2003 (разработчик ЗАО "НПП "Информационные технологии в бизнесе").

1. Устранение архитектурных недостатков ОС.

Множество успешных атак было направлено на расширение привилегий. При этом, как средства осуществления атак, так и используемые уязвимости сильно различаются. Например, это атаки на переполнение буфера (об одной из таких атак упоминалось в начале работы), причем, самое интересное, с этой целью могут использоваться не только подобные уязвимости системных средств, но и приложений, что в принципе недопустимо - ошибка в приложении (не содержащем в своем составе средств защиты) уж никак не должна сказываться на защищенности системы - это недостаток системы, призванной обеспечивать защиту информации. Разработчик приложения, решая оптимизационную задачу определения объема резервируемой памяти, меньше всего должен задумываться над вопросами безопасности. Это атаки на сервисы олицетворения и др. Рассмотрим, о каком архитектурном недостатке системы в данном случае идет речь. Одним из основополагающих принципов построения системы является то, что системному пользователю, в частности пользователю System, предоставляется неограниченная возможность доступа ко всем ресурсам, в том числе, и защищаемых ОС, в частности, он может запустить любой процесс, модифицировать системный диск и ключи реестра ОС и т.д., другими словами, возможность полного управления системой. Поэтому целью любой атаки на расширение привилегий, вне зависимости от используемой уязвимости, является получение прав привилегированного пользователя, в частности System, для получения бесконтрольного доступа к ресурсам. Может быть, все бы в данном решении было и не так страшно, если бы ОС не предоставляла возможности запуска приложений с системными правами, в частности от лица пользователя System. Архитектурное противоречие здесь состоит в том, что ОС, предоставляя подобный сервис разработчикам приложений, сама не обеспечивает защиту подобного сервиса. Это приводит к тому, что защита уже зависит от того, насколько корректно написано приложение, а ошибки приложений становятся уязвимостью ОС, позволяя злоумышленнику получить неконтролируемые системой права доступа к ресурсам.

Сложность противодействия подобным уязвимостям добавочным средством защиты обусловливается тем, что в данном случае оно должно вступать в противоречие собственно с идеологией построения ОС. Так не представляет труда разграничить права доступа для пользователя System, в частности запретить ему возможность модификации системного диска, однако при этом система не сможет работать (в частности, корректно). Дело в том, что от лица пользователя System, в первую очередь, запускаются системные процессы - подобным разграничением всем им будет запрещен доступ на запись к системному диску.

Основу предлагаемого нами решения данной задачи составляет включение в схему разграничения прав доступа к ресурсам, наряду с субъектом доступа "пользователь", субъекта доступа "процесс", в предположении, что права доступа этих субъектов могут не совпадать (в ОС процесс запускается с правами пользователя, его запустившего). При этом предполагается управлять доступом (разграничивать права доступа) не только для субъекта пользователь, но и для субъекта процесс, причем могут быть выделены следующие схемы задания разграничительной политики доступа к ресурсам:

  • Разграничение прав доступа к объектам процессов вне разграничений пользователей (эксклюзивный режим обработки запросов процессов - доступ к объекту разрешается, если он разрешен процессу - права доступа пользователя, запустившего процесс не учитываются. Данная схема разграничений может использоваться в том случае, когда процессу следует расширить права доступа к ресурсам, по сравнению с пользователем, запустившим процесс);
  • Разграничение прав доступа к объектам пользователей, вне разграничений процессов (эксклюзивный режим обработки запросов пользователей - доступ к объекту разрешается, если он разрешен пользователю - права доступа процесса не учитываются. Это обычная схема разграничений прав доступа, используемая современными ОС, не позволяющая учитывать свойства отдельных процессов, в частности, уровень доверия к ним);
  • Комбинированное разграничение прав доступа - разграничение прав доступа к объектам процессов в рамках разграничений пользователей (совместное разграничение доступа процессов и пользователей - доступ к объекту разрешается, если он разрешен и пользователю, и процессу. Данная схема разграничений может использоваться в том случае, когда процессу следует сузить права доступа к ресурсам, по сравнению с пользователем, запустившим процесс).

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

Замечание. В КСЗИ "Панцирь-К" для ОС Windows 2000/XP/2003 субъект доступа "процесс" включен во все механизмы разграничения доступа к ресурсам (к объектам файловой системы, к объектам реестра ОС, к внешним накопителям, к разделенным в сети ресурсам, к сетевым рессурсам и др.). Поэтому расширение привилегий не позволит получить доступа ко всем защищаемым ресурсам, как к локальным, так и к сетевым (это уже вопросы полноты или достаточности реализации разграничительной политики доступа к ресурсам).

Решение задачи состоит в следующем. Пользователю System запрещается доступ на запись к системному диску и к реестру ОС, а тем же системным процессам, которые должны иметь подобное право доступа, он разрешается эксклюзивно (вне прав пользователя) - задача защиты здесь решается в общем виде, т.к. системные процессы не обладают пользовательским интерфейсом и возможностью доступа к ним пользователей. Возникает вопрос, а насколько сложно будет настроить подобную систему?

Пример настройки механизма управления доступом к файловым объектам для виртуального пользователя "System" для ОС Windows технологии NT представлен в Табл. 1.

Настройки выполнены в следующих предположениях: системным является диск C:\, исполняемые файлы программ, разрешенных для выполнения, располагаются в каталогах: C:\Winnt (WINDOWS) - системные процессы, C:\Program Files - каталог, в который администратором инсталлируются разрешенные пользователям для выполнения программы. СЗИ НСД установлена на системный диск в каталог: C:\СЗИ НСД, ее процессам также следует предоставить неограниченные права доступа.

Таблица 1

Субъект доступа Ресурсы
Пользователи Разрешённые для чтения Разрешённые для записи и чтения Разрешённые для выполнения
System C: C:\Documents and Settings C:\Program Files
C:\Winnt (WINDOWS)
C:\СЗИ НСД
Процессы (эксклюзивное право доступа) Запрещенные для чтения Запрещенные для записи и чтения Запрещенные для выполнения
C:\СЗИ НСД
С:\WINNT (WINDOWS)\system32\winlogon.exe
С:\WINNT (WINDOWS)\system32\lsass.exe
С:\WINNT (WINDOWS)\system32\csrss.exe
С:\WINNT (WINDOWS)\system32\svchost.exe
С:\WINNT (WINDOWS)\system32\services.exe

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

В Табл.1 проиллюстрирован и наш подход к реализации механизма обеспечения замкнутости программной среды. Данный механизм обеспечивает возможность запуска лишь санкционированных процессов, поэтому он является основой антивирусного противодействия, в части защиты от вирусов, троянов, черверй и т.д.. Если речь идет о разграничениях для системного пользователя, то в качестве разрешенных для выполнения ему следует задать и все системные процессы, что делает практически не настраиваемым механизм, основанный на задании списка разрешенных к запуску процессов. Предлагаемый же нами подход состоит в задании разрешенных к запуску процессов не их списком, а заданием папок, из которых пользователям разрешено запускать процессы. С учетом задания разграничений для пользователя System, в качестве подобных папок целесообразно задавать каталоги C:\Program Files и C:\Winnt (WINDOWS), что проиллюстрировано в Табл.1. Достоинством подобного подхода также является и то, что он позволяет сохранить все штатные действия в части администрирования системы - администратор должен штатными средствами инсталлировать программы в каталог и штатными же средствами их удалять из каталога. Поскольку запись в эти каталоги запрещена всем пользователям, в системе могут быть запущены только санкционированные процессы, даже в случае получения злоумышленником системных прав (расширения привилегий). Заметим, что корректность реализации данного механизма также определяется возможностью запрета модификации папок с разрешенными на запуск исполняемыми файлами для системных пользователей, в частности для пользователя System.

В порядке иллюстрации, на Рис.1 и Рис.2 представлены интерфейсы настройки разграничений прав доступа к объектам файловой системы (на жестком диске и на внешних накопителях, локальных и разделенных в сети, для разделенных - по исходящему и входящему запросам доступа), реализованные в КСЗИ "Панцирь-К" для ОС Windows 2000/XP/2003.


Рис.1. Интерфейсс настройки разграничений прав доступа к объектам файловой системы для субъекта "пользователь"



Рис.2. Интерфейсс настройки разграничений прав доступа к объектам файловой системы для субъекта "процесс"

Заметим, что в КСЗИ "Панцирь-К" реализован принципиально иной подход к заданию правил доступа к ресурсам, нежели реализуется средствами ОС. Права доступа здесь присваиваются не объектам доступа (в качестве атрибутов), а назначаются субъектам - для каждого субъекта указывается, к каким ресурсам он имеет право доступа при разрешительной политике - к остальным ресурсам ему доступ запрещается, соответственно, наоборот, при запретительной политике.

Это принципиально упрощает настройку механизма, во-первых, делая ее интуитивно понятной (разграничительная политика доступа априори формируется для пользователей), во-вторых, вся настройка механизма сводится лишь к занесению нескольких записей в интерфейсе.

2. Противодействие ошибкам в системном и прикладном ПО.

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

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

Основу предлагаемого нами и реализованного в КСЗИ "Панцирь-К" метода является непрерывная регистрация событий, происходящих в системе, и их контроль, посредством сравнения с заданным (эталонным) списком санкционированных (разрешенных) событий. Так как при реализации данного метода фиксируется сам факт появления события в системе, то будут зафиксированы и события, причиной появления которых могло быть следствием обхода механизмов контроля доступа, обусловливаемого наличием ошибок программирования, либо закладок в ПО.

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

Предлагаемый подход состоит в следующем. В системе выделяются те события, которые нужно непрерывно контролировать. При большом количестве событий они объединяются в группы (списки) по функциональному признаку (или другому общему свойству), см. Рис.3. Создается эталонная копия свойств данной группы (списка санкционированных событий). Каждый из списков формирует отдельный уровень системы. Свойства системы считаются нарушенными в случае расхождения эталонной копии и оригинала. В процессе работы защищаемой системы осуществляется контроль событий, путем сравнения эталонных копий списков каждого уровня и их эталонных значений. При расхождении генерируется состояние нарушения безопасности системы, реакцией на которое может быть восстановление целостности контролируемых файловых объектов или объектов реестра ОС, прекращение события (например, завершение несанкционированного события), или другой сценарий, предусмотренный в системе защиты.

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

В порядке иллюстрации приведем интерфейсы лишь некоторых из реализованных в КСЗИ "Панцирь-К" для ОС Windows 2000/XP/2003, механизмов контроля списков санкционированных событий, которые представлены на Рис.4 и Рис.5.


Рис. 3. Иллюстрация метода контроля санкционированности событий



Рис. 4. Интерфейс настройки механизма контроля разрешенных в запуску в системе процессов и драйверов



Рис. 5. Интерфейс настройки механизма контроля обязательных в системе процессов и драйверов

Заметим, что реализация соответствующих механизмов контроля содержит в своем составе, как набор фиксированных (заданных разработчиком) реакций, в частности "Завершить", "Восстановить", "Сообщить на сервер" (при такой заданной реакции сообщение о появлении в системе соответствующего несанкционированного события в реальном времени будет отправлено на отдельную компоненту сервера безопасности - сервер ошибок), так и возможность потребителю создать собственный файл реакции ("Файл сценария") - программу, которая будет запущена механизмом защиты автоматически при обнаружении соответствующего несанкционированного события.

В своих работах мы все время говорим о комплексности системы защиты. Посмотрим, как включение в систему защиты описанного механизма (на самом деле, самостоятельного уровня защиты), позволяет изменить подходы к построению подсистемы аудита (регистрации) событий.

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

В порядке иллюстрации приведем окно сервера ошибок, реализованного в сервере безопасности КСЗИ "Панцирь-К" для ОС Windows 2000/XP/2003, которое представлено на Рис.6.


Рис. 6. Внешний вид сервера ошибок

Естественно, что на сервере безопасности также имеет смысл предусмотреть автоматический запуск реакции, которая должна задаваться администратором. Например, в КСЗИ "Панцирь-К" для ОС Windows 2000/XP/2003 для любого типа сообщения о несанкционированном событии (для любого типа строки в окне сервера ошибок, см. Рис.6) может быть установлена своя реакция (запускается программа реакции), что задается в интерфейсе настройки сервера ошибок, представленном на Рис.7.


Рис. 7. Настройка сценариев автоматической реакции на сервере ошибок

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

О новых разработках ЗАО "НПП "Информационные технологии в бизнесе", в частности о КСЗИ "Панцирь-К" для ОС Windows 2000/XP/2003, можно получить дополнительную информацию на сайте компании: www.npp-itb.spb.ru.


Д.т.н, проф. А.Ю.Щеглов
ЗАО "НПП "Информационные технологии в бизнесе"
info@npp-itb.spb.ru

обсудить  |  все отзывы (7)

[26378; 4; 4.5]




Rambler's Top100
Рейтинг@Mail.ru





  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach