Niedawno Meta została ujawniona przez Slow Fog Technology z luką o wartości 31,25 miliona dolarów, co sprawiło, że termin „XSS”, brzmiący dość tajemniczo, stał się popularny. Wiele osób zastanawia się: czym właściwie jest ta luka? Dlaczego może zmusić gigantów o wartości bilionów dolarów do wydawania pieniędzy? W rzeczywistości XSS wcale nie jest tajemnicze, to jak „niewidzialny złodziej” ukryty na stronie internetowej, który podczas przeglądania witryny potajemnie dokonuje kradzieży — może ukraść twoje dane logowania, a nawet przejąć dane użytkowników całej witryny, a skutki są znacznie poważniejsze, niż się wydaje. Dziś wyjaśnimy XSS w prostych słowach, omawiając „czym jest, jak kradnie, jak się bronić”, aby każdy mógł to zrozumieć!

Co to jest XSS? — „Pułapka złośliwego kodu” na stronie internetowej

Pełna nazwa XSS to „atak skryptów między witrynami (Cross-Site Scripting)”, w nazwie zawiera „skrypt”, a jego istota polega na tym, że hakerzy wstrzykują złośliwy kod JavaScript (JS, „pilot” strony internetowej, który może kontrolować wyświetlanie strony, uzyskiwać dane wprowadzane przez użytkownika).

Możesz to zrozumieć w ten sposób: normalna strona internetowa jest jak regularny sklep, wchodzisz, aby robić zakupy (przeglądanie treści, wprowadzanie informacji) jest bezpieczne; a strona zaatakowana przez XSS to sklep, w którym ukryty jest złodziej, wykorzystujący nieuwagę pracowników (strona nie zapewnia ochrony), potajemnie wkłada „podsłuch” (złośliwy kod JS) do rzeczy, które kupujesz, a kiedy odbierasz to (otwierasz stronę), podsłuch automatycznie się uruchamia, kradnie twoje pieniądze (konta, hasła, dane prywatne).

Kluczowe punkty wiedzy: JS to podstawowy język stron internetowych, może odczytywać tekst, który wprowadzasz na stronie, uzyskiwać ciasteczka przeglądarki (w tym stan logowania, dane osobowe), a nawet kontrolować przekierowania strony — hakerzy wykorzystują to, aby złośliwy JS mógł „robić, co chce” na twoim komputerze.

2. 3 powszechne ataki XSS: „schematy kradzieży pieniędzy” używane przez hakerów

XSS nie jest jedynym sposobem ataku, dzieli się głównie na 3 rodzaje, z których każdy ma wyraźną „ścieżkę przestępczą”, zrozumienie ich pozwala uniknąć 80% pułapek:

1. Przechowujący XSS: ukryty w serwerze „permanentna pułapka” (najniebezpieczniejszy)

To najczęstszy, a jednocześnie najgroźniejszy typ, złośliwy kod jest na stałe obecny na serwerze strony, wystarczy, że ktoś odwiedzi odpowiednią stronę, aby zostać zarażonym.

• Scenariusz przestępczy: sekcje komentarzy, tablice wiadomości, strony edycji profili użytkowników, strefy postów na forum (wszystkie miejsca, w których użytkownicy mogą wprowadzać treści, które są publicznie wyświetlane)

• Proces przestępczy: haker w sekcji komentarzy zamieszcza wiadomość zawierającą złośliwy kod JS → strona nie filtruje, więc zapisuje ją bezpośrednio w bazie danych → inni użytkownicy otwierają sekcję komentarzy, strona automatycznie ładuje złośliwy kod w tej wiadomości → ciasteczka użytkowników, wprowadzone informacje są potajemnie wysyłane do hakera.

• Przykład: w sekcji komentarzy pewnego e-commerce, haker napisał „ten sklep jest świetny, kliknij, aby odebrać kupon”, inni użytkownicy kliknęli na ten „kupon”, hasła do konta mogą zostać skradzione.

• Odpowiedni przypadek: Meta, która została ujawniona, to XSS przechowujący, złośliwy kod istnieje na serwerze Conversions API Gateway, wszyscy sprzedawcy i użytkownicy korzystający z tego API mogą zostać zarażeni.

2. Odzwierciedlający XSS: „tymczasowe pułapki” polegające na „linkach phishingowych”

Złośliwy kod nie istnieje na serwerze, ale jest ukryty w linku URL, trzeba oszukać użytkownika, aby kliknął w link, aby go uruchomić, po ataku kod staje się nieaktywny („odzwierciedlenie” czyli „jednorazowe”).

• Scenariusz przestępstwa: pole wyszukiwania, strona logowania, strony z parametrami (na przykład „xxx.com/search?keyword=xxx”)

• Proces przestępczy: haker tworzy URL zawierający złośliwy JS (na przykład „xxx.com/search?keyword=kradnijCiasteczka()”) → oszukuje użytkowników, aby kliknęli przez SMS lub WeChat → po kliknięciu strona odzwierciedla „słowo kluczowe” z URL na stronie, złośliwy kod wykonuje się → dane użytkownika są kradzione.

• Cechy: wysoka ukryta natura, linki mogą wyglądać normalnie (na przykład udające „wymianę punktów na nagrody” „dołącz do grupy wewnętrznej”), zwykli ludzie mają trudności z odróżnieniem.

3. Typ XSS DOM: „lokalne pułapki”, które działają tylko w twojej przeglądarce

Najbardziej wyjątkowy rodzaj, złośliwy kod nie jest ani na serwerze, ani w parametrach URL, ale jest uruchamiany poprzez modyfikację struktury DOM strony, atak odbywa się tylko w przeglądarce użytkownika.

• Scenariusz przestępczy: strony internetowe oparte na dynamicznym renderowaniu JS (na przykład aplikacje jednopanelowe, narzędzia do interakcji w czasie rzeczywistym)

• Proces przestępczy: haker oszukuje użytkowników, aby otworzyli na pozór normalną stronę → legalny JS na stronie ma lukę, którą haker może kontrolować → haker wykonuje złośliwą logikę przez specjalne działania (na przykład kliknięcia przycisku, wprowadzenie określonych treści) → kradnie dane lub przekierowuje na strony phishingowe w przeglądarkach użytkowników.

• Cechy: trudne do wykrycia, ponieważ w dziennikach serwera nie ma śladów złośliwego kodu, wykonuje się tylko na kliencie (komputerze użytkownika).

Trzy, co XSS może ukraść? — Nie tylko hasła, te również mogą zostać zabrane

Nie myśl, że XSS może kradnąć tylko hasła do konta, jego szkody obejmują cały łańcuch „osoba - sprzedawca - platforma”:

• Dla zwykłych ludzi: kradzież kont w mediach społecznościowych, haseł do płatności, informacji o kartach bankowych, ciasteczek przeglądarki (stan logowania), a nawet kontrolowanie kamery, mikrofonu (w nielicznych niebezpiecznych sytuacjach);

• Dla sprzedawców: modyfikacja danych reklamowych (na przykład zmuszenie sprzedawcy do zapłacenia więcej za reklamę), kradzież listy klientów, wstawianie linków phishingowych na stronę sprzedawcy, niszczenie reputacji marki;

• Dla platformy: przejęcie dużej liczby kont użytkowników, uruchomienie ataków DDoS (sparaliżowanie strony), wyciek kluczowych danych platformy, a nawet wykorzystanie przez hakerów do rozpowszechniania złośliwego oprogramowania.

Podajmy prawdziwy przypadek: w 2019 roku pewne znane forum zostało zaatakowane przez XSS przechowujący, haker wstrzyknął złośliwy kod w sekcji komentarzy, co doprowadziło do kradzieży ciasteczek logowania tysięcy użytkowników, konta zostały wykorzystane do wysyłania niechcianych reklam, platforma musiała natychmiast zablokować funkcję komentarzy, aby ograniczyć straty.

Jak bronić się przed XSS? — 3 triki dla zwykłych ludzi, 3 kluczowe rzeczy dla deweloperów

Jądrem ataku XSS jest to, że „strona nie filtruje złośliwego kodu, pozwala na jego wykonanie”, dlatego ochrona musi być podejmowana z dwóch stron „użytkownik + deweloper”, zwykli ludzie nie muszą znać technologii, wystarczy zapamiętać 3 triki:

Przewodnik po unikaniu pułapek dla zwykłych ludzi (bez umiejętności technicznych)

1. Nie klikaj w nieznane linki: szczególnie te zawierające „dziwne znaki” w URL (na przykład zawierające <script> „onclick” i inne słowa kluczowe), nawet jeśli są przesyłane przez przyjaciół, najpierw potwierdź źródło;

2. Nie wprowadzaj poufnych informacji na niezaufanych stronach: niszowe strony, wyglądające na niechlujne, nie podawaj numeru telefonu, numeru karty, hasła do płatności, nawet jeśli mówią „odbierz红包” „zdobądź korzyści”;

3. Włączenie ochrony w przeglądarkach: przeglądarki takie jak Chrome, Edge mają domyślnie funkcję „blokowania złośliwego kodu”, nie wyłączaj jej lekkomyślnie; regularnie czyść ciasteczka, aby zmniejszyć ryzyko kradzieży.

Kluczowa ochrona dla deweloperów (muszą to zobaczyć firmy/technicy)

Źródłem XSS jest „brak filtracji wejścia, brak kodowania wyjścia”, deweloperzy mogą zapobiec 99% ataków, wykonując 3 rzeczy:

1. Filtrowanie wejścia: „wyłapywanie” treści wprowadzonych przez użytkownika, filtrowanie niebezpiecznych słów kluczowych i symboli, takich jak <script> „onclick” „eval”, na przykład, jeśli użytkownik wprowadzi <script>, zamień to bezpośrednio na nieszkodliwe znaki;

2. Kodowanie wyjścia: „escapowanie” treści wprowadzonych przez użytkownika przed wyświetleniem ich na stronie, na przykład zamieniając < na &lt;, aby przeglądarka traktowała to jako „tekst”, a nie „kod”;

3. Używanie bezpiecznych frameworków/narzędzi: na przykład włączenie CSP (polityki bezpieczeństwa treści), ograniczenie stron do ładowania tylko zaufanych plików JS; unikanie używania funkcji eval() i innych niebezpiecznych funkcji JS, aby zmniejszyć ryzyko luk.

Pięć, kluczowe punkty: XSS to „niski, ale śmiertelny” błąd, postawa jest ważniejsza niż technologia

Wielu ludzi uważa, że XSS to „mała luka”, ale przez wiele lat zajmowała pierwsze miejsce na liście dziesięciu największych zagrożeń bezpieczeństwa OWASP (globalnej autorytatywnej organizacji zajmującej się bezpieczeństwem sieci), powód jest bardzo prosty:

• Koszt ataku jest bardzo niski: hakerzy nie muszą znać skomplikowanej technologii, wystarczy, że znajdą w internecie kod ataku XSS i mogą go użyć;

• Koszt ochrony jest bardzo niski: deweloperzy muszą jedynie dobrze wykonać „filtrowanie wejścia + kodowanie wyjścia”, aby zablokować większość ataków;

• Ogromne zagrożenie: raz złapani, mogą prowadzić do masowego wycieku danych użytkowników, straty firm idą w miliardy (na przykład Meta, w tym przypadku straty spowodowane wykorzystaniem luki mogą znacznie przekroczyć 310 000 dolarów nagrody).

Meta, będąca gigantem wartym bilion dolarów, padła ofiarą XSS, a przyczyna nie leży w braku umiejętności technicznych, lecz w „niewłaściwej równowadze priorytetów bezpieczeństwa” — inwestując wszystkie zasoby w AI, metawersum i inne popularne usługi, zignorowali podstawową ochronę bezpieczeństwa stron. To także przypomnienie dla wszystkich firm: bezpieczeństwo sieci nie ma „poziomów”, nawet podstawowe luki, jeśli są ignorowane, mogą stać się śmiertelnym zagrożeniem.

Dla zwykłych ludzi zrozumienie XSS nie jest po to, aby stać się hakerami, ale aby nauczyć się „nie wpadać w pułapki” — w tej erze informacji, każde przeglądanie stron internetowych, każde wprowadzanie informacji, może wiązać się z ukrytym ryzykiem, więcej czujności oznacza mniej strat.

Na koniec pytanie: czy kiedykolwiek spotkałeś się z sytuacją „przekierowania na dziwną stronę po kliknięciu w link” „otrzymania spamu po wprowadzeniu informacji”? Może to być zwiastun ataku XSS! Zachęcamy do dzielenia się swoimi doświadczeniami w komentarzach, aby wspólnie unikać pułapek ~