Google Chrome i XSS auditor w Windows

Google Chrome i XSS auditor w Windows

data: 13 maja, 2013
czas czytania: 4 min
autor: Michał Witas

Twórcy Google w swojej wspaniałomyślności dołączyli do przeglądarki Google Chrome moduł XSS Auditor, który pozwala zabezpieczyć mniej świadomych użytkowników internetu przed najprostszymi przypadkami ataków z rodziny XSS
(Cross-site scripting). 

O ile sam moduł jak i jego włączenie w domyślnej instalacji Chrome jest bardzo dobrym posunięciem inżynierów z Mountain View, o tyle podczas testów security zabezpieczenia przeglądarki, zwłaszcza jeśli o nich nie pamiętamy, mogą przysporzyć nam godzin pracy na dochodzeniu „dlaczego ten payload nie działa?” albo, co gorsza, doprowadzić nas do błędnej oceny podatności strony klienta na ataki XSS.

Jedną z metod obejścia XSS Auditora jest testowanie payloadów na innych przeglądarkach – na nasze nieszczęście Firefox
też czasem broni użytkownika przed cross site scriptingiem. Opera daje nam duże pole do popisu – konsumuje prawie wszystkie wstrzyknięcia. Jednak co w przypadku, kiedy zapomnimy przetestować payload na innej przeglądarce lub po prostu nie czujemy się dobrze w żonglowaniu okienkami?

Z pomocą przychodzi flaga uruchomieniowa –disable-xss-auditor. Dodając ją do skrótu za ścieżką aplikacji Chrome otrzymamy możliwość włączenia przeglądarki bez rzeczonego modułu.

m.witas google chrome

Po uruchomieniu aplikacji przez ten skrót i wpisaniu chrome://version/ (about:version da ten sam efekt) możemy potwierdzić,
że ta instancja działa z wyłączonym XSS auditorem.

m.witas google chrome2

Jednak co się stanie gdy otworzymy przeglądarkę przy pomocy jakiegokolwiek innego skrótu lub otwierając plik *.html domyślnie skojarzony z Google Chrome? Oczywiście moduł nadal będzie włączony, a my otwierając następną kartę możemy znowu zacząć testować XSS-y i dziwić się „Dlaczego to, kurka, nie działa?”. Sytuacja wydaje się patowa.

Z pomocą przychodzi edytor rejestru (Menu start -> Uruchom -> „regedit” lub w Windows 7/Vista „regedit” w polu wyszukiwania) i zmiana paru kluczy:

[HKEY_CLASSES_ROOTChromeHTMLshellopencommand]

[HKEY_CLASSES_ROOTftpshellopencommand]

[HKEY_CLASSES_ROOThttpshellopencommand]

[HKEY_CLASSES_ROOThttpsshellopencommand]

Każdy z powyższych węzłów posiada w sobie wpis (Default) typu REG_SZ z wartością
„C:Users[LOGIN]AppDataLocalGoogleChromeApplicationchrome.exe” — „%1”

m.witas google chrome 3
Zmieniamy powyższy wpis poprzez dopisanie „–disable-xss-auditor” za fragmentem

Applicationchrome.exe”, a przed — „%1”;

Gotowy wpis powinien wyglądać tak:

„C:Users[LOGIN]AppDataLocalGoogleChromeApplicationchrome.exe” –disable-xss-auditor — „%1”

m.witas google chrome 4

Zmiana w węźle HKEY_CLASSES_ROOT zostaje rozpropagowana również na węzły HKEY_CURRENT_USER oraz do wszystkich węzłów użytkowników znajdujących się w węźle HKEY_USERS. Jedynie wpisy w HKEY_LOCAL_MACHINE pozostają niezmienione – w moim przypadku dawało skuteczność metody rzędu 99% (po przeprowadzeniu kilku dodatkowych kroków. Dlaczego 99% – wyjaśnię za chwilę).

Następnie musimy zmodyfikować wszystkie istniejące skróty do Google Chrome poprzez dopisanie flagi –disable-xss-auditor (zgodnie ze zrzutem ekranu z pierwszego akapitu). Oto checklista wg. której możemy zmodyfikować wszystkie znane mi skróty:

Menu Start -> w polu wyszukiwania wpisujemy „chrome” -> Google Chrome

Menu Start -> All Programs -> Google Chrome -> Google Chrome

Pulpit -> Google Chrome

Tak jak pisałem – powyższa metoda ma „tylko” 99% skuteczności. Dlaczego? Otóż czasem przy wyszukiwaniu „chrome” w menu start otrzymujemy bezpośrednie odniesienie do pliku chrome.exe – wybranie tego pliku daje efekt podobny do dwukliku na pliku wykonywalnym – siłą rzeczy żadna flaga uruchomieniowa nie zostanie dopisana. Jednak ja nie jestem wybredny – 99% to liczba, którą jestem w stanie zaakceptować :).

Aktualizacja: kolejny problem pojawia się, gdy Google Chrome doda się do Autostartu. Dzieje się tak, na przykład, podczas instalacji dodatku, który może działać podczas gdy wszystkie okna przeglądarki są zamknięte – w moim przypadku był to dodatek „Gmail Offline”. Jak rozpoznać czy Chrome uruchamia się w tle?
W pasku adresu wystarczy wpisać chrome://version/ (lub about:version) i przeszukać pozycje Command Line w poszukiwaniu fragmentu –no-startup-window.

google chrome

Niestety, w tym wypadku niewiele możemy zrobić. Nawet zmiana wpisów w rejestrze pomaga tylko jednorazowo – wpis jest prywracany do „standardowej” formy po każdym restarcie komputera. Jedyną opcją jest odebranie aplikacji praw do działania w tle (Settings -> w Search Settings wyszukaj Background Apps i odznacz pole Continue running background apps when Google Chrome is closed). Niestety wiąże się to z utratą funkcjonalności niektórych wtyczek, ale jako rozwiązanie doraźne
– działa.

google chrome 2

P.S. Odradzam stosowanie flagi przypiętej „na twardo” na prywatnych komputerach – XSS Auditor naprawdę kiedyś może nas uchronić przed czymś złym (gdy nasza czujność została uśpiona np. poprzez udział we wczorajszej imprezie). Ale na firmowej maszynie, której używamy tylko do testów bezpieczeństwa – dlaczego nie ułatwić sobie życia?

Newsletter IT leaks

Dzielimy się inspiracjami i nowinkami z branży IT. Szanujemy Twój czas - obiecujemy nie spamować i wysyłać wiadomości raz na dwa miesiące.

Subscribe to our newsletter

Administratorem Twoich danych osobowych jest Future Processing S.A. z siedzibą w Gliwicach. Twoje dane będziemy przetwarzać w celu przesyłania cyklicznego newslettera dot. branży IT. W każdej chwili możesz się wypisać lub edytować swoje dane. Więcej informacji znajdziesz w naszej polityce prywatności.

Subscribe to our newsletter

Administratorem Twoich danych osobowych jest Future Processing S.A. z siedzibą w Gliwicach. Twoje dane będziemy przetwarzać w celu przesyłania cyklicznego newslettera dot. branży IT. W każdej chwili możesz się wypisać lub edytować swoje dane. Więcej informacji znajdziesz w naszej polityce prywatności.