FixVibe
Covered by FixVibehigh

Otkrivanje i sprečavanje ranjivosti skriptiranja na više lokacija (XSS)

Cross-Site Scripting (XSS) se javlja kada aplikacija uključuje nepouzdane podatke na web stranici bez odgovarajuće validacije ili kodiranja. Ovo omogućava napadačima da izvrše zlonamjerne skripte u pretraživaču žrtve, što dovodi do otmice sesije, neovlaštenih radnji i izlaganja osjetljivih podataka.

CWE-79

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 HttpOnly na kolačiće sesije da biste spriječili pristup putem JavaScripta [S2]. Koristite Content-Type i X-Content-Type-Options: nosniff kako 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-Policy ili X-Content-Type-Options koji 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.write ili setTimeout, koji su uobičajeni indikatori innerHTML, document.write, ili setTimeout, koji su uobičajeni indikatori innerHTML [S1].