Kolejny dzień, kolejna 0-day podatność. Tym razem Internet Explorer

Data publikacji: 21/09/2012, rz

IE

Nie przebrzmiały jeszcze echa po wykryciu poważnego błędu w oprogramowaniu Oracle, a pojawiły się doniesienia o odkryciu luki w kolejnej popularnej aplikacji, mianowicie w przeglądarce Internet Explorer. Podatne są wersje 6,7,8 oraz 9, a zatem wszystkie obecnie używanych wersje. Lista podatnych systemów jest również długa i obejmuje wszystkie obecnie wspierane systemy z rodziny Windows. Zgodnie z informacją Microsoftu podatność nie dotyczy Internet Explorer 10 oraz Windows 8 i Windows 2012, jednak te produkty nie doczekały się jeszcze oficjalnego wydania. Luka jest groźna, gdyż dotyczy znaczącej liczby Internautów. Przykładowo w Polsce szacuje się, że z przeglądarek IE8 i IE9 korzysta około 20% użytkowników sieci – liczby te są jeszcze wyższe w Europie Zachodniej i USA. Wprawdzie Microsoft dotychczas nie opublikował oficjalnej poprawki, lecz jak można przeczytać w tym artykule, prace nad nią trwają i prawdopodobnie wkrótce doczekamy się wydania łaty.


19 września Microsoft opublikował rozwiązanie Fix it, które zapobiega wykorzystaniu luki.
21 września Microsoft opublikował poprawkę usuwającą lukę. Łata dostępna jest przez Windows Update lub można ją pobrać z tej witryny.

CVE-2012-4969

Luka pozwala na wykonanie dowolnego kodu w systemie z uprawnieniami użytkownika przeglądarki przez wykorzystanie błędu typu use-after-free występującego w bibliotece mshtml.dll. Podczas renderowania specjalnie przygotowanej strony, obiekt CMshtmlEd zostaje usunięty, jednak ta sama pamięć (bez uprzedniego wyzerowania) jest wykorzystywana podczas wywołania funkcji CMshtmlEd::Exec(). Sposób wykorzystania luki prezentujemy na poniższym filmie:

Film prezentuje dwie próby wykorzystania podatności do zakłócenia pracy przeglądarki internetowej. Prezentacja skupia się na pokazaniu miejsca i sytuacji w których podatność ta może zostać wywołana (nie skupiamy się tutaj na dalszych krokach, czyli zdalnym wykonaniu kodu jako konsekwencji błędu). Jak widać, za pierwszym razem przeglądarka „tylko” przestaje odpowiadać na parę sekund, a następnie pomyślnie przechodzi w „crash-recovery”. Druga próba kończy się już znanym komunikatem o błędzie. W włączonym programie do debugowania można zauważyć, iż następuje próba wywołania metody obiektu (z vTable). Niestety wskaźnik przechowywany w rejestrze EAX jest równy 0 (NULL), co powoduje wywołanie komunikatu o błędzie. Różnica między pierwszą i drugą próbą wynika najprawdopodobniej z faktu, iż wskaźnik do obiektu pobierany jest z niezaalokowanej pamięci. W przypadku ataku z próbą zdalnego wykonania kodu, pamięć ta zapełniana jest spreparowanymi danymi za pomocą tzw. „heap spray”,

Jak się zabezpieczyć?

19 września Microsoft opublikował rozwiązanie Fix it, które zapobiega wykorzystaniu luki. Należy pamiętać aby przed zastosowaniem upewnić się, że mamy zainstalowane wszystkie dostępne aktualizacje aplikacji Internet Explorer. Więcej informacji na temat zabezpieczenia się przed wykorzystaniem luki znajduje się w artykule Microsoftu.
W przypadku gdy instalacja rozwiązania Fix it nie jest możliwa, można próbować zminimalizować ryzyko infekcji. Przede wszystkim należy nie używać programu Internet Explorer w wersjach starszych niż 10 do czasu ukazania się łaty. Można skorzystać z innych popularnych przeglądarek, np. Mozilla Firefox, Google Chrome czy też Opera. Jednakże pragniemy podkreślić, iż zmiana przeglądarki nie jest rozwiązaniem całkowicie chroniącym nas przez wykorzystaniem opisywanej podatności. Bardzo często zdarza się, ze inne używane przez nas oprogramowanie wykorzystuje komponenty Internet Explorera. Czasami nie mamy możliwości korzystania z innej przeglądarki (np. w wyniku restrykcyjnej polityki firmowej). Dlatego tez zalecamy zastosowanie poniżej opisanych zaleceń.

EMET

Narzędzie EMET (Enhanced Mitigation Experience Toolkit) służy zapobieganiu, a raczej łagodzeniu skutków wykorzystania luk w zabezpieczeniach oprogramowania. Technologie ograniczające ryzyko w zakresie zabezpieczeń nie gwarantują, ze luki nie zostaną wykorzystane. Jednak w znacznym stopniu utrudniają ich wykorzystanie. Odpowiedni pakiet instalacyjny można pobrać z tej witryny. Do jego prawidłowego działania potrzebne jest środowisko .NET co najmniej w wersji 2.0. Oczywiście aby EMET spełnił swoja role wymagana jest konfiguracja. Program dostarcza dość wygodny interfejs graficzny. W górnej części wypisane są poszczególne zabezpieczenia oraz polityki jakie możemy do nich przypisać (domyślnie opt-in). Aby włączyć dodatkowe zabezpieczenia dla danego programu (w naszym wypadku Internet Explorer) wchodzimy w widok konfiguracji aplikacji.

Emet1

Następnie dodajemy nowy program.

EMET

Odnajdujemy Internet Explorer (zazwyczaj: C:Program FilesInternet ExporerIexplore.exe).

EMET

Po dodaniu w widoku konfiguracji aplikacji możemy dostosować jakie zabezpieczenia maja zostać uaktywnione.

EMET

Przy wyjściu z programu możemy zostać poinformowani o ewentualnej potrzebie ponownego uruchomienia aplikacji (w tym przypadku Internet Explorer).

EMET

Więcej o informacji narzędziu EMET oraz o zastosowanych przez nie zabezpieczeniach można uzyskać z instrukcji dostarczonej razem z programem oraz z artykułu.

Blokada skryptów

Dodatkowo możemy włączyć blokowanie skryptów w przeglądarce. W celu należy z menu Narzędzia wybrać pozycję Opcje internetowe.

IE

Następnie uaktywniamy zakładkę Zabezpieczenia. Z listy stref wybieramy Internet i przechodzimy do ustawień Poziomu Niestandardowego.

IE

Na liście wyszukujemy pozycję Obsługa skryptów. Wybieramy ustawienie Monituj dla każdego elementu z grupy.

IE

Alternatywnie możemy zmienić poziom zabezpieczeń dla strefy Internet i Lokalny intranet na Wysoki.

IE IE

Jednakże w dłuższej perspektywie przeglądanie stron przy takich ustawieniach może być uciążliwe.

UPDATE:

21 września Microsoft opublikował poprawkę usuwającą lukę. Radzimy ją niezwłocznie zainstalować. Łata dostępna jest przez Windows Update lub można ją pobrać z tej witryny.