Идеальных систем не бывает. И что бы в Microsoft ни говорили о курсе на укрепление безопасности своих продуктов, ошибки и критические уязвимости в них будут находить всегда. Установка Service Pack 2 может попортить немало крови даже опытному администратору (См., например, статью Безопасная Windows. А ведь главный "бонус" такой установки - повышение уровня безопасности Windows XP. Так стоит ли овчинка выделки для обычного домашнего пользователя или пока ему вполне можно и подождать?..
Основные угрозы безопасности
Взглянем на двадцатку "самых популярных" вредоносных программ минувшего сентября.
Табличку, на самом деле, можно сильно сократить: по большей части она заполнена разнообразными штаммами червей NetSky, Bagle и Mydoom. Одно место досталось венгерскому червю Zafi и еще два занимают представители семейства троянских программ. Все до единого участники "горячей двадцатки" используют только доверчивость и неопытность пользователя: черви распространяются по электронной почте и через P2P-сети в виде исполняемых файлов, а троянцев пользователи вообще подкидывают друг другу сами. А значит, Service Pack 2 на эту ситуацию принципиально не повлияет: "дырки" в головах компьютеровладельцев он, увы, закрыть не в состоянии. Так, может, его и устанавливать не надо?
Проведем простейший эксперимент: подключим ПК со свежеустановленной Windows XP Professional SP1 к Интернету через одного из крупнейших московских провайдеров - "МТУ-Интел" (который вроде бы даже фильтрует в своей сети наиболее известные и опасные вирусы - и уж точно должен был бы фильтровать MSBlast), откроем в IE сайт "Компьютерры" и засечем время. Спустя примерно восемнадцать минут (и скажите еще спасибо, что вам эти 18 минут дали. В студенческих сетях общежитий того же МГУ "время жизни" незащищенной машины составляет не более 3–5 минут компьютер, как и ожидалось, подцепил вирус W32.Blaster.Worm. Так что бросаться из крайности в крайность не стоит: хотя бы наиболее критичные заплатки (в данном случае - KB823980) поставить все-таки необходимо. К тому же MSBlast - всего лишь самый известный червь, проникающий на компьютер без каких-либо действий со стороны пользователя, но есть и гораздо более опасные "незаметные" черви, от которых антивирусы защищают плохо.
Так, много шуму наделала обнаруженная в конце лета уязвимость MS04-28 в стандартной библиотеке GDI+ Windows XP(См. www.microsoft.com/technet/security/bulletin/MS04-028.mspx). Функции этой библиотеки, используемые для просмотра JPEG-файлов, содержат ошибку типа "переполнение буфера" и позволяют при просмотре специально сформированной картинки запустить на компьютере жертвы произвольный код. Библиотеку, включенную во все разновидности Windows XP, используют не только Internet Explorer и Outlook, но и едва ли не каждая вторая программа, которой приходится просматривать картинки этого формата. О масштабах угрозы красноречиво говорят пять (!) выпущенных патчей и список "affected software" на два экрана. А самое печальное, что, даже установив эти патчи, в полной безопасности вы себя все равно не почувствуете, ибо добрые программисты, дабы не терять совместимости своих продуктов с версиями Windows, отличными от XP, и использовать в полной мере преимущества нового графического интерфейса, запросто могли включить в дистрибутивы уязвимую копию GDI+.
К счастью, летом и в начале осени вирусы вели себя на удивление тихо, так что ожидаемая аналитиками эпидемия почтового вируса, использующего эту уязвимость, не состоялась. Пока. Но "потенциал" у JPEG-эксплойта потрясающий, и сомневаться в том, что рано или поздно появится целое семейство соответствующих вирусов, не приходится (в интернете на "клубничных" сайтах уже обнаружились первые "ласточки". Остается лишь порадоваться тому, что хотя информация о MS04-28 появилась только 14 сентября (SP2 вышел двумя неделями раньше), основные заплатки от этой мерзости второй сервис-пак все же содержит (впрочем, это тема для отдельного обсуждения (см., например, материал Мы впишем новую страницу!).
Data Execution Prevention - защита от еще не существующих эксплойтов
Впрочем, "недолго музыка играла". Да, из десятка опубликованных с момента выхода SP2 новых уязвимостей большая часть в Windows XP SP2 не работает. Да, на сегодняшний день не существует ни одного хотя бы концептуального эксплойта, на практике доказывающего возможность поражения Windows XP с установленным SP2. Но (возвращаясь к началу статьи) первые соответствующие уязвимости уже найдены и описаны. Например, выпущенный недавно кумулятивный апдейт MS04-038 к Internet Explorer(См. www.microsoft.com/technet/security/Bulletin/MS04-038.mspx) затрагивает и Windows XP SP2 - правда, пока лишь в ранге Important, а не Critical.
Итак, что же получается? SP2 не дает ничего принципиального нового по сравнению с заплаткой KB833987 и подобных ей? Не совсем: счастливые обладатели процессоров AMD Athlon 64/Sempron (Socket 754) и последних степпингов Pentium 4 Prescott/Celeron D, наконец-то получат работающую аппаратную "противовирусную поддержку" в виде специального бита NX в таблицах трансляции виртуальной памяти. Если не вдаваться в подробности (за которыми я отсылаю к статье, упомянутой в предыдущей сноске), благодаря этому биту операционная система может запретить выполнение кода из определенных областей памяти. В случае с SP2 Microsoft попросту запрещает выполнять код из любых областей, для которых явным образом не сказано, что они предназначены именно для кода. И одновременно по умолчанию запрещает запись в страницы, объявленные для хранения кода. Так что какую бы уязвимость в обработке сетевых запросов ни содержала программа, запустить вредоносный код на машине жертвы невозможно: записать вирус в участки памяти, уже занятые программным кодом, нельзя - они защищены от записи. А записывать вирус в любое другое место - в стек или область данных (что и используется во всевозможных уязвимостях с переполнением буфера) - смысла нет, поскольку запустить его оттуда на компьютере с аппаратной поддержкой NX не удастся. Все эти хитрости корпорация называет технологией DEP (Data Execution Prevention).
Честно говоря, вооружившись собственноручно написанной крошечной программкой, проверяющей функционирование DEP, я был несколько обескуражен тем, что на свежеустановленной Windows XP Professional (кстати, кто-нибудь из читателей может объяснить, почему после установки SP2 надпись "Professional" с загрузочного экрана исчезает?) имитация атаки переполнением буфера прошла более чем успешно. Оказалось, что по умолчанию технология Data Execution Prevention в новом сервис-паке включена только для загадочных "наиболее критичных системных приложений". Видимо, Microsoft решила, что вылет приложений по срабатыванию DEP (например, из бенчмарков по DEP "вылетает" Vulpine GLmark) может переполнить чашу терпения пользователей. Однако и выключить DEP совсем, если компьютер ее аппаратно поддерживает, не так-то просто: правка ключей загрузки в файле boot.ini - процедура, конечно, простая, но уж больно "в стиле Unix", а значит, далеко не каждый пользователь туда полезет (не могу удержаться и от подколки в адрес "интуитивно понятного интерфейса" Windows: в лучших традициях Microsoft настройки DEP находятся... в пункте Perfomance Options ("Параметры быстродействия"), доступном со вкладки Advanced ("Дополнительно") диалога System ("Система") из "Панели управления". Впрочем, до верха идиотизма - процесса настройки системы на прием входящих звонков (для установления прямого, так сказать, "нуль-провайдерского" модемного соединения) - эта особенность не дотягивает. Если кто не знает - делается подобная операция только из меню "Дополнительно" штатного "Проводника", причем появляется этот пункт меню только при заходе в папку "Сетевые подключения". Даже с инструкцией на руках я нашел его лишь с третьей попытки - просто не мог представить, что в абсолютно неизменном и никогда не используемом меню Explorer вдруг добавится еще один жизненно необходимый пункт).
Поскольку с эксплойтами к Windows XP SP2 пока не густо, мы испытывали защиту NX "в полевых условиях" на обычных файловых вирусах. Некоторые зловредные программы, в частности Virus.Win32.Jess.a, DEP тоже "хватает за руку" при попытке, например, внедрения своего кода в адресное пространство Internet Explorer. Так что если на вашем компьютере DEP забила тревогу для первого файла... второго... третьего... - есть серьезный повод обеспокоиться. Жаль только, что срабатывание аппаратной защиты по NX равносильно аппаратному прерыванию SEGFAULT, гарантированно убивающему породивший его процесс со стандартно-извиняющимся сообщением Microsoft .
К сожалению, такова особенность защиты, и изменить здесь что-либо невозможно. И поскольку терпеть подобного рода фатальные ошибки можно далеко не всегда, предусмотрена возможность выборочного отключения DEP для конкретных приложений и процессов. Конечно, порой это не слишком удобно, однако безопасность дороже. И хотя я так и не решился поставить SP2 на домашнюю систему (нет ни малейшего желания возиться и перенастраивать или переустанавливать массу привычных и часто использующихся профессиональных программ, в число которых, например, входят два IDE, довольно тесно интегрирующихся с ОС и ревниво относящихся к подобного рода изменениям), но будь у меня компьютер, в котором можно включить аппаратный DEP, я бы поступил иначе. Microsoft, правда, заявляет и некие программные элементы DEP, но ни я, ни специалисты "Лаборатории Касперского" так и не смогли выяснить, в чем это проявляется: эксплойты на подобной системе прекрасно работают (да и удивительно было бы, если б было иначе, - бит NX трудно чем-то заменить). Если захотите проверить, какая у вас поддержка DEP - аппаратная или программная, то после установки SP2 откройте "Свойства системы" - в нижнем правом углу должно быть написано о поддержке режима Physical Address Extension (PAE), поскольку NX является частью AMD64, а для функционирования последней необходимо включить именно этот режим.
Закрытие всех известных дыр и уязвимостей в сочетании с DEP оставляет приятное ощущение надежности. Все работает, проблем почти нет, и даже если неожиданно вылезет очередной JPEG-эксплойт или вирус проникнет со старой версией библиотеки, DEP почти наверняка остановит распространение вредоносных программ. Конечно, аппаратная защита от переполнения буфера - не панацея (есть немало способов обойти и ее, причем даже без участия пользователя), но от самых распространенных и опасных атак она все же защищает. Но что делать, если зараза все-таки пробралась в компьютер?