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
HttpOnlyna kolačiće sesije kako biste spriječili pristup putem JavaScripta [S2]. UpotrijebiteContent-TypeiX-Content-Type-Options: nosniffkako 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-PolicyiliX-Content-Type-Optionskoji 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.writeilisetTimeout, koji su uobičajeni pokazatelji XSS [S1].
