Cross-Site Scripting (XSS) je typ útoku, při kterém útočník vloží škodlivý skript do webové stránky, kterou pak oběť navštíví. Tento kód se spustí přímo v prohlížeči oběti, aniž by si uživatel všiml, že se něco děje. Nejedná se o útok na server samotný, ale spíše na uživatele – konkrétně na jeho interakci s daným webem.
Cílem XSS je krádež cookies, přihlašovacích údajů, přesměrování na škodlivé weby, nebo zneužití práv přihlášeného uživatele.
Typy XSS útoků
Existují tři hlavní typy XSS útoků, které se liší podle toho, jak a kde se škodlivý kód nachází:
Reflected XSS
Tento typ XSS funguje tak, že je škodlivý kód vložen do URL adresy (např. ve vyhledávacím parametru) a při načtení stránky je okamžitě zobrazen a spuštěn. Reflected XSS se často používá v kombinaci s phishingem – útočník pošle oběti odkaz, který spouští škodlivý kód.
Stored XSS
Nejnebezpečnější varianta. Útočník vloží škodlivý kód přímo do databáze webu – např. do komentářů, profilů nebo příspěvků. Když si stránku otevře jiný uživatel, kód se automaticky spustí. Tato zranitelnost může ovlivnit stovky nebo tisíce uživatelů, pokud je web populární.
DOM-based XSS
Tato varianta nevychází přímo ze serveru, ale ze způsobu, jak webová stránka pracuje s daty v prohlížeči. Útočník manipuluje s DOM (Document Object Model) tak, aby došlo ke spuštění kódu v prohlížeči bez interakce serveru.
Proč je XSS nebezpečný?
Může krást cookies a tím získat přístup k účtům.
Lze využít pro keylogging (sledování stisků kláves).
Umožňuje přesměrování na škodlivé stránky.
V kombinaci s dalšími útoky umožňuje převzetí účtů.
V prostředí podnikových aplikací může XSS znamenat přístup k citlivým firemním datům.
Reálné příklady XSS z historie
MySpace (2005) – tzv. Samy Worm zneužil XSS k vytvoření červa, který se šířil mezi profily a přidával si útočníka jako přítele. Za jeden den měl přes milion přátel.
British Airways (2018) – v rámci většího útoku byl zneužit i XSS kód, který napomohl krádeži dat více než 380 000 zákazníků.
Ebay, Google, Facebook – i tyto giganty v minulosti potkaly chyby umožňující XSS útoky, které byly postupně opraveny po nahlášení etickými hackery.
Jak se bránit proti XSS?
Escapování výstupů – všechny dynamické vstupy musí být při výpisu na stránku ošetřeny (např. HTML entity).
Validace a filtrování vstupů – ideálně bílou listinou povolených znaků.
Používání moderních frameworků – Angular, React a další mají vestavěnou ochranu proti XSS.
Content Security Policy (CSP) – bezpečnostní hlavička, která omezuje spouštění skriptů.
Zakázání inline skriptů a eval() – snižuje riziko spouštění škodlivého kódu.
Pravidelný bezpečnostní audit a testování (např. s Burp Suite nebo OWASP ZAP).
Shrnutí
XSS je stále jednou z nejčastějších a nejúčinnějších zranitelností na webu. Ačkoli jde o „klasiku“ mezi útoky, neznamená to, že je méně nebezpečná. Naopak – právě její jednoduchost a účinnost z ní dělají oblíbený nástroj útočníků všech úrovní. Prevence začíná u vývojářů, kteří musí chránit své aplikace jak na vstupu, tak na výstupu. A uživatelé by měli být ostražití – nikdy neklikat na podezřelé odkazy a nepodceňovat ochranu vlastního účtu, například formou dvoufázového ověření.