Software house Grupa Improve Sp. z o.o. - ul. Marcelińska 94B/181 Poznań
Wróć

Atak XSS – co to jest i jak się przed nim bronić?

Atak Xss - Co To Jest I Jak Się Przed Nim Bronić? zdjęcie nr 13

Atak XSS polega na wprowadzeniu złośliwego oprogramowania do formularza internetowego lub kodu URL aplikacji internetowej, w celu wymuszenia akcji, które nie są podstawowym celem ich działania. W tym artykule wyjaśniamy temat ataków typu cross-site scripting.

Czym jest atak typu cross-site scripting?

Polega na wprowadzeniu złośliwego kodu do formularza internetowego lub kodu URL aplikacji internetowej. Jest on napisany w języku skryptowym typu JavaScript lub PHP, dlatego ma wiele możliwości: dewastację strony internetowej, kradzież haseł oraz danych do logowania.

Przeczytaj również

Ten atak hakerski żeruje na popularnym trendzie, jakim jest tworzenie stron internetowych w locie podczas ładowania, czasem poprzez wykonywanie kodu w przeglądarce. Jest to spore utrudnienie w zapobieganiu tym atakom.

Jak działa atak XSS?

Każdy może przeprowadzić taki atak, w celu przedostania się kodu na komputer internauty, gdy rozpoczyna on przeglądanie stron w internecie. Nie jest tu konieczne uzyskanie dostępu do serwera www, w celu umieszczenia kodu. Wykorzystywany jest po prostu sposób działania nowoczesnych stron internetowych.

Aktualnie strony www są dynamiczne, co oznacza, że nie wyświetlają tego samego statycznego kodu HTML każdemu odwiedzającemu, ale tworzony jest on na bieżąco na podstawie informacji znajdujących się w bazie danych serwera, co jest uzależnione od przesłanych żądań. Informacja przyjmuje postać parametrów w adresie URL wykorzystanym do uzyskania dostępu do witryny.

Każda witryna internetowa składa się nie tylko z kodu HTML i kaskadowych arkuszów stylów, ale także z kodu wykonywalnego napisanego w językach skryptowych (najczęściej JavaScript). Połączone w ten sposób danych to duże niedopatrzenie, bardzo problematyczne z punktu widzenia bezpieczeństwa sieciowego.

Ataki XSS wykorzystują interakcje pomiędzy użytkownikiem a witryna, aby wprowadzić na komputer użytkownika złośliwy kod. Różnica pomiędzy prawidłowym adresem URL, a zawierającym złośliwy kod jest następująca:

  • PRAWIDŁOWY: https://www.google.com/search?q=CSO+online
  • ZAINFEKOWANY: https://www.google.com/search?<script>doEvil()</script>

doEvil() wyróżnia się funkcjonalnością, której należy się obawiać. Dynamicznie renderuje strony zawierające złośliwe kody źródłowe, rozpoczyna się prawdziwe spustoszenie w Twoim komputerze. Oczywiście aktualnie obowiązuje wiele środków zaradczych, aby blokować takie ataki, ale nie każda witryna ma aż tak dobre zabezpieczenia, aby zapewnić wysoki poziom bezpieczeństwa.

Kategorie ataków XSS

Ataki odbite

Inaczej nazywane są nietrwałymi. Złośliwy kod JS zostaje wysłany z przeglądarki ofiary do Google, a następnie jest odbijany w formie wykonywalnej. Nie jest trwale przechowywany na serwerach Google. Stanowi to oszustko typu phising, ponieważ szkodliwe łącze jest zamaskowane jako coś przyjazne, ponieważ trafia do ofiary na pocztę elektroniczną lub poprzez wiadomość SMS.

Ataki oparte na DOM

Rozwinięciem skrótu jest Document Object Model, czyli Model Obiektów Dokumentu. Jest to znormalizowany interfejs API, który definiuje sposób, w jaki przeglądarka buduje stronę internetową z bazowego kodu HTML lub JavaScript. Większość ataków DOM działa na podobnych zasadach co atak odbity. Różnica występuje tylko w tym, że złośliwy kod nigdy nie jest wysyłany na serwer. Trafia jako parametr do funkcji JS, która jest wykonywana w przeglądarce. Mechanizmy ochronne przeglądarki nie są w stanie zabezpieczyć użytkownika.

Ataki przechowywane

Są one uporczywe, ponieważ atakujący wykorzystuje interaktywne funkcje witryny do zapisania złośliwego kodu na serwerze www. Haker może zostawić komentarz do wpisu na blogu zawierający złośliwy JavaScript. Kolejna osoba, która załaduje stronę, spowoduje wykonanie kodu.

Co sprawia, że strona jest podatna na cross site scripting?

Największym błędem jest to gdy aplikacja pobiera dane wejściowe od użytkownika bez sprawdzania ich pod kątem potencjalnie zainfekowanego kodu wykonywalnego, a następnie wykorzystuje te dane do renderowania strony lub wykonywania innych operacji.

Kluczowym aspektem bezpieczeństwa przeglądarki jest tzw. polityka tego samego pochodzenia. Mówi ona o tym, że skrypt wykonujący się na jednej stronie może uzyskać dostęp na innej, ale tylko wtedy, gdy obie strony mają podobne pochodzenie.

Natomiast, w związku z tym, że złośliwy JavaScript może zostać uruchomiony w przeglądarce podczas wejścia użytkownika na stronę, to właśnie przeglądarka pozwala mu uzyskać dostęp do danych z innych stron, które mają wspólne źródło ze stroną podatną na ataki. JS uzyskuje wtedy dostęp do ciasteczek i innych zastrzeżonych informacji dla danej sesji, co powoduje, że ataki XSS są tak skuteczne i pada im wielu internautów.

Jak chronić się przed atakami i cookie XSS?

W projekcie warto uwzględnić trzy główne techniki:

  • sanityzacja danych wejściowych – warto nie akceptować kodu skryptu jako danych wejściowych. Konieczne jest filtrowanie danych wejściowych, ale oczywiście sprytnie spreparowany fragment kodu może prześlizgnąć się. Warto wdrożyć postępowanie oparte na białej liście, czyli zamiast próbować napisać filtr, który będzie blokował wszystkie złośliwe kody wprowadzane do internetowego formularza, można napisać aplikację w taki sposób, aby akceptowała dane tylko w określonych formatach;
  • ucieczka danych wejściowych – jeżeli aplikacja internetowa wysyła dane wprowadzone przez użytkownika z powrotem na stronę internetową, dane te powinny być filtrowane, w celu uzyskania pewności, że nie zawierają złośliwego kodu. Natomiast, jeżeli jeśli użytkownik wprowadza jako dane wejściowe znaczniki HTML, aplikacja powinna używać znaków ucieczki, aby wyświetlić je jako tekst na stronie wynikowej. Nie mogą one zostać zintegrowane z kodem HTML strony;
  • standard Content Security Policy – CSP pozwala przenieść podejście białej listy poza tekst wejściowy do strefy wykonywania skryptów. Chodzi o to, aby aplikacja wykonywała tylko te kody, które użytkownik określił jako bezpieczne.

XSS to poważne zagrożenie, przed którym trzeba zabezpieczać się wszystkimi dostępnymi sposobami. Trzeba pamiętać, że hakerzy modyfikują podejście, aby uskutecznić swoje ataki. Trzeba mieć się na baczności. 

Sprawdź usługi naszego software house

Ostatnie wpisy blogowe

Umów sięna darmową konsultację