Stan zagrożeń w internecie znajduje się obecnie na poziomie standardowym. Nie występują duże epidemie a eksperci z Kaspersky Lab nie zanotowali żadnych poważnych incydentów związanych z bezpieczeństwem. Poziom zagrożenia: 1

Eksplorując 64-bitowe wyżyny Internetu

Tagi:

Costin Raiu
Head of Research & Development, Kaspersky Lab Romania

Po opublikowaniu dwóch głównych wersji systemu Windows dla architektury x64 (znanej również jako "AMD64") Microsoft umożliwił niemal wszystkim dostęp do 64-bitowych komputerów po niskich cenach. Na konferencji Virus Bulletin w 2005 roku przedstawiłem referat na temat architektury x64, w którym szczegółowo opisałem współdziałanie znanych wirusów i rootkitów dla systemów 32-bitowych z tą architekturą.

Pod koniec prezentacji otrzymałem wiele pytań od widowni. Najciekawsze zadał naukowiec z European AntiVirus Research Centre firmy Symantec. Pytanie dotyczyło Internet Explorera w systemie Windows x64 oraz sposobu, w jaki obiekty ActiveX i BHO (Browser Helper Objects) - do tej pory wyłącznie 32-bitowe - działają w środowisku Windows x64. Jest to istotne ze względu na istnienie ogromnej ilości programów spyware i adware, które instalują się z Internetu poprzez luki w zabezpieczeniach IE z wykorzystaniem technologii ActiveX oraz aplikacji Java.

Artykuł ten stanowi odpowiedź na powyższe pytanie.

Poznaj Internet Explorer x64

Ponieważ wszystkie aplikacje systemowe Windows x64 to 64-bitowe pliki typu PE, należałoby się spodziewać, że Internet Explorer został skompilowany jako 64-bitowa aplikacja macierzysta. Tak też jest w rzeczywistości; 64-bitowy Internet Explorer (wersja 6.0.3790) został wbudowany w najnowsze wydanie systemu Windows XP dla platformy 64-bitowej. Rysunek 1 pokazuje okno dialogowe "About".


Rys. 1: 64-bitowe wydanie Internet Explorera

Jednak wraz z 64-bitowym Internet Explorerem z menu Start dostępna jest również jego 32-bitowa wersja (zobacz Rys. 2). Po uruchomieniu, 32-bitowy Internet Explorer wygląda identycznie jak jego bliźniacza wersja. Wystarczy jednak sprawdzić w Menedżerze Zadań, aby przekonać się, że jest to rzeczywiście proces 32-bitowy.


Rys. 2: Z menu Start dostępna jest 32-bitowa edycja tego samego produktu

Wygląda więc na to, że twórcy systemu Windows postanowili zaoferować użytkownikom możliwość wyboru użytkowanej wersji. Jakkolwiek dziwnie to brzmi, mieli ku temu bardzo ważny powód: kompatybilność.

W systemie Windows x64 64-bitowe aplikacje mogą skorzystać z IPC w celu wywołania starszego 32-bitowego kodu, podobnie jak 32-bitowe aplikacje mogą wywołać 16-bitowe biblioteki DLL w systemie Win32 poprzez użycie techniki thunking. Oznacza to, że przynajmniej w teorii, każda 64-bitowa aplikacja może zostać "zmuszona" do wykorzystania 32-bitowej biblioteki DLL. Jednak wywołanie 32-bitowego kodu z 64-bitowej aplikacji wiąże się z pewnymi problemami dotyczącymi głównie szybkości i bezpieczeństwa.

Mimo tych problemów, przynajmniej teoretycznie, 64-bitowy Internet Explorer może wykorzystywać 32-bitowe wtyczki i obiekty ActiveX. Dlaczego w takim razie Microsoft postanowił dostarczyć 32-bitową wersję Internet Explorera wraz z systemem Windows XP x64?

Jedno proste wytłumaczenie jest takie, że aby sprawić, żeby 32-bitowe obiekty ActiveX działały z 64-bitowego Internet Explorera, Internet Explorer musiałby otworzyć 32-bitową maszynę wirtualną, załadować tam 32-bitowy obiekt COM i komunikować się z nim. Wymagałoby to dużych nakładów technicznych, jednak dla tak dużej firmy jak Microsoft nie byłoby to poważnym problemem.

Ponadto, włączenie 32-bitowych obiektów ActiveX w 64-bitowym Internet Explorerze otwiera drzwi dla różnych zagrożeń bezpieczeństwa, które od lat stanowią plagę Internetu. Wymaga to również kodowania specjalnej bramy aplikacji: 64-bitowa osłona dla obiektów ActiveX, która zmniejsza podział, jaki istnieje między 64- a i 32-bitowym światem w systemie Windows x64. Jest to istotne, ponieważ 64- i 32-bitowe aplikacje "widzą" na przykład różne wersje rejestru i mogą mieć różne typy ustawień konfiguracji, a w rezultacie różnie się zachowywać.

Niezależnie od tego, które wytłumaczenie jest prawdziwe, Windows x64 zawiera dwie wersje Internet Explorera. Przyjrzyjmy się, jak obsługują one formanty ActiveX.

Technologia ActiveX

ActiveX to ogólna nazwa zbioru technologii, które zostały rozwinięte w celu wymiany informacji pomiędzy aplikacjami. ActiveX wywodzi się z technologii COM i OLE. jednak wykorzystywana jest głównie do oznaczenia "formantów ActiveX". W tym przypadku jest to technologia, która może być wywoływana z przeglądarki.

Wiele lat temu, gdy technologia ActiveX została udostępniona w Internet Explorerze, została uznana za bezpośrednią konkurencję dla Javy. Jednak Internet Explorer Microsoftu był jedyną przeglądarką na rynku, która ją obsługiwała. Jednym z głównych argumentów przeciwko technologii ActiveX było to, że opierała się na kodzie wykonywalnym x86, co bardzo utrudniało jej działanie na innych procesorach, takich jak PowerPC czy Sparc. W rezultacie, firmy tworzące wieloplatformowe aplikacje byłyby zmuszone ograniczyć się do przeglądarki Microsoftu oraz komputerów PC kompatybilnych z procesorem Intel.

W rzeczywistości Microsoft wyrządził sobie niedźwiedzią przysługę, ponieważ jeśli ktoś wykorzystuje Internet Explorer, nie oznacza to automatycznie, że posiada środowisko obsługujące technologię ActiveX! Na przykład MacOS Internet Explorer (najnowsza wersja: 5.2.3) nie jest zdolny do załadowania i uruchomienia formantów ActiveX. Podczas gdy technologia Java umożliwiała uruchomienie aplikacji na wielu różnych systemach i architekturach sprzętowych, ActiveX pozwala na uruchomienie kodu tylko na 32-bitowych procesorach Intel x86 pod kontrolą systemu Windows. Wraz z pojawieniem się Windows x64 twórcy technologii ActiveX musieli zacząć się martwić o kolejną platformę: formanty ActiveX 64-bitowego Internet Explorera.

Właściwości 32- i 64-bitowego Internet Explorera w systemie Windows x64

64-bitowy Internet Explorer z Windows x64 umieszczony jest w folderze "Program Files", oddzielonym od wersji 32-bitowej. Obsługuje wtyczki i - jak należałoby się spodziewać - potrafi załadować i uruchomić 64-bitowe formanty ActiveX. Interesujące jest to, że w większości wypadków Windows x64 domyślnie uruchamia 32-bitowego Internet Explorera. 32-bitowy Internet Explorer wywoływany jest kliknięciem skrótu IE na pasku narzędzi, pozycji "Windows Update" w menu Start oraz skrótu IE na pulpicie. Gdy jednak z Eksploratora Windows żądany jest adres URL, który stanowi aplikację 64-bitową, wykorzystywany jest 64-bitowy Internet Explorer.

Interesujące jest również zachowanie "Windows Update" pod kontrolą systemu Windows x64. Jak już wspomnieliśmy, pozycja menu Start dla "Windows Update" uruchamia 32-bitowego Internet Explorera, który ładuje wszystkie moduły aktualizacji będące aplikacjami 32-bitowymi. Jeśli jednak otworzymy stronę Windows Update w 64-bitowym Internet Explorerze, otrzymamy następującą wiadomość (Rys. 3):


Rys. 3. Otwarcie Windows Update w 64-bitowym Internet Explorerze

Niestety nie mam pod ręką maszyny Itanium IA64, aby sprawdzić, czy Windows Update posiada macierzysty formant ActiveX IA64, czy raczej aktualizacja jest uruchamiana jako emulowany kod 32-bitowy, zdecydowanie warto jednak podjąć taką próbę.

Warto jeszcze wspomnieć, że 32-bitowa i 64-bitowa wersja IE z systemu Windows x64 posiadają kilka wspólnych ustawień: wykorzystują na przykład ten sam folder "Temporary Internet Files" (który domyślnie znajduje się w "Documents and Settings\%Nazwa_użytkownika%\Local Settings\Temporary Internet Files"), ten sam folder "Historia" i "Ulubione".

W wersji IE 6 SP2 Microsoft wprowadził bardzo użyteczną funkcję zarządzania dodatkami Internet Explorera. Można ją znaleźć w menu Narzędzia: "Tools->Manage Add-ons". Menedżer dodatków można wykorzystywać do wyłączania lub ponownego włączania formantów ActiveX lub rozszerzeń przeglądarki. Niestety nie można go użyć do ich odinstalowania. Tym samym użytkownik posiada pełniejszy obraz rozszerzeń wykorzystywanych w danym momencie przez Internet Explorera i może je w pewnym stopniu kontrolować.

Wtyczki dla 64-bitowego IE

Żadna z wersji IE z systemu Windows x64 nie obsługuje domyślnie Javy, tak więc trzeba oddzielnie pobrać i zainstalować obsługę Javy. Oczywiście najnowsza publikacja firmy Sun zawiera 32-bitowe JRE (J2SE Runtime Environment 5.0 Update 5), jednak na stronie internetowej firmy Sun nie ma nic na temat obsługi platformy AMD64 dla Windows. Wprawdzie w wersji Update 4, którą można otrzymać od firmy Sun, zawarta jest wersja J2SE Runtime Environment 5.0 dla AMD64, jednak wydaje się ona nie działać. Pakiet instaluje się bez żadnych błędów, lecz IE nie wyświetla go na liście rozszerzeń a aplety Javy nie działają na stronach WWW.

Dodatkowo, Macromedia nie oferuje odtwarzacza animacji Flash dla Windows x64, nie ma programu Acrobat Reader x64 firmy Adobe i nie jest dostępna bezpośrednia obsługa formatu QuickTime w przeglądarce. W rzeczywistości, podczas pisania tego artykułu nie udało mi się znaleźć żadnej 64-bitowej wtyczki dla IE ani żadnego 64-bitowego formantu ActiveX stworzonego przez firmę inną niż Microsoft.

Oznacza to, że 64-bitowy Internet Explorer nie obsługuje (jeszcze) apletów Javy oraz plików Shockwave i PDF, co w praktyce ogranicza jego funkcjonalność tak bardzo, że dla wielu użytkowników stosowanie go będzie całkowicie bezcelowe.

Ataki złośliwych programów

Ze względu na to, że 64-bitowy IE nie potrafi wywołać 32-bitowego kodu x86, ataki 32-bitowych złośliwych programów występują na bardzo ograniczoną skalę. W praktyce nie działa żadna z obecnych metod wykorzystywanych do rozprzestrzeniania złośliwych programów za pośrednictwem stron internetowych, może z wyjątkiem ich bezpośredniego pobrania i wykonania przez użytkownika.

Niestety nie można powiedzieć tego samego o 32-bitowym Internet Explorerze z Windows x64. Przetestowałem szereg złośliwych programów, które instalują się z różnych stron WWW. Poniżej przedstawiam kilka z nich:

Wszystkie z nich przedostają się na komputery użytkowników ze stron WWW, wykorzystując różne exploity na luki w IE (w IE6 dla Windows XP x64 luki te zostały już załatane, tak więc exploity te nie działają) oraz formanty ActiveX. W celu ukrycia swojej obecności niektóre z nich wykorzystują rootkity w trybie jądra Win32 (nie działają w systemie Windows x64), inne wykorzystują rootkity w trybie użytkownika, które są skuteczne w stosunku do innych aplikacji w systemie Windows XP x64, ale nie w stosunku do aplikacji 64-bitowych.

Złe wieści są takie, że nie tylko skutecznie infekują one system (chociaż wszystkie z nich wymagają do instalacji potwierdzenia użytkownika), ale również działają pod kontrolą WOW64. Przetrwają ponowne uruchomienie systemu, nawet jeśli obiekty BHO są wyłączone w IE przed restartem. Niełatwo je usunąć bez użycia 64-bitowego skanera antywirusowego.

W rzeczywistości, bez 64-bitowego skanera antywirusowego (niestety oferty w tym zakresie wciąż są bardzo ograniczone) pozbycie się 32-bitowego złośliwego programu z systemu Windows x64 nie jest zadaniem łatwym dla niedoświadczonego użytkownika. Oczywiście niedoświadczony użytkownik zawsze mógłby unicestwić wszystkie 32-bitowe procesy w Menedżerze zadań, a następnie użyć zwykłego 32-bitowego skanera antywirusowego, aby wyleczyć lub usunąć wszystkie zainfekowane pliki. Jednak podział między 32- i 64-bitowymi procesami w systemie Windows x64 utrudnia 32-bitowemu skanerowi antywirusowemu usunięcie niektórych z wyżej wymienionych złośliwych programów, w czasie gdy są aktywne.

Wnioski

Wydaje się, że wraz z systemem Windows x64 Microsoft w końcu dostarczył wersję Internet Explorera, która jest zabezpieczona przed większością dzisiejszych ataków złośliwych programów wykorzystujących Internet Explorer; mowa jest oczywiście o 64-bitowym IE. Niestety nie wynika to z przełomu w zabezpieczeniu dokonanego przez firmę Microsoft, ale jest skutkiem ubocznym braku obsługi Javy, 32-bitowych formantów ActiveX, zawartości Shockwave oraz PDF. Właśnie z tego powodu większość użytkowników będzie używało 32-bitowego Internet Explorera, który - jak mogliśmy się przekonać - tak samo sprzyja atakom złośliwych programów jak każda inna wersja działająca pod kontrolą 32-bitowego systemu Windows XP. Jednak, przy użyciu aktualnego 64-bitowego skanera antywirusowego użytkownicy nie powinni mieć problemów z usuwaniem 32-bitowych szkodników. W rzeczywistości, dzięki dobrej separacji między światem 32- a 64-bitowym, usuwanie tych zagrożeń powinno być nawet łatwiejsze. Użytkownicy Windows x64 będą mieli mniejsze problemy ze szkodliwym oprogramowaniem, oczywiście do czasu, gdy 64-bitowe szkodniki staną się popularne.

Bibliografia

Artykuł został po raz pierwszy opublikowany w Virus Bulletin, w grudniu 2005 r.

  1. Costin Raiu, "Enhanced virus protection", Virus Bulletin International Conference 2005.
  2. Microsoft: Lista ograniczeń w 64-bitowych systemach Windows
  3. Microsoft: Różnice między 32- a 64-bitowymi wersjami przeglądarek Internet Explorer zawartych w systemach Windows Server 2003 (wersja dla x64) oraz Windows XP Professional x64 Edition