Jak Narzędzia deweloperskie w Chrome pomagają chronić się przed atakami typu „SaxSS”

Wolfgang Beyer
Wolfgang Beyer

Co to są ataki typu self-XSS?

Samouszkodzenie przez skryptowanie między witrynami to rodzaj ataku socjotechnicznego, który ma na celu nakłonienie Cię do uruchomienia złośliwego kodu w przeglądarce. W przeciwieństwie do zwykłych ataków XSS, które wykorzystują luki w zabezpieczeniach aplikacji internetowych, umożliwiające wstrzyknięcie złośliwego kodu, ataki typu self-XSS polegają na potencjalnym uruchomieniu kodu przez użytkownika.

Ataki typu self-XSS polegają zazwyczaj na tym, że atakujący nakłania Cię do skopiowania i wklejenia złośliwego kodu w konsoli w narzędziach deweloperskich przeglądarki. Zwykle obiecuje za to jakąś nagrodę. Może to być spowodowane:

  • Obiecują, że kod da Ci dostęp do ukrytych funkcji lub wirtualnych nagród.
  • Udają, że kod jest testem bezpieczeństwa lub poprawką błędu.
  • Obiecują, że kod umożliwia włamanie się do witryny w celu osiągnięcia korzyści.

Gdy uruchomisz kod, atakujący może przejąć kontrolę nad Twoim kontem. Może to umożliwić atakującemu:

  • kraść Twoje dane osobowe, takie jak imię i nazwisko, adres i numer karty kredytowej;
  • publikowanie w Twoim imieniu nieautoryzowanych wiadomości lub komentarzy;
  • Przejmij kontrolę nad swoimi kontami w mediach społecznościowych.
  • rozpowszechnianie złośliwego oprogramowania wśród innych użytkowników;

Jak Narzędzia deweloperskie w Chrome próbują ograniczać ataki typu XSS?

Zezwalanie użytkownikom na wklejanie kodu w DevTools i następnie jego wykonywanie jest z zasady ryzykowne. Jest to też jedna z podstawowych funkcji Narzędzi deweloperskich w Chrome. Musieliśmy więc znaleźć równowagę między ograniczaniem potencjalnych ataków XSS na siebie a nieutrudnianiem pracy deweloperom, którzy chcą tylko debugować witryny.

Deweloperzy zwykle nie kopiują kodu znalezionego gdzieś w internecie, wklejają go w DevTools i uruchamiają, nie sprawdzając najpierw, do czego służy ten kod. Większość deweloperów jest świadoma zagrożeń związanych z wykonywaniem kodu znalezionego w niesprawdzonych źródłach w internecie.

Narzędzia deweloperskie w Chrome ufają, że deweloperzy wiedzą, co robią. Nie chcemy, aby kopiowanie i wklejanie kodu spowalniało lub rozpraszało użytkowników.

Uważamy, że osoby niebędące programistami są znacznie bardziej narażone na atak typu self-XSS. Aby Cię chronić, uważamy, że przerywanie Ci, gdy robisz coś potencjalnie niebezpiecznego, jest dopuszczalne i korzystne. Gdy Narzędzia deweloperskie w Chrome wykryją, że niedoświadczony użytkownik próbuje wkleić kod do Narzędzi deweloperskich, przestaną działać i wyświetlą ostrzeżenie.

Kiedy DevTools wyświetli ostrzeżenia o samoistnym XSS?

DevTools używa bardzo prostej heurystyki, aby zdecydować, czy wyświetlić ostrzeżenia o samoistnym XSS: jest ona oparta na historii konsoli w profilu użytkownika.

Jeśli w historii konsoli Twojego profilu jest co najmniej 5 pozycji, Narzędzia deweloperskie nie będą Ci przeszkadzać ostrzeżeniami ani wyskakującymi okienkami. Historia konsoli to lista poleceń wpisanych i wykonanych w Konsoli. To są polecenia, które widzisz, gdy umieszczasz kursor w konsoli i kilka razy naciskasz strzałkę w górę.

Jak wyglądają ostrzeżenia przed samouruchomi XSS?

Gdy niedoświadczony użytkownik spróbuje wkleić kod do Konsoli, to działanie zostanie zablokowane, a Konsola wyświetli ostrzeżenie.

Ostrzeżenie przed samouzyskiem XSS w Konsoli.

Możesz zignorować to ostrzeżenie i zezwolić na wklejanie, ale musisz wpisać „allow pasting” (zezwól na wklejanie).

Gdy niedoświadczony użytkownik wklei kod do edytora kodu w Narzędziach dla programistów (np. w panelu Źródła), działanie jest bardzo podobne. Zamiast ostrzeżenia zobaczysz okno modalne.

Okno modalne samo-XSS w panelu Źródła

Ponownie: samo zamknięcie tego okna nie wystarczy, aby umożliwić wklejanie. Aby zignorować ostrzeżenie, wpisz „allow pasting” (zezwalaj na wklejanie) w polu tekstowym.

Czy to ustawienie jest jednorazowe?

Tak, gdy zezwolisz na wklejanie, nigdy więcej nie będziesz otrzymywać ostrzeżeń przed atakiem XSS.

Mamy nadzieję, że dzięki temu znajdziemy właściwy kompromis między przydatnością a uciążliwością. W ten sposób zwiększamy prawdopodobieństwo, że przeczytasz ostrzeżenie, a tym samym zmniejszamy prawdopodobieństwo skutecznego ataku XSS.

Narzędzia deweloperskie Chrome przechowują flagę, która określa, czy w profilu Chrome mają być wyświetlane ostrzeżenia przed samouszkodzeniem XSS. Jeśli więc utworzysz nowy profil i natychmiast zaczniesz wklejać kod do DevTools, wklejanie zostanie zablokowane, a zamiast tego wyświetlą się ostrzeżenia dotyczące samouszkodzenia.

Czy możesz wyłączyć tę funkcję na potrzeby testowania automatyzacji?

A co z testami automatycznymi? Wiele narzędzi do testowania tworzy nowy tymczasowy profil na potrzeby każdego testu. Jeśli więc używasz Narzędzi deweloperskich do debugowania testów automatycznych, wklejanie w Konsoli jest początkowo zablokowane.

Aby obejść ten problem, wykonaj jedną z tych czynności:

  • Użyj Chrome for Testing, czyli wersji Chrome zaprojektowanej specjalnie do testowania i automatyzacji. Ostrzeżenia dotyczące samouruchomionego XSS są wyłączone.

  • W przypadku innych kanałów wersji Chrome prześlij do Chrome flagę --unsafely-disable-devtools-self-xss-warnings wiersza poleceń, aby całkowicie wyłączyć okno z ostrzeżeniem o samoistnym xss.

Podsumowanie

Co sądzisz o tej strategii ograniczania ataków typu XSS? Jeśli masz uwagi lub sugestie, dodaj komentarz do tego błędu lub skontaktuj się z nami w jednej z podanych niżej metod.

Szczególnie jeśli pracujesz nad witryną, która ostrzega przed atakami typu XSS w logach konsoli, chętnie porozmawiamy o współpracy lub pomiarze skuteczności środków zapobiegających atakom typu XSS.

Pobieranie kanałów podglądu

Rozważ użycie jako domyślnej przeglądarki deweloperskiej wersji Canary, Dev lub Beta przeglądarki Chrome. Te kanały wersji wstępnej zapewniają dostęp do najnowszych funkcji DevTools, umożliwiają testowanie najnowocześniejszych interfejsów API platformy internetowej i pomagają znaleźć problemy w witrynie, zanim zrobią to użytkownicy.

Kontakt z zespołem Narzędzi deweloperskich w Chrome

Aby omówić nowe funkcje, aktualizacje lub inne kwestie związane z Narzędziami deweloperskimi, skorzystaj z tych opcji.