29 czerwca 2010

Google Chrome, Apple Safari: HTML5 AppCache attack

W przeglądarkach internetowych takich jak Chrome, Safari, Firefox oraz Opera (Beta), zaimplementowano funkcję HTML5 Offline Application Cache, która to pozwala witrynom internetowym na daleko idące sprawowanie kontroli nad procesem tworzenia pamięci podręcznej przez przeglądarkę. Problem w tym, że Chrome oraz Safari nie ostrzegają użytkownika przed rozpoczęciem tworzenia pamięci podręcznej, co pozwala dowolnej witrynie na wykonanie tego typu akcji. W efekcie możliwe jest przeprowadzenie trudnego do wykrycia ataku zatruwającego pamięć cache przeglądarki.

Wprowadzenie złośliwego kodu do pamięci podręcznej naszej przeglądarki może nastąpić przykładowo w momencie skorzystania z jakiejś otwartej, niezabezpieczonej sieci Wi-Fi. Zatrucie plików skojarzonych np. z Facebookiem, może pozwolić włamywaczowi nawet na przejęcie kontroli nad naszym kontem w danym serwisie. Złośliwy kod pozostanie w pamięci podręcznej aż do czasu jej wyczyszczenia przez użytkownika. Jako że HTML5 Application Cache może zostać utworzony również dla głównego pliku witryny (w przeciwieństwie do wcześniejszych rozwiązań), za każdym razem gdy użytkownik przeglądarki odwiedzi stronę www.facebook.com, jej zawartość zostanie pobrana właśnie z pamięci podręcznej.

Wszystko to otwiera potencjalnemu intruzowi drogę do ataku poprzez zainfekowanie pamięci podręcznej dowolnej witryny w momencie gdy potencjalna ofiara skorzysta z kontrolowanej przez niego sieci lokalnej. Zainfekowana pamięć podręczna pozwoli natomiast przykładowo na przechwytywanie poświadczeń wprowadzanych przez użytkownika danego serwisu internetowego. Co ciekawe, skuteczny atak jest możliwy również w przypadku serwisów dostępnych za pośrednictwem protokołu HTTPS. Wystarczy tylko, że internauta odwiedzi najpierw nieszyfrowaną stronę (np. http://mail.google.com/mail/), z której dopiero później zostanie przekierowany do witryny korzystającej z protokołu HTTPS.

Przykładowy atak z wykorzystaniem publicznie dostępnego kodu Proof of Concept wygląda następująco:


Podsumowując, cały atak wygląda mniej więcej tak:
  • ofiara podłącza się do otwartej sieci kontrolowanej przez intruza,
  • ofiara otwiera dowolną stronę internetową,
  • intruz w odpowiedzi przesyła stronę z ukrytą ramką iframe odwołującą się do http://mail.google.com/mail/
  • przeglądarka ofiary wysyła żądanie do witryny http://mail.google.com/mail/
  • intruz w odpowiedzi przesyła własną wersję witryny http://mail.google.com/mail/ wyposażoną w mechanizm przechwytywania poświadczeń i właśnie ta wersja strony trafia do pamięci podręcznej ofiary
  • korzystając już z dowolnej innej sieci, ofiara próbuje skorzystać z Gmaila, w wyniku czego przeglądarka załaduje fałszywą witrynę z pamięci podręcznej
  • wprowadzenie poświadczeń zaowocuje ich przesłaniem do intruza.
Firmy Google oraz Apple, z którymi skontaktował się twórca kodu PoC, nie uznały sposobu w jaki HTML5 Offline Application Cache został zaimplementowany w ich przeglądarkach za lukę bezpieczeństwa. Chcąc więc uchronić się przed tego typu atakiem w trakcie korzystania z publicznej sieci, pozostaje nam skorzystanie z trybu prywatnego/incognito, który to zapobiegnie utworzeniu jakiejkolwiek pamięci podręcznej.