FixVibe
Covered by FixVibehigh

Detekce a prevence chyb zabezpečení Cross-Site Scripting (XSS)

Cross-Site Scripting (XSS) nastává, když aplikace obsahuje nedůvěryhodná data na webové stránce bez řádného ověření nebo kódování. To umožňuje útočníkům spouštět škodlivé skripty v prohlížeči oběti, což vede k únosu relace, neoprávněným akcím a vystavení citlivých dat.

CWE-79

Dopad

Útočník, který úspěšně zneužije chybu zabezpečení Cross-Site Scripting (XSS), se může vydávat za oběť uživatele, provést jakoukoli akci, k níž je uživatel oprávněn, a získat přístup k jakýmkoliv datům uživatele [S1]. To zahrnuje krádež cookies relace za účelem únosu účtů, získávání přihlašovacích údajů prostřednictvím falešných formulářů nebo provádění virtuálního znehodnocení [S1][S2]. Pokud má oběť oprávnění správce, může útočník získat plnou kontrolu nad aplikací a jejími daty [S1].

Hlavní příčina

XSS nastane, když aplikace obdrží uživatelsky ovladatelný vstup a zahrne jej na webovou stránku bez řádné neutralizace nebo kódování [S2]. To umožňuje, aby byl vstup interpretován jako aktivní obsah (JavaScript) prohlížečem oběti, čímž se obejdou zásady stejného původu určené k izolaci webových stránek od sebe navzájem [S1][S2].

Typy zranitelnosti

  • Odraženo XSS: Škodlivé skripty se odrážejí z webové aplikace do prohlížeče oběti, obvykle prostřednictvím parametru adresy URL [S1].
  • Uloženo XSS: Skript je trvale uložen na serveru (např. v databázi nebo sekci komentářů) a uživatelům se zobrazí později [S1][S2].
  • XSS na bázi DOM: Tato chyba zabezpečení existuje výhradně v kódu na straně klienta, který zpracovává data z nedůvěryhodného zdroje nebezpečným způsobem, jako je zápis do innerHTML [S1].

Opravy betonu

  • Zakódování dat na výstupu: Před vykreslením převeďte uživatelsky ovladatelná data do bezpečné podoby. Pro tělo HTML použijte kódování entity HTML a pro tyto specifické kontexty vhodné kódování JavaScript nebo CSS [S1][S2].
  • Filtrovat vstup při příchodu: Implementujte přísné seznamy povolených pro očekávané vstupní formáty a odmítněte vše, co neodpovídá [S1][S2].
  • Použít záhlaví zabezpečení: Nastavte příznak HttpOnly u souborů cookie relace, abyste zabránili přístupu přes JavaScript [S2]. Použijte Content-Type a X-Content-Type-Options: nosniff, abyste zajistili, že prohlížeče nebudou chybně interpretovat odpovědi jako spustitelný kód [S1].
  • Zásady zabezpečení obsahu (CSP): Nasaďte silné CSP, abyste omezili zdroje, ze kterých lze skripty načítat a spouštět, a poskytnout hloubkovou ochranu [S1]ZXCVFIXCVIBETOK

Jak to testuje FixVibe

FixVibe dokázal detekovat XSS prostřednictvím vícevrstvého přístupu založeného na zavedených metodologiích skenování [S1]:

  • Pasivní skenování: Identifikace chybějících nebo slabých bezpečnostních hlaviček, jako jsou Content-Security-Policy nebo X-Content-Type-Options, které jsou navrženy ke zmírnění XSS [S1].
  • Aktivní sondy: Vkládání jedinečných, neškodných alfanumerických řetězců do parametrů URL a polí formuláře, aby se zjistilo, zda se odrážejí v těle odpovědi bez správného kódování [S1].
  • Repo skenování: Analýza JavaScriptu na straně klienta pro „propady“, které nakládají s nedůvěryhodnými daty nebezpečně, jako jsou innerHTML, document.write nebo setTimeout, což jsou běžné indikátory založené na ZXBCVVIM [S1].