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

Wolfgang Beyer
Wolfgang Beyer

Co to są własne ataki XSS?

Self-XSS (ang. Self-cross-site scripting) to rodzaj ataku wykorzystującego inżynierię społeczną, który nakłania do uruchomienia złośliwego kodu w przeglądarce. W przeciwieństwie do standardowych ataków XSS, które wykorzystują luki w zabezpieczeniach aplikacji internetowych, które umożliwiają atakującym wstrzykiwanie złośliwego kodu, ataki typu Self XSS polegają na wykonaniu przez Ciebie potencjalnego wykonania kodu.

Ataki typu Self-XSS zazwyczaj polegają na tym, że atakujący nakłania Cię do skopiowania i wklejenia złośliwego kodu do konsoli Narzędzi deweloperskich w przeglądarce. Atakujący zwykle osiąga to, obiecując jakąś nagrodę. Może to być:

  • Obiecywanie, że kod umożliwi Ci dostęp do ukrytych funkcji lub wirtualnych nagród.
  • Udawanie kodu, które jest testem zabezpieczeń lub poprawką błędu.
  • Obiecywanie, że kod umożliwia włamanie do witryny z korzyścią dla Ciebie.

Gdy uruchomisz kod, osoba przeprowadzająca atak może przejąć kontrolę nad Twoim kontem. Może to umożliwić osobie przeprowadzającej atak:

  • wykraść dane osobowe, takie jak imię i nazwisko, adres czy numer karty kredytowej;
  • Publikowanie nieautoryzowanych wiadomości lub komentarzy w Twoim imieniu.
  • Przejmij kontrolę nad swoimi kontami w mediach społecznościowych.
  • Rozpowszechnianie złośliwego oprogramowania innym użytkownikom.

W jaki sposób Narzędzia deweloperskie w Chrome próbują zapobiegać atakom typu Self XSS?

Umożliwienie użytkownikom wklejenia kodu do Narzędzi deweloperskich i uruchomienia go jest samo w sobie ryzykowne. Jest to jednak jedna z podstawowych funkcji Narzędzi deweloperskich w Chrome. Musieliśmy więc znaleźć równowagę między ograniczaniem potencjalnych ataków własnych XSS a nie ingerowaniem w pracę programistów, którzy chcą tylko debugować witryny.

Deweloperzy zwykle nie kopiują kodu, który znajdą w internecie, nie wklejają go w Narzędziach deweloperskich i wykonują bez wcześniejszego sprawdzenia, jak działa kod. Większość programistów bardzo dobrze wie o zagrożeniach związanych z bezpieczeństwem wykonywania kodu, które zetknęli w niecodziennym zakątku sieci.

W Narzędziach deweloperskich w Chrome deweloperzy wiedzą, co robią. Nie chcemy ich spowalniać ani w żaden sposób rozpraszać podczas kopiowania i wklejania kodu.

Sądzimy, że osoby, które nie są programistami, są bardziej narażone na atak typu XSS. Aby Cię chronić, uważamy, że przerywanie potencjalnie niebezpiecznych działań jest akceptowalne i korzystne. Gdy Narzędzia deweloperskie w Chrome wykrywają, że niedoświadczony użytkownik próbuje wkleić kod do nich, wyłącza się i wyświetla ostrzeżenie.

Kiedy Narzędzia deweloperskie wyświetlają własne ostrzeżenia XSS?

O tym, czy wyświetlić ostrzeżenia o XSS, decyduje bardzo prosta heurystyka: narzędzia deweloperskie opierają się na historii konsoli Twojego profilu użytkownika.

Jeśli historia konsoli zawiera co najmniej 5 wpisów, w Narzędziach deweloperskich nie wyświetlają się ostrzeżenia ani wyskakujące okienka. Historia konsoli to lista poleceń wpisanych i wykonanych w Konsoli. Są to polecenia, które zobaczysz, gdy umieścisz kursor w konsoli i wielokrotnie naciśniesz klawisz strzałki w górę.

Jak wyglądają ostrzeżenia własne XSS?

Gdy niedoświadczony użytkownik spróbuje wkleić kod w konsoli, to działanie zostanie zablokowane, a w Konsoli pojawi się ostrzeżenie.

Ostrzeżenie dotyczące samodzielnego XSS w konsoli.

Możesz zastąpić to ostrzeżenie i włączyć wklejanie, ale aby to zrobić, musisz wpisać „zezwól na wklejanie”.

Gdy początkujący użytkownik wkleja kod do edytora kodu w Narzędziach deweloperskich (np. w panelu Źródła), sposób korzystania z niego jest bardzo podobny. Zamiast ostrzeżenia zobaczysz okno modalne.

Okno modalne samodzielnego XSS w panelu Źródła.

Również w tym przypadku samo zamknięcie tego okna nie wystarczy do włączenia wklejania. Aby zastąpić ostrzeżenie, musisz wpisać „Zezwól na wklejanie” w polu do wprowadzania danych.

Czy to ustawienie jednorazowe?

Tak. Jeśli zezwolisz na wklejanie, nie będą już pojawiać się ostrzeżenia o XSS.

Mamy nadzieję, że będzie to korzystny kompromis między użytecznością a irytacją. Dodając dodatkowe funkcje, zwiększamy prawdopodobieństwo przeczytania ostrzeżenia i zmniejszamy prawdopodobieństwo skutecznego ataku typu XSS.

W Narzędziach deweloperskich w Chrome znajduje się flaga, która określa, czy w profilu Chrome mają być wyświetlane ostrzeżenia o XSS. Jeśli więc utworzysz nowy profil i od razu zaczniesz wklejać kod w Narzędziach deweloperskich, wklejanie zostanie zablokowane, a zamiast niego wyświetlą się ostrzeżenia o XSS.

Czy możesz ją wyłączyć na potrzeby automatyzacji testów?

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

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

  • Używaj Chrome for Testing – różnych wersji Chrome zaprojektowanych specjalnie do testowania i automatyzacji. Ostrzeżenia własne XSS są wyłączone.

  • W przypadku innych kanałów wersji Chrome przekaż flagę wiersza poleceń --unsafely-disable-devtools-self-xss-warnings do Chrome, aby całkowicie wyłączyć okno ostrzeżenia o samodzielnym działaniu XSS.

Podsumowanie

Co sądzisz o tej strategii mającej na celu łagodzenie skutków samodzielnego ataków XSS? Jeśli masz jakieś uwagi lub sugestie, dodaj komentarz do tego błędu lub skontaktuj się z nami, korzystając z jednej z poniższych metod.

Szczególnie jeśli pracujesz nad witryną, która w dziennikach konsoli ostrzega o samodzielnych atakami XSS, chętnie porozmawiamy o zniesieniu naszych wysiłków lub mierzeniu wpływu środków ograniczających atak XSS.

Pobierz kanały podglądu

Zastanów się, czy nie ustawić Chrome w wersji Canary, Dev lub beta jako domyślnej przeglądarki do programowania. Te kanały wersji testowej dają dostęp do najnowszych funkcji Narzędzi deweloperskich, umożliwiają testowanie najnowocześniejszych interfejsów API platformy internetowej i wykrywanie problemów w witrynie, zanim użytkownicy ją zobaczą.

Kontakt z zespołem ds. Narzędzi deweloperskich w Chrome

Skorzystaj z poniższych opcji, aby porozmawiać o nowych funkcjach i zmianach w poście lub o innych kwestiach związanych z Narzędziami deweloperskimi.

  • Prześlij nam sugestię lub opinię na crbug.com.
  • Aby zgłosić problem z Narzędziami deweloperskimi, kliknij Więcej opcji   Więcej   > Pomoc > Zgłoś problemy z Narzędziami deweloperskimi.
  • Opublikuj tweeta na stronie @ChromeDevTools.
  • Napisz komentarz pod filmem dotyczącym nowości w Narzędziach deweloperskich w Narzędziach deweloperskich w YouTube lub filmach w YouTube ze wskazówkami dotyczącymi Narzędzi deweloperskich.