Atak na bazy Oracle pozwala wykraść hash hasła użytkownika

dodał 20 września 2012 o 22:59 w kategorii Krypto, Włamania, Wpadki  z tagami:
Atak na bazy Oracle pozwala wykraść hash hasła użytkownika

Producenci baz danych nie mają w tym roku szczęścia. Najpierw okazało się, że do bazy MySQL można pewnych warunkach zalogować się z dowolnym hasłem, a teraz odkryto sposób na wydobycie hasha  hasła z bazy Oracla. Brakuje tylko 0day’a na MSSQL.

Uczestnicy konferencji Ekoparty, odbywającej się właśnie w Buenos Aires, nie mogą narzekać na brak ciekawych wykładów. Oprócz nowego ataku na SSL mogli dzisiaj dowiedzieć się, jak wydobyć hash hasła użytkownika z bazy Oracla. Swoje odkrycie przedstawił Esteban Martinez Fayo, badacz z firmy AppSec Inc. W prezentacji pt. „Cryptographic Flaws in Oracle Database Authentication Protocol” pokazano, jak niezalogowany użytkownik może, wykorzystując błędy w procesie uwierzytelnienia, uzyskać dostęp do hashu hasła. Co więcej, atak nie pozostawia śladów w logach bazy.

Przypadkowe odkrycie

Esteban, który od wielu lat zajmuje się bezpieczeństwem baz danych, odkrył błąd analizując zachowanie różnych wersji baz danych w przypadku nieudanego logowania użytkownika. Zauważył, że nie wszystkie próby nieudanego logowania znajdowały odzwierciedlenie w logach bazy. Badając dalej ten problem, odkrył, że klucz sesji w pewnych szczególnych przypadkach pozwala na ujawnienie hashu hasła.

Przebieg ataku

Klucz sesji wysyłany jest wraz z wartością soli przez serwer w początkowej fazie procesu uwierzytelnienia, przez co do przeprowadzenia ataku nie jest wymagana znajomość hasła użytkownika – wystarczy wiedza na temat nazwy jego konta. Atakujący może zamknąć sesję zaraz po otrzymaniu klucza, dzięki czemu nieudana próba logowania nie jest rejestrowana w logach. Kluczowym elementem ataku jest możliwość powiązania klucza sesji z konkretnym hashem hasła. Szczegóły tego elementu nie zostały na razie opublikowane.

Gdy atakujący pozna już hash hasła, może przystąpić do ataku z prędkością wielu milionów prób na sekundę, niemożliwą do zrealizowania w innych warunkach. Atak może być wspomagany użyciem procesorów kart graficznych czy zaawansowanymi słownikami. Ze względu na zastosowanie soli niemożliwe jest użycie tablic tęczowych. Poziom złożoności obliczeniowej ataku na hash hasła nie jest raczej zbyt duży, ponieważ odkrywca błędu twierdzi, że hasło składające się z 8 małych liter był w stanie złamać w ciągu 5 godzin na domowym komputerze.

Gdzie aktualizacja?

Błąd, odkryty przez Estebana, został zgłoszony w maju 2010 (tak, ponad 2 lata temu!). Oracle poprawił go, wydając w połowie 2011 łatę w ramach zestawu opublikowanego pod numerem wersji 11.2.0.3 (poza standardowym cyklem Critical Patch Update), zmieniając znacząco cały protokół uwierzytelnienia. Niestety, postanowił także nie wydawać poprawek dla wersji 11.1, zatem wszystkie bazy, których administratorzy nie zdecydowali się zainstalować nowej wersji protokołu, są ciągle podatne na atak.

Z kolei administratorzy, którzy zaktualizują protokół uwierzytelnienia do wersji 11.2.0.3, odetną od możliwości korzystania z bazy wszystkich użytkowników klientów w starszej wersji – nowy protokół nie jest kompatybilny ze stara wersją.

Innym możliwym rozwiązaniem jest przejście na starszą, bezpieczną wersję protokołu uwierzytelnienia – 10g. Aby to zrobić, należy ustawić parametr SEC_CASE_SENSITIVE_LOGON na FALSE oraz usunąć hashe wersji 11g z bazy.