07 lipca 2010

Nie wierzmy zbytnio w technologie DEP i ASLR!

Całkiem niedawno zapytałem pewnego znanego polskiego eksperta ds. bezpieczeństwa IT o to, w jaki sposób typowy użytkownik systemów operacyjnych z rodziny Windows ma szansę na obronę przed atakami typu Zero Day. W odpowiedzi usłyszałem tylko:
DEP i ASLR
Czy rzeczywiście te dwie technologie są na tyle skuteczne, że w praktyce są w stanie ochronić nas przed niemal wszystkimi rodzajami nowych ataków? Oczywiście nie, zobaczmy więc pokrótce dlaczego DEP i ASLR nie są w stanie powstrzymać zdeterminowanych intruzów.

Najpierw spróbujmy w jak najprostszy i zrozumiały sposób zdefiniować oba pojęcia. Otóż DEP (ang. Data Execution Prevention) jest zabezpieczeniem mającym na celu uniemożliwienie wykonania kodu znajdującego się obszarach pamięci przeznaczonych dla danych. Jeśli więc potencjalnemu intruzowi uda się atak polegający np. na przepełnieniu bufora, to DEP powinien zapobiec możliwości wykorzystania tego faktu do uruchomienia wrogiego kodu. Natomiast technologia rozproszenia danych w pamięci (ang. Adress Space Layout Randomisation) ma za zadanie uniemożliwienie intruzowi zlokalizowania adresu odpowiedniego do wykonania własnego kodu. Wszystko to wydaje się być całkiem skuteczną strategią obronną. Okazuje się jednak, że w praktyce wcale nie jesteśmy tak dobrze chronieni.

Przede wszystkim należy podkreślić, że DEP oraz ASLR nie chronią nas w jakiś magiczny sposób przed błędami w samych aplikacjach, ich zadaniem jest jedynie utrudnienie wykorzystania luki obecnej w danym programie do skutecznego uruchomienia złośliwego kodu. Jednak, żeby w ogóle skorzystać z dobrodziejstw obu technologii, dany program musi w sposób świadomy zostać do tego przystosowany. Tutaj pojawia się pierwszy poważny problem.

W systemach z rodziny Windows aplikacje za pośrednictwem odpowiednich flag decydują o wykorzystaniu (lub braku wykorzystania) obu technologii. Większość aplikacji z firmy Microsoft rzeczywiście poprawnie korzysta z obu rozwiązań, jednak jak się okazuje inni znani producenci często w ogóle nie korzystają z obu technologii! Przykładowo przeglądarki Firefox, Opera i Safari obsługują DEP, ale już nie ASLR. Jedynie Chrome korzysta z obu tych mechanizmów. Tak wygląda tabela prezentująca stan implementacji technologii DEP oraz ASLR w wielu popularnych aplikacjach na czerwiec tego roku:
Jednak brak praktycznego wykorzystywania obu mechanizmów to nie jedyny problem. Okazuje się, że już od jakiegoś czasu znane są skuteczne metody obejście obu technologii zabezpieczających. Wystarczy tylko przecież wspomnieć Petera Vreugdenhila, który w trakcie konkursu Pwn2Own 2010 zdobył Internet Explorera 8 pracującego w systemie Windows 7, właśnie obchodząc po drodze oba zabezpieczenia. Szczegółowe informacje na temat zastosowanych technik zostały następnie przez Petera upublicznione i są dostępne pod tym adresem. Kilka dni temu również badacze z firmy Immunity przedstawili swoją koncepcję ataków zdolnych do ominięcia obu zabezpieczeń, którą ochrzcili mianem JIT-SPRAY Attacks.

Co ciekawe, zdarzają się również luki w oprogramowaniu wykorzystującym mechanizm ASLR, które prowadzą do wycieku informacji przydatnych do... obejście samego ASLR. Otóż znana jest niezałatana do tej pory luka w Internet Explorerze 8, która to może prowadzić do wycieku pamięci zdradzającego krytyczne informacje na temat położenia adresów, które intruz może następnie wykorzystać do przeprowadzenia skutecznego ataku. Luka, obecna jest w kluczowym komponencie mshtml.dll, a jej odkrywca (Ruben Santamarta) opublikował wszystkie dotyczącej jej szczegóły pod tym adresem. Badacz opublikował również kod PoC, dzięki któremu możemy się przekonać o tym, że wyciek informacji z IE8 dotyczący krytycznego adresu rzeczywiście występuje.

Jak mogliśmy się przekonać na podstawie tych kilku powyższych przykładów, technologie DEP oraz ASLR są dalekie od tego, by móc skutecznie ochronić nas przed skutkami wszelkiego rodzaju nowych ataków na luki systematycznie odkrywane we wszystkich najpopularniejszych aplikacjach. Mechanizmy te stanowią co najwyżej element utrudniający nieco życie (a może czyniący je ciekawszym?) autorom nowych exploitów. Pytanie o to, co może nas skutecznie uchronić przed nowymi atakami typu Zero Day, pozostaje więc nadal bez odpowiedzi.