Command Palette

Search for a command to run...

Glosariusz XSS (Cross-Site Scripting)

Czym jest XSS (Cross-Site Scripting)?

Cross-Site Scripting, czyli XSS, to luka w zabezpieczeniach stron internetowych, która pozwala atakującym na dodawanie szkodliwych skryptów do stron internetowych. Najczęściej skrypty te są napisane w JavaScript.

Jeśli ktoś odwiedzi stronę dotkniętą XSS, jego przeglądarka uruchamia skrypt atakującego. Może to skutkować kradzieżą ciasteczek, przejęciem sesji lub wykonaniem działań bez zgody użytkownika.

XSS, podobnie jak SQL Injection, regularnie znajduje się na liście OWASP Top 10 jako jedna z najczęstszych podatności aplikacji webowych.

plexicus-xss-attack-ilustration

Jak działa XSS?

XSS często atakuje aplikacje webowe, które nie sprawdzają i nie czyszczą poprawnie danych wejściowych od użytkowników.

Na przykład, jeśli pole komentarza pozwala na surowe HTML lub JavaScript bez żadnego filtrowania, atakujący mógłby dodać taki kod:

<script>alert('Hacked!');</script>

Kiedy ofiary przeglądają stronę, złośliwy kod uruchamia się w ich przeglądarce.

Dlaczego XSS jest ważny w cyberbezpieczeństwie

XSS może prowadzić do większego naruszenia:

  • Przejęcie konta (kradzież ciasteczek sesji w celu podszywania się pod użytkowników)
  • Kradzież danych (przechwytywanie danych z formularzy, takich jak hasła czy karty kredytowe)
  • Ataki phishingowe (wstrzykiwanie fałszywych formularzy logowania)
  • Dostarczanie złośliwego oprogramowania (przekierowywanie użytkowników na złośliwe strony internetowe)

Rodzaje XSS

  1. XSS oparte na DOM
  2. Atak odbywa się całkowicie w przeglądarce poprzez manipulację Modelem Obiektu Dokumentu (DOM) bez angażowania serwera.
  3. XSS przechowywane
  4. Złośliwy skrypt jest trwale przechowywany na serwerze, na przykład w bazie danych, na stronie profilu.
  5. XSS odbite
  6. Skrypt jest odbijany od serwera internetowego (np. w URL lub komunikacie o błędzie), skrypt zostanie wykonany, gdy ofiara kliknie spreparowany link przez atakujących.

Jak zapobiegać XSS

  • Sanityzacja danych wejściowych i kodowanie wyjścia: zawsze oczyszczaj dane wejściowe użytkownika przed ich przetwarzaniem, przekształcając dane wejściowe użytkownika w bezpieczny format
  • Używaj Polityki Bezpieczeństwa Treści (CSP): ogranicza, jakie skrypty mogą być wykonywane w przeglądarce.
  • Unikaj eval() i JavaScriptu w linii: aby zmniejszyć ryzyko wstrzyknięcia.
  • Testowanie bezpieczeństwa (DAST/IAST): przeprowadzaj testy bezpieczeństwa, aby wcześnie wykrywać podatności

Przykład w rzeczywistym przypadku - Robak Samy (MySpace, 2005)

Co się stało: Samy Kamkar opublikował profil na MySpace, który zawierał ładunek przechowywanego XSS. Gdy inni użytkownicy oglądali profil, ładunek uruchamiał się w ich przeglądarkach, (a) dodawał Samy’ego jako przyjaciela, (b) dodawał frazę „Samy jest moim bohaterem” do ich profili oraz (c) replikował się na stronach profili tych użytkowników.

Wpływ: Robak samodzielnie rozprzestrzenił się do ~1 miliona użytkowników w ciągu ~20 godzin, zmuszając MySpace do tymczasowego wyłączenia.

Dlaczego to zadziałało: MySpace pozwalało na nieprzetworzone HTML/atrybuty w polach profilu, co umożliwiało wykonanie przechowywanych skryptów w przeglądarkach odwiedzających.

Wnioski / naprawa: Właściwe kodowanie wyjściowe, sanitacja danych wejściowych, usunięcie HTML z pól profilu i szybkie łatanie. Samy później stanął przed konsekwencjami prawnymi, a MySpace wdrożyło filtry.

Powiązane terminy

Następne kroki

Gotowy, aby zabezpieczyć swoje aplikacje? Wybierz swoją dalszą drogę.

Dołącz do ponad 500 firm, które już zabezpieczają swoje aplikacje z Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready