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
HttpOnlyu souborů cookie relace, abyste zabránili přístupu přes JavaScript [S2]. PoužijteContent-TypeaX-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-PolicyneboX-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.writenebosetTimeout, což jsou běžné indikátory založené na ZXBCVVIM [S1].
