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 samo-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ąc, ż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:
- kradzież Twoich danych osobowych, takich jak imię i nazwisko, adres i numer karty kredytowej;
- publikować w Twoim imieniu wiadomości lub komentarzy bez Twojej zgody;
- 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 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 samoprzekazaniu 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, w Narzędziech deweloperskich nie będą się wyświetlać żadne ostrzeżenia ani wyskakujące okienka. 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, ta czynność zostanie zablokowana, a Konsola wyświetli ostrzeżenie.
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.
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 self-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 przeglądarki Chrome w wersji Canary, Dev lub Beta. 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.
- Przesyłaj opinie i prośby o dodanie funkcji na stronie crbug.com.
- Zgłoś problem z Narzędziami deweloperskimi, klikając Więcej opcji > Pomoc > Zgłoś problem z Narzędziami deweloperskimi w Narzędziach deweloperskich.
- Wyślij tweeta do @ChromeDevTools.
- Dodaj komentarze do filmów w YouTube z serii „Co nowego w Narzędziach deweloperskich” lub Wskazówki dotyczące Narzędzi deweloperskich.