|
|
Уязвимости современных ОСНесовершенство операционных систем и программного обеспечения — едва ли не главная причина колоссального ущерба, нанесенного мировой экономике компьютерными злоумышленниками. Большинство хакерских атак становится возможными из-за наличия уязвимостей в существующих ОС и ПО. В Сети появляется все больше вредоносного кода, который использует их для проникновения в компьютеры, выполнения запрограммированных действий и дальнейшего своего распространения. Статистика показывает, что количество уязвимостей растет год от года. С одной стороны, это связано с тем, что год от года растет количество ПО, а с другой, с тем, что сейчас уязвимости ищутся намеренно, как хакерами, так и компаниями производителями ПО и ОС. Первые преследуют криминальные цели — использовать «дыру» для получения доступа к чужим информационным ресурсам, вторые — чтобы не испортить свою репутацию и обезопасить информационные ресурсы своих клиентов. Количество обнаруженных уязвимостей Источник: NIST * — за 7 месяцев По данным mi2g, ущерб от различных видов атак достиг в 2004 г. $150 млрд., что примерно в два раза больше, чем в годом ранее. По мнению экспертов, ежегодно хакерами взламывается до 90% сетей предприятий Сегодня уже никого не удивишь тем, что одним из основных элементов безопасности является операционная система компьютера, так как, по большому счету, именно она аккумулирует в себе подавляющую часть используемых механизмов защиты. Поэтому именно эффективность механизмов защиты ОС определяет уровень безопасности корпоративной сети и информационной системы предприятия в целом. Основополагающие посылы защиты информации Текущее состояние защищенности системы может иметь одно из двух состояний: полностью защищена, либо полностью незащищена. Переход системы из одного состояние в другое осуществляется при обнаружении хотя бы одной уязвимости защиты, возвращение в исходное состояние — при устранении известной уязвимости. Другими словами, рассуждения о степени защищенности ОС неуместны — любая обнаруженная в системе уязвимость делает ее полностью незащищенной. Под уязвимостью системы защиты понимается такое ее свойство (недостаток), которое может быть использовано злоумышленником для осуществления несанкционированного доступа (НСД) к информации. При этом любая уязвимость системы защиты несет в себе угрозу осуществления злоумышленником НСД к информации, посредством реализации атаки на уязвимость в системе защиты. Таким образом, уязвимость системы защиты — это признак системы, а наличие (отсутствие) известных уязвимостей (известных, так как уязвимости в любой системе защиты присутствуют всегда) является характеристикой защищенности (текущего состояния защищенности) системы. Как следствие, характеристикой защищенности системы следует считать не только реализованный в ней набор механизмов защиты, который должен быть достаточным для условий применения системы, но и продолжительность устранения известной уязвимости разработчиком системы. Причем каждый механизм защиты должен быть реализован корректно, как с точки зрения идеологической продуманности решения, так и с точки зрения ошибок программирования при реализации. Недостаточность и некорректность реализации механизмов защиты — две основные причины уязвимости системы. Считая, что обнаружение каналов НСД к информации (уязвимостей) — (или в терминологии теории надежности — отказов системы защиты), и процесс их устранения являются пуассоновскими потоками (соответственно, с интенсивностями λ и μ), можно оценить с использованием простейшей формулы:
Уязвимости устраняются по мере их обнаружения, иначе нельзя обеспечить высокую интенсивность исправлений. Надежность системы защиты — вероятность того, что в любой момент времени система защищена (определяется тем условием, что число не устраненных уязвимостей равно 0) Вероятность защищенности системы
Рассмотрим, например, значение “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»). В части архитектурного построения системы — это вполне обоснованное решение. Противоречие же состоит в том, что разработчикам приложений предоставляется возможность запуска приложения под этими учетными записями. Это приводит к тому, что ошибка программирования в приложении может привести к несанкционированному получению системных прав, как следствие, к возможности полного управления компьютером. В частности, эти уязвимости используются атаками «на переполнение буферов приложений», «некорректного олицетворение прав» и др. Любая атака, позволяющая получить управление приложением в этом случае приводит к преодолению системы защиты. Ошибка в приложении, в котором априори не должно присутствовать механизмов защиты, приводит к преодолению защиты ОС. Таким образом, за безопасность ОС в общем случае отвечают не только разработчики ОС, но и разработчики приложений. С учетом всего сказанного, наиболее критичными являются именно уязвимости, основанные на архитектурных недостатках ОС. Дело в том, что устранение подобных уязвимостей весьма проблематично для разработчиков ОС, как следствие, подобные уязвимости «переносятся» ими в последующие версии системы, что делает их уязвимыми, несмотря на расширение функциональных возможностей реализуемых в них механизмов защиты. Одним из способов решения данной проблемы являются средства добавочной защиты, которые усиливают встроенные в ОС механизмы и устраняют многие существующие уязвимости, основанные, в первую очередь, на архитектурных недостатках ОС. Андрей Щеглов, д.т.н., проф. |