Обзор подготовлен При поддержке
CNewsAnalytics Radware

Уязвимости современных ОС

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

Статистика показывает, что количество уязвимостей растет год от года. С одной стороны, это связано с тем, что год от года растет количество ПО, а с другой, с тем, что сейчас уязвимости ищутся намеренно, как хакерами, так и компаниями производителями ПО и ОС. Первые преследуют криминальные цели — использовать «дыру» для получения доступа к чужим информационным ресурсам, вторые — чтобы не испортить свою репутацию и обезопасить информационные ресурсы своих клиентов.

Количество обнаруженных уязвимостей

Источник: NIST

* — за 7 месяцев

По данным mi2g, ущерб от различных видов атак достиг в 2004 г. $150 млрд., что примерно в два раза больше, чем в годом ранее. По мнению экспертов, ежегодно хакерами взламывается до 90% сетей предприятий

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


Основополагающие посылы защиты информации

Текущее состояние защищенности системы может иметь одно из двух состояний: полностью защищена, либо полностью незащищена. Переход системы из одного состояние в другое осуществляется при обнаружении хотя бы одной уязвимости защиты, возвращение в исходное состояние — при устранении известной уязвимости. Другими словами, рассуждения о степени защищенности ОС неуместны — любая обнаруженная в системе уязвимость делает ее полностью незащищенной.

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

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

Считая, что обнаружение каналов НСД к информации (уязвимостей) — (или в терминологии теории надежности — отказов системы защиты), и процесс их устранения являются пуассоновскими потоками (соответственно, с интенсивностями λ и μ), можно оценить с использованием простейшей формулы:

Ρ=1-λ/μ

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

Вероятность защищенности системы

Интенсивность отказов

1 в год

2 в год

5 в год

10 в год

Восстановление

1 нед.

0,98

0,96

0.93

0,81

2 нед.

0,96

0,92

0,81

0,62

1 мес.

0.92

0,85

0,62

0,23

2 мес.

0,85

0,69

0,24

3 мес.

0,77

0,54

4 мес.

0,69

0,39

Рассмотрим, например, значение “0,98” (лучшее значение надежности системы защиты в таблице). Оно достигается в том случае, если в среднем обнаруживается одна уязвимость в год при среднем времени ее восстановления разработчиком, составляющим одну неделю. При этом вероятность того, что в любой момент времени система защищена, равна 0,98, т.е. в любой момент времени с вероятностью 0,02 систему защиты можно считать отказавшей. Для современных систем это практически идеальная ситуация. Сегодня во многих современных системных средствах за год находится отнюдь не одна уязвимость, а продолжительность устранения уязвимости разработчиком может составлять несколько месяцев.

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

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

Статистика уязвимостей ОС семейства Windows

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

- получение имени и пароля ОС или БД. В эту группу входят уязвимости позволяющие узнать из файлов и реестра имена и пароли пользователей системы, включая имя и пароль администратора;

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

- крах системы. Уязвимости, приводящие к аварийному завершению работы системы в результате ошибки в ядре. Типичная настройка ОС Windows генерирует файл дампа памяти, в котором могут содержаться имена и пароли пользователей в том или ином виде;

- использование некорректных настроек безопасности реестра. Позволяет беспрепятственно читать и записывать информацию из/в реестр ОС. Поскольку реестр — это системная БД ОС, которой также пользуются и другие приложения, получив к нему полный доступ можно получить полный доступ и к ОС;

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

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

- получение доступа к временным файлам (доступ к общим папкам неразделяемым ОС), Позволяет получить имена и пароли пользователей из временных файлов;

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

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

- перехват информации пользователя. Позволяет получить имена и пароли, вводимые пользователем с клавиатуры или прочитать конфиденциальную информацию так же вводимую пользователем;

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

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

- поиск и подбор пароля. Стандартная функция для пользователя становится уязвимостью при получении доступа к компьютеру злоумышленником. Одним из основных действий, совершаемых с использованием возможности запуска произвольной программы, является поиск и подбор паролей пользователей. В эту группу не включаем запуск программ-тестов безопасности (exploit), которые необходимы для реализации уязвимостей. Эту группу также можно назвать «запуск вспомогательных программ». Ниже рассматриваются уязвимости требующие возможности запуска программ-тестов (exploit) без которых нельзя получить доступ к интерфейсам, недоступным через графический интерфейс и командную строку — например, подключение к именованным каналам, генерация нестандартных сетевых пакетов для служб различных протоколов. Все ручные операции и часть программ-тестов должны быть выполнены локально остальные с использованием сети локально или удаленно. Место запуска в нашей классификации характеризует необходимые или начальные условия для совершения атаки;

- удаление и перезапись. Уязвимости этой группы позволяют удалять следы пребывания в системе злоумышленника, позволяя некорректно стирать и перезаписывать системные журналы событий;

отождествление прав с правами системы (priveledge escalation/elevation, protection bypass, buffer overflow). Ошибки компонентов системного ПО связанные с передачей или расширением прав приводят к выполнению произвольного кода с привилегиями системы или администратора.

Процентное соотношение количества уязвимостей в каждой из определенных групп для ОС Windows

Источник: CNews Analytics, 2005

Динамика изменения процентного соотношения уязвимостей

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

Для получения ответов на поставленные вопросы, выберем в представленной диаграмме уязвимости, связанные с расширением привилегий пользователей посредством получения ими системных прав (эти уязвимости составляют подавляющую часть — 26% всех найденных уязвимостей для платформы Windows), и проведем анализ причин их возникновения.

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

Источник: CNews Analytics, 2005

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

Ключевой причиной является противоречие, в которое вступают архитектурные принципы реализации ОС и сервисы, предоставляемые разработчикам приложений. Например, в ОС Windows системные пользователи имеют практически неограниченные права доступа к ресурсам (аналогичную ситуацию имеем для ОС семейства Unix, применительно к пользователю «Root»). В части архитектурного построения системы — это вполне обоснованное решение. Противоречие же состоит в том, что разработчикам приложений предоставляется возможность запуска приложения под этими учетными записями. Это приводит к тому, что ошибка программирования в приложении может привести к несанкционированному получению системных прав, как следствие, к возможности полного управления компьютером. В частности, эти уязвимости используются атаками «на переполнение буферов приложений», «некорректного олицетворение прав» и др. Любая атака, позволяющая получить управление приложением в этом случае приводит к преодолению системы защиты. Ошибка в приложении, в котором априори не должно присутствовать механизмов защиты, приводит к преодолению защиты ОС. Таким образом, за безопасность ОС в общем случае отвечают не только разработчики ОС, но и разработчики приложений.

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

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

Андрей Щеглов, д.т.н., проф.


Вернуться на главную страницу обзора

Версия для печати

Опубликовано в 2005 г.

Toolbar | КПК-версия | Подписка на новости  | RSS