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

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

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

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

Антивирусные системы

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

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

Известны случаи, когда обновление антивируса не только добавляло описания новых вирусов, но и вызывало отказ антивирусного средства. Например, пользователи, обновившие базы Symantec Norton AntiVirus 19 июня 2003 г., автоматически лишались антивирусной защиты (http://www.securitylab.ru/38565.html). Но это еще не самая плохая ситуация. В марте 2005 г. обновление одного из компонентов почтового антивируса GFI привело к удалению всех обрабатываемых антивирусом почтовых сообщений (http://www.cnews.ru/news/line/index.shtml?2005/03/04/175508).

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

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

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

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

Межсетевые экраны

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

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

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

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

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

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

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

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

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

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

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

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

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

Системы обнаружения/предотвращения атак

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

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

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

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

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

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

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

Учитывая количество ошибок, обнаруживаемых в последнее время в обработчиках прикладных протоколов различных сетевых анализаторов (http://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 (http://www.security.nnov.ru/news2291.html) и ошибкой форматирования строк в ike-scan (http://www.security.nnov.ru/news2903.html).

В апреле 2005 г. была обнаружена уязвимость типа Cross-Application Scripting в сканере WebInspect (http://www.securitylab.ru/56132.html) компании SPIDynamics, позволяющая злоумышленнику выполнять произвольный сценарий в зоне безопасности My Computer при просмотре аудитором результатов сканирования.

***

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