Dwa ciekawe ataki na Blackhat 2009

2009-01-15 00:00:00 +0000


Na tegorocznej konferencji Blackhat 2009 przedstawione zostaną co najmniej dwa ciekawe ataki - pierwszy na środowisko do bezpiecznego uruchamiania kodu Intel TXT, drugi na anonimową sieć Tor.

Atak na Intel Trusted Execution Technology (TXT) w gruncie rzeczy na dzień dzisiejszy mało kogo dotyczy - TXT jest rozwinięciem koncepcji TCPA/TPM/LaGrande, która polega na dostarczeniu programiście standardowego środowiska pozwalającego na wykonywanie fragmentów kodu w bezpiecznym środowisku, poza zasięgiem rootkitów czy debuggerów grup łamiących zabezpieczenia w programach. Autorzy opisywanego ataku - Joanna Rutkowska i Rafał Wojtczuk - zademonstrują go na przykładzie wzorcowej implementacji tboot przeznaczonej dla środowiska Xen. Jak napisałem powyżej, atak mało praktyczny dzisiaj, bo mało kto używa TPM a w szczególności TXT. Niemniej bardzo ciekawy i stanowiący ostrzeżenie dla producentów tego typu technologii, których potrzebę stosowania - nawiasem mówiąc - coraz częściej dostrzegają nie tylko zwolennicy skutecznych zabezpieczeń antypirackich, ale przede wszystkim producenci systemów serwerowych i środowisk do wirtualizacji.

Kolejny atak, który zostanie przedstawiony przez Xinwen Fu, dotyczy anonimowej sieci Tor. Według dość lakonicznego opisu w programie konferencji pozwala on na wykrycie faktu połączenia dwóch użytkowników sieci Tor stronie mającej kontrolę nad tylko jednym węzłem pośredniczącym w połączeniu. De facto oznaczałoby to dość skuteczny atak na anonimowość tej sieci, w której każde połączenie przechodzi przez co najmniej trzy węzły, z których żaden nie zna całej ścieżki, właśnie w celu wyeliminowania węzłów-podsłuchiwaczy. Atak może być rozwinięciem opublikowanego w ubiegłym roku przez Fu ataku, wykorzystującego błędy w implementacji trybu szyfrowania (AES-CTR), który jednak wymagał uzyskania kontroli nad dwoma węzłami.

Trzecia interesująca prezentacja, która będzie zaprezentowana na Blackhacie to SecureQEMU, czyli wirtualne środowisko do wykonywania kodu w formie zaszyfrowanej. W tym przypadku celem jest ukrycie sposobu działania kodu przed analitykiem posługującym się debuggerem lub deasemblerem. Techniki utrudniające deasemblację - takie jak szyfrowanie kodu wykonywalnego - stosowane są tak dawno, jak łamie się zabezpieczenia programowe - w praktyce jednak sprowadza się to do wskoczenia do programu w momencie, gdy kod jest już rozszyfrowany, co w klasycznym modelu musi prędzej czy później nastąpić. Prawdopodobnie jedynym skutecznym rozwiązaniem jest przeniesienie włąściwej logiki aplikacji na wyższy poziom abstrakcji czyli jego wirtualizacja. Pierwszym rozwiązaniem tego typu jakie widziałem było opublikowane pod koniec lat 90-tych hackme autorstwa Solar Designera. Parę lat później napisałem eksperymentalną bibliotekę obcode, która pozwalała na wykonywanie prostych operacji arytmetycznych w warstwie zwirtualizowanej - analityk śledzący program za pomocą debuggera widział natomiast niekończące się ciągi pozornie jałowych instrukcji.