No może nie dosłownie wszystko, ale na pewno potrafiło przeczytać WSZYSTKIE wiadomości e-mail z Gmaila, Outlooka, WP, Interii, Onetu i nieskończenie wielu innych kont pocztowych uruchomionych w przeglądarce. W przedstawionym dowodzie koncepcji nie wykorzystano żadnej luki w zabezpieczeniach Gmaila, ani też luki 0-day w przeglądarce. Atak XSS na API rozszerzenia Read&Write zainstalowanego prawie 8 milionów razy dawał możliwość wyświetlenia na przygotowanej przez atakującego stronie internetowej wszystkich wiadomości, które znajdowały się na poczcie. W jaki sposób?

Rozszerzenie używało pliku inject.js do wstrzykiwania paska narzędzi na dowolny adres URL. To czy strony były wczytywane po HTTP lub HTTPS nie miało większego znaczenia, ponieważ obsługiwane „bezpieczne” wstrzykiwanie kodu do kart uruchomionych w przeglądarce obsługiwano lokalnie z ominięciem SOP przeglądarki. Taki „atak” był jak najbardziej możliwy do wykonania przez twórców rozszerzenia. A dowodzi o tym plik manifestu przedstawiający wstrzykiwanie pliku inject.js na szyfrowane i nieszyfrowane strony:

...trimmed for brevity...
  "content_scripts": [
    {
      "matches": [ "https://*/*", "http://*/*" ],
      "js": [ "inject.js" ],
      "run_at": "document_idle",
      "all_frames": true
    }
  ],
...trimmed for brevity...

Rozszerzenie wysyłało kod z inject.js na stronę z dowolnym adresem URL, a żądanie było wykonywane z użyciem plików cookie ofiary, co oznacza, że ładunek mógł kraść zawartość dowolnej strony internetowej, na której był zalogowany użytkownik, tak jak na poniższym filmiku:

Opracowany exploit mógł być umiejscowiony przez atakującego pod dowolnym adresem URL i odczytywać zawartość innej strony WWW. Autor luki zwraca też uwagę na możliwość otworzenia nieskończonej ilości kart (co z pewnością wysyciłoby całą dostępną pamięć RAM). Zaprezentowany PoC robił jedno, ale atak na lukę w rozszerzeniu może być wykorzystany nie tylko do kradzieży zawartości skrzynki pocztowej, ale też do kradzieży loginów i haseł po uprzednim wstrzyknięciu innego kodu JavaScript, pełniącego rolę serwera proxy.

Rozszerzenie Read&Write z poważną luką w zabezpieczeniach

Luka w rozszerzeniu Read&Write została zgłoszona 3 czerwca i załatana dzień później. Jeżeli korzystacie z tego dodatku, tak jak 8 milionów innych użytkowników, to upewnijcie się, że macie zaktualizowaną wersję do 1.8.0.151.

W podobny sposób możliwe było całkowite przejęcie usługi ZenMate VPN. Trzy i pół miliona użytkowników mogło stracić dostęp do konta przez błąd w zabezpieczeniach pozwalający na ujawnienie identyfikatora uwierzytelnienia i tajnego tokenu.

AUTOR:

Adrian Ścibor

Podziel się

Dodaj komentarz