Badacze bezpieczeństwa przedstawili nową technikę, która sprawia, że zdalny atak czasowy kanałem bocznym jest bardziej skuteczny, niezależnie od przeciążenia sieci między atakującym a serwerem docelowym.

Timing attacks (ataki czasowe) to ataki kryptograficzne, które mogą zostać wykorzystane do poznania haseł użytkowników portali internetowych korzystających z logowania po protokołach OpenID oraz OAuth w wersji 1. Więcej teorii tutaj.

W tym ataku, hacker próbując zalogować się do serwisu różnymi hasłami, mierzy czasy odpowiedzi serwera. Jeśli serwer weryfikuje hasło znak po znaku, to na podstawie różnić w czasach otrzymania komunikatu błędu “hasło nieprawidłowe” można wnioskować, czy któryś ze znaków w haśle był prawidłowy. Brzmi niewiarygodnie, ale technika ta jest bardzo stara. Tak złamano hasła do Xbox 360 w 2007 roku. Między innymi dlatego wprowadzono nową wersję 2.0 protokołu OAuth.

Na możliwość przeprowadzenia zdalnych ataków czasowych wpływają głównie zmiany czasu transmisji sieciowej czy fluktuacje sieci, które z kolei zależą od obciążenia połączenia sieciowego w danym momencie. Mierzenie czasu potrzebnego do wykonania algorytmów kryptograficznych ma kluczowe znaczenie dla przeprowadzenia ataku czasowego, a tym samym wycieku informacji. Zaburzenie na ścieżce sieciowej od atakującego do serwera może sprawić, że skuteczne wykorzystanie bocznych kanałów czasowych będzie niewykonalne.

Nowa metoda, zwana Timeless Timing Attacks (TTA) opisana przez naukowców z DistriNet Research Group i New York University Abu Dhabi, zamiast tego wykorzystuje multipleksowanie protokołów sieciowych i jednoczesne wykonywanie przez aplikacje, dzięki czemu ataki są odporne na warunki sieciowe.


Użycie multipleksowania odpowiedzi HTTP/2

W przeciwieństwie do typowych ataków czasowych, w których czasy wykonania są mierzone niezależnie i sekwencyjnie, najnowsza technika próbuje wydobyć informacje z zapytania i zmierzyć względną różnicę czasu między dwoma współbieżnie wykonanymi żądaniami bez polegania na jakichkolwiek informacjach dotyczących czasu.
Aby to zrobić, atakujący inicjuje parę żądań HTTP/2 do serwera ofiary bezpośrednio lub za pomocą cross-site (na przykład złośliwej reklamy lub nakłonienia ofiary do odwiedzenia strony internetowej kontrolowanej przez atakującego) w celu uruchomienia żądań do serwer za pomocą kodu JavaScript.
Serwer zwraca wynik zawierający różnicę w czasie odpowiedzi między drugim a pierwszym żądaniem. Atak TTA działa, biorąc pod uwagę, czy ta różnica jest dodatnia czy ujemna, gdzie wartość dodatnia wskazuje, że czas przetwarzania pierwszego żądania zajmuje mniej czasu niż przetwarzanie drugiego żądania.

„Na serwerach WWW hostowanych przez HTTP/2 stwierdzamy, że różnica w czasie tak niewielka jak 100 ns (nanosekund) może być dokładnie wywnioskowana z kolejności odpowiedzi około 40 000 par żądań” – zauważyli naukowcy.
„Najmniejsza różnica w czasie, którą mogliśmy zaobserwować w tradycyjnym ataku czasowym przez Internet, wynosiła 10 μs (mikrosekund), 100 razy więcej niż w przypadku ataku opartego na współbieżności”.

Ograniczeniem tego podejścia jest to, że ataki skierowane na serwery korzystające z HTTP/1.1 nie mogą wykorzystywać protokołu do łączenia wielu żądań w jednym pakiecie sieciowym, co wymaga, aby jednoczesny atak czasowy był przeprowadzany przy użyciu wielu połączeń zamiast wysyłania wszystkich żądań przez to samo połączenie.
Wynika to z wykorzystania przez HTTP/1.1 blokowania head-of-line (HOL), które powoduje, że wszystkie żądania w tym samym połączeniu są obsługiwane sekwencyjnie, podczas gdy HTTP/2 rozwiązuje ten problem poprzez multipleksowanie żądań.

Obecnie 37,46% wszystkich witryn www jest obsługiwanych przez HTTP/2, a liczba ta wzrasta do 54,04% w przypadku witryn obsługujących protokół HTTPS. Chociaż sprawia to, że ogromna liczba stron internetowych jest podatna na TTA, naukowcy uważają, że wiele z nich polega na sieciach dostarczania treści (CDN), takich jak Cloudflare, który nadal używa protokołu HTTP/1.1 do połączeń między CDN a stroną źródłową, co czyni je odporne na taki atak.


Czy niebezpieczeństwo jest duże?

Oprócz możliwości wykorzystania HTTP/2 istnieje kilka innych sposobów i innych protokołów podatnych na atak czasowy. Na przykład metoda uwierzytelniania EAP-PWD, która wykorzystuje współdzielone hasło między serwerem a suplikantem podczas łączenia się z sieciami Wi-Fi. Wyciek czasu wykonywania operacji w protokole Dragonfly handshake powoduje, że hasło to można złamać metodami słownikowymi.

Chociaż atakom czasowym można przeciwdziałać, zapewniając wykonywanie całej operacji kryptograficznej w stałym czasie, łatwiej to powiedzieć niż zrobić, szczególnie w przypadku aplikacji, które opierają się na komponentach innych firm. Alternatywnie, badacze sugerują dodanie losowego opóźnienia do przychodzących żądań i upewnienie się, że różne żądania nie są łączone w jednym pakiecie.

Odkrycia naukowców zostaną zaprezentowane na Sympozjum Bezpieczeństwa USENIX pod koniec tego roku. Naukowcy opublikowali również oparte na Pythonie narzędzie do testowania serwerów HTTP/2 pod kątem luk w zabezpieczeniach TTA.

Podziel się z innymi tym artykułem!