Программное обеспечение

Microsoft Vista против вирусов: кто кого?

Новая разработка Microsoft — Windows Vista — позиционируется как система повышенной безопасности. В настоящий момент дата ее официального выпуска приходится на 30 января 2007 года, а вопросы о том, насколько заявленная защищенность реальна, начали беспокоить компьютерное сообщество задолго до появления доступной для скачивания бета-версии. В чем именно заключаются функции, должные обеспечивать безопасность пользователя и насколько они будут ее обеспечивать в действительности? Правда ли, что с выходом Vista антивирусы станут ненужными? На некоторые волнующие общественность вопросы мы постараемся ответить в этой статье.

Не может не радовать то, что компания-производитель самой распространенной операционной системы для PC всерьез задумалась о безопасности пользователей. Устанавливая Vista, вы можете быть уверены по крайней мере в том, что разработчики данного продукта провели серьезную работу по встраиванию в него защиты от компьютерных угроз — и будут продолжать ее вести. Однако, на наш взгляд, реализованные в настоящий момент функции безопасности Vista не достаточны для того, чтобы можно было безболезненно отказаться от дополнительных средств защиты (на эту тему читайте также статью Натальи Касперской «Безопасность от Microsoft: шаг к обновленному миру?»).

Попробуем проанализировать, что собой представляют главные составляющие системы безопасности в Vista: система разграничения прав пользователей, называемая User Account Control (UAC), система защиты ядра PatchGuard и функции безопасности Internet Explorer 7. Более мелкие защитные функции — Address Space Layer Randomization (ASLR), Network Access Protection, Windows Service Hardening, защита от переполнения буфера — в статье рассмотрены не будут. Не будут рассматриваться и дополнительные компоненты, такие как встроенный файервол и антишпион (Windows Defender): это типовые решения, и вопрос их пользы для безопасности системы — вопрос сравнения с аналогами от других производителей.

User Account Control (UAC)

User Account Control — система контроля за правами пользователей. Она работает по принципу ограничения полномочий:

  1. Любой пользователь (включая «Администратора»), вошедший в систему, имеет минимальные права, соответствующие учетной записи «Стандартный пользователь».
  2. Учетная запись «Стандартный пользователь» несколько повышена в полномочиях по сравнению с таковой в предыдущих версиях Windows.
  3. Если пользователь или запущенное им приложение собирается выполнить действие, не входящее в список полномочий «Стандартной» учетной записи, система запрашивает у пользователя подтверждение этого действия (если пользователь — «Администратор») либо пароль администратора (если пользователь — «Стандартный»).

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

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

Рассуждая так, я не могу принять UAC как серьезную защиту от вредоносных программ. Функция, раздражающая пользователя, с большой вероятностью будет отключена. Либо пользователь нажмет «разрешить» или вобьет пароль администратора — не глядя.

Тем не менее, UAC, безусловно, обеспечивает некоторый дополнительный уровень безопасности для пользователя с правами «Администратора». В частности, если приложение не запрашивает высокий уровень привилегий, то оно будет выполняться с минимальными правами, даже в режиме «Администратора». Уязвимость, обнаруженная в таком приложении, будет менее критична, чем уязвимость в «высокопривилегированном» приложении.

Есть еще один довод в пользу UAC. Существует небольшое количество вирусов, которые засекают появление на экране предупреждения от файервола или иной системы защиты о подозрительном поведении — и «кликают» на соответствующую кнопку в окне, разрешая действие. Окно при этом едва ли успевает появиться на экране. Microsoft предусмотрела защиту от этой угрозы — Secure Desktop: окно, запрашивающее повышение привилегий, воспринимает ввод только от пользователя.

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

Защита ядра Vista

PatchGuard

Ядро Vista — только для 64-битной платформы — обещает быть защищено от модификаций, что актуально в свете тенденции распространения руткитов уровня ядра.

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

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

Вдобавок к тому, что PatchGuard — сомнительная защита от руткитов, модифицирующих ядро, стоит заметить, что существуют и другие типы руткитов, перед которыми такая защита вообще бессильна. Мониторинг PatchGuard распространяется на статичные структуры ядра с заранее известным содержимым (SST, IDT, GDT) — но он не может охранять динамические структуры, равно как и все то, что находится вне уровня ядра. В качестве примера руткита, функционирующего за счет модификации динамических структур, можно привести известный FU. Руткиты, основанные на технологиях виртуализации, располагаются «глубже» уровня ядра — и тем самым недоступны для него.

Принципиальная уязвимость PatchGuard заключается в том, что он функционирует на том же уровне, который призван защищать. Это значит, что если вредоносному приложению удастся загрузить свой драйвер, ему удастся и отключить PG. Разумеется, при условии, что местоположение соответствующей функции мониторинга известно — но obscurity, как уже давно известно, имеет слабое отношение к security.

Замечу, что стремление Microsoft повысить стабильность системы в целом привело к побочным эффектам. Запретив доступ к ядру всем, Microsoft лишила security-вендоров возможности реализовать в своих продуктах часть функционала. В результате на Windows Vista в настоящий момент нельзя использовать в полной мере все эффективные наработки антивирусных компаний в области защиты, причем не только имеющие отношения к борьбе с руткитами — пострадали также, например, и проактивные технологии защиты от неизвестных угроз, уже реализованные в продуктах для предыдущих ОС. Вирусописатели в некотором смысле оказались в более выгодном положении: они не обязаны работать с PatchGuard, а руткиты могут его просто отключить.

Говоря о защите ядра Vista, еще раз подчеркнем, что как PatchGuard, так и проверка подписей драйверов — функции, доступные лишь на 64-битном оборудовании. Должно пройти некоторое время, чтобы его распространенность по сравнению с 32-битным стала преобладающей. В Vista x86 нет специфической защиты от руткитов.

Mandatory Kernel Mode and Driver Signing

Второй компонент системы защиты ядра Windows Vista для 64-битных платформ — требование наличия цифровой подписи у любого модуля или драйвера уровня ядра.

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

  1. подключение системного отладчика;
  2. выбор в меню загрузки режима без контроля драйверов (в том числе, через модификацию boot.ini);
  3. включение в настройках безопасности режима поддержки тестовых подписей. Утилита для создания тестовых подписей предоставляется.

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

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

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

Защитные функции Internet Explorer 7

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

  1. Защищенный режим (Protected mode) — выполнение кода браузера с наименьшим уровнем привилегий, ограничивающим доступ к файловой системе, реестру и т.д.

Несколько примеров слабых мест данной функции, через которые она может быть скомпрометирована:

  • Во-первых, режим защиты может быть включен или выключен пользователем. Он настраивается по отдельности для каждой зоны, и в соответствии с настройками «по умолчанию» не используется для зоны доверенных узлов (Trusted Zone).
  • Во-вторых, Microsoft предоставляет Protected Mode API для создания элементов управления, совместимых с защищенным режимом («The Protected Mode application programming interface (API) enables software vendors to develop extensions and add-ons for Internet Explorer that can interact with the file system and registry while the browser is in Protected Mode»), — это совершенно новая функция, не обкатанная в бою, что делает ее с большой вероятностью весьма уязвимой.
  1. ActiveX Opt-in — функция принудительного запрещения всех элементов управления ActiveX, кроме тех, которые явно разрешены пользователем.

Непонятно, в чем именно ее преимущество: возможность отключения ActiveX существовала в IE всегда, разница лишь в том, что в IE7 она принудительно включена. Между тем, по опыту предыдущих версий IE мы знаем, что пользователь не склонен отключать ActiveX и лишать себя тем самым возможности просматривать флэш-ролики на страницах — либо он обрекает себя на взаимодействие с всплывающими окнами системы защиты при просмотре каждого такого ролика. Можно сделать вывод, что с этой точки зрения usability IE7 сильно пострадала. (А выполнение неизвестных ActiveX как разрешалось, так и будет разрешаться.)

  1. Функция Cross-Domain Scripting Attack Protection призвана запрещать взаимодействие скриптов между разными доменами — и тем самым защищать пользователя от фишинг-атак.

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

Полный список усовершенствований безопасности IE7 не ограничивается перечисленными тремя функциями и включает также фильтр фишинга (Phishing Filter), панель безопасности (Security Status Bar) и другие.

Таким образом, защищенность браузера, входящего в поставку Vista, базируется на том же принципе, что и UAC: на безопасности через ограничения.

В чем недостаток защит типа UAC, PatchGuard, IE Protected mode?

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

Когда некая программа пытается передать информацию в сеть, это угроза безопасности. У файервола есть два варианта реакции:

  1. запретить это действие, исходя из своих политик безопасности (возможно, настроенных самим пользователем);
  2. запросить решение у пользователя.

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

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

Безопасность через ограничения — это безопасность в ущерб usability.

Что будет с вирусами?

В Vista для 64-битных платформ серьерзно «ущемлены» окажутся в первую очередь троянцы, использующие драйвера и модификацию данных ядра — до определенного момента, когда они научатся обходить эти ограничения. Вышеупомянутый класс троянцев относительно невелик и составляет, пожалуй, менее 5% от всей массы Windows-вирусов. Vista для наиболее популярных сейчас 32-битных платформ не имеет функций защиты ядра — и, следовательно, защиты от данного класса троянцев.

User Account Control встроен в Vista, вне зависимости от платформы. «Условно ущемленным» из-за него окажется заметный процент троянцев, совершающих действия, которые требуют привилегий уровня администратора (таких как создание файлов в системной директории, модификация реестра, настройки автозапуска и др.). «Условно» — во-первых, потому, что я не считаю UAC серьезной защитой от вирусов (см. выше), а во-вторых, потому что для вредоносной программы всегда есть возможность навредить в установленных рамках, какими бы узкими они ни были. Например, черви, распространяющиеся в пиринговых сетях, не совершают никаких «нелегальных» действий — они просто создают свои копии в директориях, используемых для файлового обмена. Пример более опасного, при всей своей концептуальной простоте, вируса — нашумевший Virus.Win32.Gpcode, который шифрует документы пользователя и требует «выкуп» за их расшифровку.

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

Подведем итог. Безопасна ли MS Vista?

Так ли безопасна Vista, как утверждают рекламные проспекты? Да, безусловно, Vista безопаснее, чем предыдущие системы от Microsoft. А система, настроенная так, что в ней запрещено все, кроме доступа к определенным сайтам, может даже считаться «абсолютно безопасной».

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

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

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

Философское заключение

Безопасность, в основе которой лежит что-либо, кроме открытости, — это всегда палка о двух концах. У безопасности, в основу которой положены ограничения, всегда есть обратная сторона: эти самые ограничения. Которые могут сделать систему непригодной к использованию.

Что в конечном итоге окажется предпочтительнее: «безопасная в целом» система, не позволяющая пользователю делать то, что он хочет, или же в чем-то уязвимая, но удобная и свободная для действий система в связке с узкоспециализированным сервисом, нацеленным на защиту от конкретного типа угроз?

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

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

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

Когда роль ограничений в системе защиты переоценивается, мы получаем примерно такую картину: хорошим ребятам — пользователям и разработчикам — много постоянной головной боли и окошек-алертов, на которые то и дело надо кликать, плохим ребятам — хакерам и вирусописателям — много «вкусных» головоломок на некоторое время и чуть-чуть головной боли.

Ссылки

  1. Authentium blog, Microsoft Patchguard
  2. Joanna Rutkowska, «Introducing Stealth Malware Taxonomy»
  3. Joanna Rutkowska, «Subverting Vista Kernel for Fun and Profit»
  4. Windows Vista Security Guide

Microsoft Vista против вирусов: кто кого?

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Отчеты

CloudSorcerer: новая APT-угроза, нацеленная на российские государственные организации

«Лаборатория Касперского» обнаружила новую APT-угрозу CloudSorcerer, нацеленную на российские государственные организации и использующую облачные службы в качестве командных серверов аналогично APT CloudWizard.

StripedFly: двуликий и незаметный

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

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике