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

Антивирусы

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

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

Очевидным это стало недавно, когда широко распространилось шпионское ПО (spyware). Антивирусные вендоры долго игнорировали подобные программы, что привело к появлению нового класса продуктов - Antispyware. И сегодня после прогулки с неисправленным Internet Explorer по сомнительным серверам пользователь рискует установить на компьютер десяток ненужных ему программ - даже если на машине установлено антивирусное ПО.

Однако и при известной сигнатуре существует масса методов обмана антивирусной программы. Иногда достаточно изменить в вирусе строку с именем разработчика (http://seclists.org/lists/fulldisclosure/ 2005/Jun/0198.html), для чего исходный код вируса не нужен.

Существует немало программ, позволяющих защитить вредоносный код от антивирусных средств. Широко известен продукт Morphine, доступный на сервере автора популярного rootkit для Windows Hacker defender (http://hxdef.czweb.org/). Там же есть раздел, где предлагается защитить произвольный код от обнаружения его различными антивирусными системами.

Иногда для обхода антивирусной защиты достаточно заархивировать файл с отступлениями от стандарта или использовать в его имени специальные символы (http://securityfocus.com/archive/1/402244/ 30/0/threaded). Пользователь сумеет разархивировать и запустить программу на своей машине, но антивирус на почтовом сервере просто не увидит файл внутри архива. Не все производители исправили эту уязвимость за три месяца (срок от предупреждения до публикации).

Иногда в сигнатурные базы попадают вовсе не вирусы. Известен случай, когда антивирус McAfee определял программу настройки подключения к Интернету ISPWizard как вредоносную, что чуть не привело к судебному разбирательству (www.viruslist.com/ru/news?id=145860320). Подобные случаи были и в России. Например, одно время в антивирусных базах Kaspersky Antivirus присутствовал прокси-сервер 3proxy, входивший в официальную поставку ОС FreeBSD (www.security.nnov.ru/articles/antiantivirus2.asp).

Бывает, что обновление антивируса делает его неработоспособным. Так, пользователи, обновившие 19 июня 2003 г. базы Symantec Norton Anti-Virus, лишались антивирусной защиты (www.securitylab.ru/38565.html). А в марте 2005-го обновление почтового антивируса GFI привело к удалению всех обрабатываемых антивирусом почтовых сообщений (www.cnews.ru/news/line/index.shtml?2005/03/04/175508).

Периодически публикуется информация об уязвимостях, способных с помощью антивирусной системы вызвать крах ОС, в которой установлен антивирус. В марте 2005 г. подобная уязвимость, вызывающая "синий экран смерти", была устранена в Symantec Norton AntiVirus (www.securitylab.ru/53581.html).

Не стоит думать, что подобные проблемы характерны только для решений с закрытым исходным кодом. В популярных открытых антивирусах тоже находят различные ошибки. Примером может служить отказ в обслуживании ClamAV при обработке различных архивов (www.securitylab.ru/55549.html).

Ошибки реализации могут позволить злоумышленнику не только "уронить систему", но и выполнить на удаленном сервере произвольный код. В феврале 2005 г. была опубликована информация о переполнении буфера в Norton AntiVirus для Microsoft Exchange 2.1 при обработке UPX-файлов (www.securitylab.ru/52567.html). Воспользовавшись этой уязвимостью, злоумышленник мог отправить письмо, при проверке которого антивирусом на почтовом сервере выполняется произвольная программа. Чуть позже, в марте, подобная уязвимость была обнаружена в продуктах McAfee при обработке архивов LHA (www.securitylab.ru/ 53366.html).

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

Брандмауэры

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

Это особенно хорошо проявляется при реализации такой популярной функции, как фильтрация содержимого прикладного протокола. Если на межсетевом экране администратор запрещает загрузку сценариев VBScript по протоколу http, то далеко не всегда ясно, что же в результате будет запрещено.

В идеале фильтр содержимого должен рассматривать данные с точки зрения прикладной программы, например Internet Explorer. При получении HTML-страницы брандмауэр должен определить, содержится ли в ней VBScript и будет ли он выполнен в браузере пользователя.

Естественно, это невозможно, поскольку Cisco PIX и Internet Explorer создаются разными компаниями. Протоколы прикладного уровня описываются огромным количеством стандартов, которые по-разному реализованы в межсетевом экране и конечной программе. Этот факт порождает ситуации, когда брандмауэр не в состоянии обнаружить содержимое, отмеченное как запрещенное, и пропускает страницу, в которой присутствует контент. В качестве примера можно привести обзор, в котором обсуждается 11 методов обхода фильтров межсетевых экранов компании Checkpoint (www.security.nnov.ru/advisories/bypassing.asp).

Подобные проблемы возникают и у систем анализа электронной почты. Администраторы с помощью таких систем блокируют пересылку файлов с определенными расширениями. Однако, используя различные методы представления одной и той же информации, можно сформировать почтовое сообщение, при анализе которого межсетевой экран будет неверно интерпретировать имя файла или просто не обнаружит вложение (www.security.nnov.ru/advisories/content.asp).

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

Однако несмотря на все ухищрения разработчиков, злоумышленники нашли способы обходить данный защитный механизм (www.firewallleaktester.com). Наиболее эффективным методом является создание троянской программы, которая использует легитимное клиентское приложение (скажем, Internet Explorer) для связи с машиной злоумышленника. Подобный троянец может работать с сервером не напрямую, а через промежуточный сервер, например общедоступный сервер электронной почты, причем код такой программы занимает около сотни строк (www.security.nnov.ru/advisories/content.asp).

Иногда для обхода фильтрации МЭ могут использоваться проблемы в его реализации. Подобная уязвимость была обнаружена в межсетевом экране ipfw из поставки ОС FreeBSD. В результате ошибок в реализации блокировки брандмауэр некорректно обрабатывает некоторые пакеты, что может привести к передаче заблокированного трафика (www.securitylab.ru/55553.html). В конце июня 2005 г. было опубликовано уведомление об ошибке в Cisco IOS, позволяющей злоумышленнику обойти аутентификацию на сервере RADIUS и получить несанкционированный доступ к сети (www.security.nnov.ru/Enews945.html).

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

Уязвимости, приводящие к отказу в обслуживании, периодически исправляются как в программных, так и в программно-аппаратных реализациях брандмауэров. Одна из громких уязвимостей типа DoS в межсетевых экранах Cisco PIX Firewall, связанная с ошибками в библиотеке OpenSSL, которую используют эти экраны, была опубликована в 2004 г. (www.cisco.com/en/US/products/products_security_advisory09186a0080207d5f.shtml).

Уязвимости, приводящие к выполнению кода, встречаются в МЭ довольно редко, однако с ростом интеллектуальности этих средств защиты, появлением все более мощных модулей анализа содержимого количество обнаруживаемых ошибок будет расти.Так, в январе 2004 г. была опубликована информация об уязвимостях, приводящих к выполнению кода в реализациях протокола H.323 многих производителей (www.security.nnov.ru/news3366.html), включая Microsoft Internet Security and Acceleration Server 2000 и Cisco IOS.

Ошибка функций форматирования строк в модуле проверки http-протокола межсетевого экрана CheckPoint была опубликована в начале 2004 г. (www.security.nnov.ru/news3419.html). Уязвимость нашлась в компоненте HTTP Application Intelligence, интеллектуальном анализаторе http-протокола, нацеленном на предотвращение атак на прикладном уровне, что неудивительно. Чем сложнее код - тем больше в нем ошибок.

С персональными брандмауэрами дело обстоит еще хуже. Кроме обычных уязвимостей при обработке трафика, приводящих к отказу в обслуживании (Cisco Security Agent Vulnerable to Crafted IP attack - www.security.nnov.ru/Jdocument180.htm , DoS при разборе MIME в Agnitum Outpost - www.security.nnov.ru/news3687.html), в них обнаруживают довольно много локальных уязвимостей. Основная причина здесь в том, что они подвержены влиянию со стороны пользователя.

Так, в Agnitum Outpost 2.5 существует до сих пор не устраненная уязвимость в функции загрузки файла конфигурации, дающая локальному пользователю возможность выполнить код с привилегиями Local System. Слабые разрешения файловой системы в McAfee Internet Security Suite позволяли злоумышленнику изменять настройку системы или выполнять в ее контексте безопасности произвольный код (www.securitylab.ru/54133.html). Во многих продуктах в свое время были обнаружены уязвимости типа Shatter (www.security.nnov.ru/news2241.html), через которые с помощью управляющих сообщений оконной системы ОС Windows можно запустить программу с правами межсетевого экрана.

Системы IDS и IРS

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

Еще одна проблема - конфликт между сетевыми IDS и шифрованием трафика. Система обнаружения атак не имеет доступа к ключам шифрования и может только констатировать наличие в сети зашифрованного трафика. И если для индустриальных стандартов в области шифрования были разработаны некоторые решения, например анализ трафика SSL в HIPS Server Sensor компании ISS или терминатор SSL WebWasher на межсетевых экранах, то для других сетевых протоколов проблема остается открытой.

Например, для распространения сетевых червей Sasser или MSBlast вполне могли быть использованы механизмы шифрования RPC либо Netbios/SMB из среды Windows. Если бы злоумышленники задействовали этот механизм, большинство сетевых систем обнаружения атак оказались бы бесполезны.

Настройка современной IDS - далеко не тривиальная задача, порой превышающая знания и возможности администратора. Недавно выпущенное средство защиты рабочих станций Proventia Desktop компании ISS объединяет межсетевой экран и IDS/IРS-систему уровня узла. Однако настройки модуля предотвращения атак не позволяют выбрать, какие атаки будут блокироваться, а какие только обнаруживаться. В результате Proventia Desktop блокирует попытку эксплуатации уязвимости в системе DCOM ОС Windows (MS03-026, червь MSBlast), но только протоколирует атаки на службу LSASS (MS04-011, червь Sasser) или атаки типа Land.

Чтобы повысить вероятность обнаружения атаки, разработчики добавляют в IDS все более сложные препроцессоры прикладного уровня. Это приводит к разбуханию кода и, как следствие, - к увеличению ошибок.

Проблемы с анализаторами протоколов встречаются в IDS довольно часто. Уязвимость препроцессора протокола ICQ в продуктах Black ICE, Network Sensor и Server Sensor (www.viruslist.com/ru/viruses/encyclopedia?virusid=24956) компании ISS в свое время вызвала тихую панику, поскольку реализующий атаку код был опубликован чуть ли не раньше, чем вышло обновление, устраняющее уязвимость. Особенно беспокоились владельцы Black ICE из-за того, что в этой системе нет возможности отключать неиспользуемые сигнатуры.

В системе популярной IDS с открытым исходным кодом Snort периодически обнаруживаются уязвимости, приводящие к выполнению произвольного кода (www.security.nnov.ru/news2743.html) или отказу в обслуживании (www.security.nnov.ru/news4318.html). Причем эти уязвимости можно эксплуатировать, даже если система работает в "скрытом" режиме, т. е. у сетевого интерфейса отключена поддержка стека TCP/IP.

Учитывая количество ошибок, обнаруживаемых в последнее время в обработчиках прикладных протоколов различных сетевых анализаторов (www.security.nnov.ru/soft/4082.html), можно ожидать активизации атак на IDS.

Не следует забывать, что современная IDS - это не только модуль обнаружения атак. Как правило, в нее входит модуль централизованного управления и контроля. Например, Site Protector компании ISS представляет собой сложный прикладной комплекс, работающий на основе СУБД Microsoft SQL Server. Соответственно для обхода IDS как детективного средства защиты злоумышленнику достаточно атаковать СУБД и вычистить из базы данных следы атаки.

Усложнение систем порождает и другие проблемы. Модуль Security Fusion системы Site Protector был разработан с целью уменьшения ложных срабатываний и повышения актуальности отображаемой IDS информации об атаках. Одной из функций Fusion является корреляция событий об атаках с уязвимостями, обнаруженными сканером. Если при последнем сканировании Internet Scanner определил, что уязвимость, на которую нацелена зарегистрированная атака, была устранена, то приоритет события автоматически снижается. В обратном случае - если сканер подтвердил наличие проблемы - система определяет атаку как заведомо успешную и повышает приоритет события. Однако в некоторых ситуациях модуль Fusion считает атаку провалившейся, даже если сканер не проверял наличия этой уязвимости в системе, а просто проводил хоть какое-то сканирование (например, в режиме инвентаризации). Поскольку сканер не пытался проверять эту уязвимость в системе, естественно, он и не мог подтвердить ее наличия.

Сканеры уязвимостей

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

Многие сканеры делают вывод о наличии уязвимости по баннеру, который возвращает сетевая служба. Такой косвенный анализ может служить причиной ошибок первого рода, если баннер был изменен. Кроме того, при обновлении кода (допустим, в Linux-продуктах) баннер службы может не изменяться, что приводит к ложным срабатываниям, когда сканер рапортует об уже устраненной уязвимости. Это снижает доверие к результатам сканирования. Более надежные способы выявления дыр (так называемые проверки типа exploit, когда сканер пытается реализовать атаку) обычно помечаются как опасные для сканируемого узла и могут как минимум вызвать перезагрузку.

Любой сканер выявляет уязвимости в ограниченном диапазоне продуктов. Многие компании, решившие заменить Internet Explorer другим браузером, столкнулись с тем, что новый продукт выпадает из корпоративного плана обновления ПО, поскольку используемые сканеры и системы управления обновлениями не поддерживают Mozilla.

Довольно часто сканеры уязвимостей выполняют проверки с высокими привилегиями. Например, Microsoft Baseline Security Analyzer определяет установленные в системе обновления, только если он запущен с правами администратора. При наличии уязвимости в сканере эта особенность может привести к повышению привилегий для злоумышленника.

Уязвимости в сканерах не часто, но встречаются. Опубликованы уязвимости о переполнении буфера в ISS Scanner 6.2.1 (www.security.nnov.ru/news2291.html) и ошибке форматирования строк в ike-scan (www.security.nnov.ru/news2903.html). В апреле 2005 г. была обнаружена уязвимость типа Cross-Application Scripting в сканере WebInspect (www.securitylab.ru/56132.html) компании SPIDynamics, допускающая выполнение произвольных сценариев в зоне безопасности My Computer при просмотре результатов сканирования.

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

Об авторе: Сергей Гордейчик - преподаватель УЦ "Информзащита", MCSE, MCT, CISSP. Связаться с ним можно по адресу: gordey@itsecurity.ru.

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