FixVibe
Covered by FixVibehigh

Otkrivanje i sprječavanje ranjivosti međumjesnog skriptiranja (XSS)

Cross-Site Scripting (XSS) događa se kada aplikacija uključi nepouzdane podatke na web stranici bez odgovarajuće provjere valjanosti ili kodiranja. To omogućuje napadačima da izvrše zlonamjerne skripte u žrtvinom pregledniku, što dovodi do otmice sesije, neovlaštenih radnji i izlaganja osjetljivih podataka.

CWE-79

Utjecaj

Napadač koji uspješno iskorištava 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]. To uključuje krađu kolačića sesije za otimanje računa, hvatanje vjerodajnica za prijavu putem lažnih obrazaca ili izvođenje virtualnog oštećenja [S1][S2]. Ako žrtva ima administrativne privilegije, napadač može steći potpunu kontrolu nad aplikacijom i njenim podacima [S1].

Glavni uzrok

XSS se događa kada aplikacija primi unos koji kontrolira korisnik i uključi ga na web stranicu bez odgovarajuće neutralizacije ili kodiranja [S2]. To omogućuje da žrtvin preglednik protumači unos kao aktivni sadržaj (JavaScript), zaobilazeći Pravila istog porijekla osmišljena za međusobno izoliranje web stranica [S1][S2].

Vrste ranjivosti

  • Reflektirano XSS: Zlonamjerne skripte se reflektiraju s web aplikacije na žrtvin preglednik, obično preko URL parametra [S1].
  • Pohranjeno XSS: Skripta je trajno pohranjena na poslužitelju (npr. u bazi podataka ili odjeljku komentara) i kasnije se poslužuje korisnicima [S1][S2].
  • XSS temeljen na DOM-u: Ranjivost postoji isključivo u kodu na strani klijenta koji obrađuje podatke iz nepouzdanog izvora na nesiguran način, kao što je pisanje u innerHTML [S1].

Konkretni popravci

  • Kodiraj podatke na izlazu: Pretvori podatke kojima može upravljati korisnik u siguran oblik prije nego što ih iscrtaš. Koristite HTML kodiranje entiteta za HTML tijelo i odgovarajuće JavaScript ili CSS kodiranje za te specifične kontekste [S1][S2].
  • Filtrirajte unos po dolasku: Implementirajte stroge liste dopuštenih za očekivane formate unosa i odbacite sve što nije u skladu sa [S1][S2].
  • Koristite sigurnosna zaglavlja: Postavite oznaku HttpOnly na kolačiće sesije kako biste spriječili pristup putem JavaScripta [S2]. Upotrijebite Content-Type i X-Content-Type-Options: nosniff kako biste osigurali da preglednici pogrešno protumače odgovore kao izvršni kod [S1].
  • Pravila sigurnosti sadržaja (CSP): Implementirajte snažan CSP za ograničavanje izvora iz kojih se skripte mogu učitavati i izvršavati, pružajući dubinski sloj obrane [S1][S2].

Kako FixVibe to testira

FixVibe bi mogao otkriti XSS kroz višeslojni pristup temeljen na utvrđenim metodologijama skeniranja [S1]:

  • Pasivna skeniranja: Identificiranje nedostajućih ili slabih sigurnosnih zaglavlja kao što su Content-Security-Policy ili X-Content-Type-Options koji su dizajnirani za ublažavanje XSS [S1].
  • Aktivne sonde: ubacivanje jedinstvenih alfanumeričkih nizova koji nisu zlonamjerni u URL parametre i polja obrasca kako bi se utvrdilo odražavaju li se u tijelu odgovora bez odgovarajućeg kodiranja [S1].
  • Repo skeniranja: Analiza JavaScripta na strani klijenta za "slivnike" koji nesigurno rukuju nepouzdanim podacima, kao što su innerHTML, document.write ili setTimeout, koji su uobičajeni pokazatelji XSS [S1].