Выпустив две версии операционной системы Windows для архитектуры x64 (иногда её также называют «AMD64»), Microsoft открыла всем желающим путь в мир недорогих 64-разрядных вычислительных систем. В 2005 году на конференции, организованной журналом Virus Bulletin, я представил статью об архитектуре x64, в которой говорилось о том, как с ней взаимодействуют известные на тот момент 32-разрядные вирусы и руткиты.
После презентации мне задали из аудитории несколько интересных вопросов. Вероятно, самый интересный вопрос был задан специалистом из Европейского исследовательского центра компании Symantec. Он касался работы Internet Explorer (IE) в системе Windows x64 и того, как объекты ActiveX и BHO (Browser Helper Objects), до сих пор бывшие исключительно 32-разрядными, работают (или не работают) в среде Windows x64. Это важно прежде всего потому, что многочисленные программы классов spyware и adware попадают на компьютеры пользователей из интернета и устанавливаются на них, используя уязвимости в Internet Explorer, с помощью технологии ActiveX или Java-приложений.
Цель настоящей статьи* — дать ответ на этот вопрос.
- Знакомьтесь: Internet Explorer x64
- Технология ActiveX
- Особенности работы 32-разрядной и 64-разрядной версии Internet Explorer в Windows x64
- 64-разрядные плагины для Internet Explorer
- Атаки вредоносных программ
- Выводы
Знакомьтесь: Internet Explorer x64
Поскольку все системные приложения в Windows x64 — это 64-разрядные PE-файлы, можно предположить, что Internet Explorer также был скомпилирован как 64-разрядное приложение Windows (т.е. native application). Наше предположение оказалось верным: 64-разрядная версия Internet Explorer (версия 6.0.3790) входит в состав новейшего релиза Windows XP для платформы x64. Ее диалог «About» показан на рис. 1:
Как это ни странно, в меню Start доступна не только 64-разрядная, но и 32-разрядная версия Internet Explorer (см. рис. 2). При запуске 32-разрядная версия IE выглядит точно так же, как ее 64-разрядный близнец, однако, чтобы понять, что мы имеем дело с 32-разрядным процессом достаточно посмотреть на «Диспетчер задач».
Выходит, разработчики Windows решили дать пользователям возможность самостоятельно выбрать, какой версией Internet Explorer пользоваться. На первый взгляд такой подход может показаться странным, но в его пользу есть один прекрасный аргумент — совместимость.
В системе Windows x64 64-разрядные приложения могут использовать взаимодействие процессов (IPC) для обращения к 32-разрядному коду, точно так же как в 32-разрядных версиях Windows 32-разрядные приложения используют шлюзование (thunking) для обращения к 16-разрядным библиотекам DLL. Однако обращение 64-разрядных приложений к 32-разрядному коду связано с определенными проблемами, основные из которых — скорость и безопасность.
Впрочем, теоретически 64-разрядная версия Internet Explorer все же могла бы использовать 32-разрядные объекты ActiveX и плагины. Для чего же тогда Microsoft включила 32-разрядную версию Internet Explorer в состав Windows XP x64?
Одной из вероятных причин подобного решения является существенная техническая сложность создания такого механизма: чтобы заставить 32-разрядные объекты ActiveX работать в 64-разрядном Internet Explorer, IE пришлось бы открывать 32-разрядную виртуальную машину, загружать в ней 32-разрядный COM-объект и взаимодействовать с ним. Однако для такой крупной компании, как Microsoft, это, конечно, не могло быть серьезным препятствием, поэтому нам представляется более вероятным другое объяснение.
Проблема заключается в том, что разрешение на использование 32-разрядных объектов ActiveX в 64-bit версии Internet Explorer открывает дверь многочисленным угрозам безопасности, многие годы остающимся бедствием интернета. Оно также потребует создания специального шлюза приложений — 64-разрядной оболочки для объектов ActiveX, уменьшающей дистанцию между 64- и 32-разрядными мирами в Windows x64. Это важно, например, потому, что 64-разрядные и 32-разрядные приложения «видят» разные версии реестра, могут иметь разные настройки и, соответственно, по-разному себя вести.
Вне зависимости от того, верно первое, второе или еще какое-то объяснение, в Windows x64 имеются две версии Internet Explorer. Рассмотрим, каким образом они работают с элементами ActiveX.
Технология ActiveX
ActiveX — это общее название, используемое для обозначения набора технологий, разработанных для обеспечения обмена информацией между приложениями. ActiveX — технология родственная COM и OLE, но чаще всего под ActiveX понимают «элементы управления ActiveX». В данном случае речь идет о технологии, рассчитанной на использование в браузере.
Много лет назад, когда стало возможно использование ActiveX в Internet Explorer, считалась, что эта технология напрямую конкурирует с Java. Однако ни один из имеющихся на рынке браузеров кроме майкрософтовского Internet Explorer ее не поддерживал. Один из главных аргументов против ActiveX состоял в том, что эта технология была предназначена только для архитектуры x86, и использовать ее на других процессорах, таких как PowerPC или Sparc было очень сложно. Из-за этого возможности компаний, писавших многоплатформенные приложения, были ограничены использованием майкрософтовского браузера, причем только на Intel-совместимых персональных компьютерах.
В результате Microsoft попала в ею же расставленную ловушку, поскольку использование Internet Explorer не тождественно наличию среды, поддерживающей ActiveX! Например, Internet Explorer для MacOS (последняя версия: 5.2.3), конечно же, неспособна загружать и исполнять элементы ActiveX. В то время как Java позволяла использовать для выполнения приложений разнообразные операционные системы и варианты аппаратной архитектуры, ActiveX ограничивала возможности выполнения кода компьютерами с 32-разрядными процессорами Intel x86 с операционной системой Windows.
Теперь же, с появлением Windows x64 разработчикам ActiveX придется работать еще с одной платформой — элементами управления ActiveX для 64-разрядной версии Internet Explorer.
Особенности работы 32-разрядной и 64-разрядной версии Internet Explorer в Windows x64
В Windows x64 64-разрядная версия программы находится в папке Program Files, отдельно от 32-разрядной версии программы. Она поддерживает использование плагинов и, что неудивительно, способна загружать и исполнять 64-разрядные элементы управления ActiveX.
Интересно, что в большинстве случаев по умолчанию в Windows x64 используется 32-разрядная версия Internet Explorer. В частности, 32-разрядная версия IE вызывается с панели быстрого запуска, при запуске утилиты обновления Windows в меню Start и ярлыком IE на рабочем столе. При этом если набрать адрес в адресной строке Windows Explorer (являющегося 64-разрядным приложением), то соответствующая веб-страница будет открыта в 64-разрядной версии браузера.
Интересно также поведение утилиты Windows Update под Windows x64. Как упоминалось в предыдущем абзаце, пункт Windows Update в меню Start запускает 32-разрядную версию Internet Explorer, которая загружает все элементы управления загрузкой обновлений, представляющие собой 32-разрядные приложения. А вот если открыть страницу Windows Update в 64-разрядной версии Internet Explorer, будет выведено сообщение, показанное на Рис. 3.
К сожалению, у меня нет под рукой машины с процессором Itanium IA64, чтобы проверить, есть ли у программы обновления Windows разработанный специально для IA64 элемент управления ActiveX или же это 32-разрядная программа, которая запускается в режиме эмуляции. А получить такую информацию, конечно, было бы неплохо.
Еще одна особенность работы 32-разрядной и 64-разрядной версии Internet Explorer под Windows x64 состоит в том, что обе версии используют одни и те же папки Temporary Internet Files (по умолчанию Documents and Settings%Username%Local SettingsTemporary Internet Files), History и Favorites.
Начиная с версии IE 6 SP2, Microsoft стала использовать очень полезную функцию – средство управления дополнительными модулями Internet Explorer (IE Add-ons Manager). Она доступна через меню Tools: Tools -> Manage Add-ons. Средство управления дополнительными модулями можно использовать для отключения или подключения элементов управления ActiveX или расширений браузера (Browser Extensions), но, к сожалению, деинсталлировать их с помощью этой функции невозможно. Средство управления дополнительными модулями упрощает для пользователя получение информации об используемых расширениях Internet Explorer, предоставляя также некоторые возможности управления ими.
64-разрядные плагины для Internet Explorer
Ни одна из двух версий Internet Explorer, имеющихся в Windows x64, не поддерживает Java по умолчанию, поэтому пользователю придется загрузить и установить поддержку Java отдельно для каждой из версий браузера. Для 32-разрядной версии, конечно, можно установить последнюю версию среды исполнения Java от Sun (J2SE Runtime Environment 5.0 Update 5), однако на сайте Sun вы не найдете информации о поддержке Windows для платформы AMD64. В предыдущем обновлении (Update 4), которое можно получить от Sun, есть версия J2SE Runtime Environment 5.0, поддерживающая AMD64, но под Windows XP x64 она, судя по всему, не работает. При установке сообщения об ошибках не выводятся, но в Internet Explorer среда исполнения Java отсутствует в списке загруженных дополнительных модулей, а апплеты Java на веб-страницах не выполняются.
Не существует также и предназначенных для Windows x64 версий Flash Player от Macromedia, Acrobat Reader от Adobe и поддержки просмотра в браузере роликов в формате QuickTime от Apple. Более того, на момент написания этой статьи мне не удалось найти вообще ни одного плагина для 64-разрядной версии Internet Explorer и ни одного 64-разрядного элемента управления ActiveX от сторонних компаний.
Это означает, что (пока что) 64-разрядная версия Internet Explorer не поддерживает апплеты Java, Shockwave и PDF-файлы, что уменьшает практическую ценность этой версии настолько, что для многих пользователей она вообще теряет смысл. Если, конечно не считать, что отсутствие поддержки для этих видов контента — именно то, что им нужно.
Атаки вредоносных программ
Благодаря неспособности 64-разрядной версии Internet Explorer обращаться к 32-разрядному коду для платформы x86, возможности для атак с использованием существующих 32-разрядных вредоносных программ весьма невелики. На практике, ни один из используемых ныне способов доставки вредоносных программ с помощью веб-страниц не действует, если не считать программ, загружаемых и запускаемых непосредственно пользователем.
Это не относится к 32-разрядной версии Internet Explorer под Windows x64, что не удивительно. Я проверил несколько вредоносных программ, загружающихся с разных веб-страниц, в том числе (названия даны по классификации, используемой в Лаборатории Касперского):
- Trojan-Downloader.Win32.IstBar.jm
- Trojan-Downloader.Win32.IstBar.kq
- Trojan-Downloader.Win32.IstBar.ij
- Trojan-Downloader.Win32.Dyfuca.ei и т.д.
Все эти программы загружаются с веб-страниц с помощью тех или иных эксплойтов для Internet Explorer (в Windows XP x64 использована версия IE6 с установленными обновлениями, и в ней эти эксплойты не работают) и элементов ActiveX. Некоторые из них скрывают свое присутствие в системе с помощью руткитов режима ядра для 32-разрядной версии Windows (которые не действуют в Windows x64), а некоторые используют для этой цели руткиты пользовательского режима, которые в Windows XP x64 эффективны по отношению к другим 32-разрядным приложениям, но не действуют по отношению к 64-разрядным приложениям.
Плохая новость состоит в том, что все эти программы не только успешно заражают систему (при том, что все они устанавливаются только после пользовательского подтверждения), но и работают без проблем под WOW64. Они переносят перезагрузку, даже если перед ней отключить Browser Helper Objects в Internet Explorer , причем избавиться от них без полноценного 64-разрядного антивируса непросто.
К сожалению, без 64-разрядного антивируса (выбор которых на сегодняшний день очень ограничен) избавиться от 32-разрядного вредоносного ПО в системе Windows x64 неопытному пользователю будет непросто. Опытный пользователь, конечно, может завершить все 32-разрядные процессы в Диспетчере задач, а затем с помощью обычного 32-разрядного антивируса вылечить или удалить все зараженные файлы, но из-за разделения 32-разрядных процессов в Windows x64 32-разрядному антивирусу будет сложно удалить некоторые из вышеупомянутых вредоносных программ, пока они активны.
Выводы
В составе Windows x64 Microsoft, по-видимому, наконец предложила версию Internet Explorer, достаточно хорошо защищенную от атак современного вредоносного ПО, ориентированного на этот браузер — я, конечно, имею в виду 64-разрядную версию Internet Explorer. Беда в том, что эта защищенность — не следствие новых достижений Microsoft в области безопасности, а результат полного отсутствия в этой версии браузера поддержки Java, 32-разрядных элементов управления ActiveX, контента Shockwave и PDF-документов. Из-за этого многие пользователи просто воспользуются 32-разрядной версией браузера, которая, как мы видели, «поддерживает» вредоносное ПО в той же степени, что и любая другая версия Internet Explorer в 32-разрядной системе Windows XP.
Тем не менее, при наличии своевременно обновляемого 64-разрядного антивируса с активным антивирусным монитором (on-access component) у большинства пользователей не возникнет проблем с 32-разрядным вредоносным ПО. Справиться с ним будет даже проще благодаря хорошему разделению 64-разрядного и 32-разрядного мира в Windows x64. В таком случае пользователи Windows x64 наверняка столкнутся с меньшим количеством проблем с вредоносными программами, чем их коллеги, использующие 32-разрядную версию Windows.
Так, конечно, будет, пока 64-разрядные вредоносные программы не получат широкого распространения.
Использованные ресурсы:
- Costin Raiu, «Enhanced» virus protection, Proceedings of the Virus Bulletin International Conference 2005, сс. 131–138.
- Microsoft: List of limitations in 64-Bit Windows
- Microsoft: Differences between the 32-bit and 64-bit versions of Internet Explorer that are included in the x64-based versions of Windows Server 2003 and in Windows XP Professional x64 Edition
* — эта статья была опубликована в журнале Virus Bulletin в декабре 2005 года.
x64: интернет по высшему разряду?