Impact
Napadač koji uspješno iskoristi ranjivost Cross-Site Scripting (XSS) može se maskirati u korisnika žrtve, izvršiti bilo koju radnju za koju je korisnik ovlašten i pristupiti bilo kojem od korisničkih podataka [S1]. Ovo uključuje krađu kolačića sesije radi otmice naloga, hvatanje akreditiva za prijavu putem lažnih obrazaca ili izvođenje virtuelnog oštećenja [S1][S2]. Ako žrtva ima administrativne privilegije, napadač može steći potpunu kontrolu nad aplikacijom i njenim podacima [S1].
Osnovni uzrok
XSS se javlja kada aplikacija primi unos koji može kontrolirati korisnik i uključi ga u web stranicu bez odgovarajuće neutralizacije ili kodiranja [S2]. Ovo omogućava da se unos interpretira kao aktivni sadržaj (JavaScript) od strane pretraživača žrtve, zaobilazeći Politiku istog porijekla dizajniranu da izoluje web stranice jedne od drugih [S1][S2].
Vrste ranjivosti
- Odraženi XSS: Zlonamjerne skripte se reflektiraju od web aplikacije do pretraživača žrtve, obično preko URL parametra [S1].
- Pohranjena XSS: Skripta je trajno pohranjena na serveru (npr. u bazi podataka ili odjeljku za komentare) i kasnije se služi korisnicima [S1][S2].
- XSS zasnovan na DOM-u: Ranjivost u potpunosti postoji u kodu na strani klijenta koji obrađuje podatke iz nepouzdanog izvora na nebezbedan način, kao što je pisanje u
innerHTML[S1].
Betonski popravci
- Encode Data on Output: Konvertujte podatke koje kontroliše korisnik u bezbedan oblik pre nego što ih renderujete. Koristite HTML kodiranje entiteta za tijelo HTML-a i odgovarajuće JavaScript ili CSS kodiranje za te specifične kontekste [S1][S2].
- Filter unosa po dolasku: Implementirajte stroge liste dozvoljenih za očekivane formate unosa i odbijte sve što nije u skladu sa [S1][S2].
- Koristite sigurnosna zaglavlja: Postavite oznaku
HttpOnlyna kolačiće sesije da biste spriječili pristup putem JavaScripta [S2]. KoristiteContent-TypeiX-Content-Type-Options: nosniffkako biste osigurali da pretraživači neće pogrešno protumačiti odgovore kao izvršni kod [S1]. - Politika sigurnosti sadržaja (CSP): Postavite jak CSP da biste ograničili izvore iz kojih se skripte mogu učitavati i izvršavati, pružajući dubinski sloj odbrane [S1]ZBECV.
Kako FixVibe testira za to
FixVibe bi mogao otkriti XSS kroz višeslojni pristup zasnovan na utvrđenim metodologijama skeniranja [S1]:
- Pasivna skeniranja: Identificiranje nedostajućih ili slabih sigurnosnih zaglavlja poput
Content-Security-PolicyiliX-Content-Type-Optionskoji su dizajnirani da ublaže XSS [S1]. - Aktivne probe: Ubacivanje jedinstvenih, ne-zlonamjernih alfanumeričkih nizova u URL parametre i polja obrasca kako bi se utvrdilo da li se odražavaju u tijelu odgovora bez odgovarajućeg kodiranja [S1].
- Repo skeniranja: Analiza JavaScript-a na strani klijenta za "slivnike" koji nesigurno rukuju nepouzdanim podacima, kao što su
innerHTML,document.writeilisetTimeout, koji su uobičajeni indikatoriinnerHTML,document.write, ilisetTimeout, koji su uobičajeni indikatoriinnerHTML[S1].
