FixVibe
Covered by FixVibehigh

Odkrivanje in preprečevanje ranljivosti skriptnega izvajanja med spletnimi mesti (XSS)

Do skriptnega izvajanja med spletnimi mesti (XSS) pride, ko aplikacija na spletno stran vključuje nezaupljive podatke brez ustreznega preverjanja ali kodiranja. To napadalcem omogoča izvajanje zlonamernih skriptov v brskalniku žrtve, kar vodi do ugrabitve seje, nepooblaščenih dejanj in izpostavljenosti občutljivim podatkom.

CWE-79

Vpliv

Napadalec, ki uspešno izkorišča ranljivost medstranskega skriptiranja (XSS), se lahko maskira kot uporabnik žrtev, izvede kakršno koli dejanje, za katerega je uporabnik pooblaščen, in dostopa do katerega koli od uporabnikovih podatkov [S1]. To vključuje krajo sejnih piškotkov za ugrabitev računov, zajemanje poverilnic za prijavo prek lažnih obrazcev ali izvajanje navideznega ponarejanja [S1][S2]. Če ima žrtev skrbniške pravice, lahko napadalec pridobi popoln nadzor nad aplikacijo in njenimi podatki [S1].

Temeljni vzrok

XSS se pojavi, ko aplikacija prejme vnos, ki ga lahko nadzoruje uporabnik, in ga vključi na spletno stran brez ustrezne nevtralizacije ali kodiranja [S2]. To omogoča, da brskalnik žrtve interpretira vnos kot aktivno vsebino (JavaScript), s čimer se zaobide pravilnik o istem izvoru, namenjen izolaciji spletnih mest med seboj [S1][S2].

Vrste ranljivosti

  • Odraženo XSS: Zlonamerni skripti se odbijejo od spletne aplikacije do brskalnika žrtve, običajno prek parametra URL [S1].
  • Shranjen XSS: Skript je trajno shranjen na strežniku (npr. v zbirki podatkov ali razdelku za komentarje) in uporabnikom postrežen pozneje [S1][S2].
  • XSS, ki temelji na DOM: Ranljivost v celoti obstaja v kodi na strani odjemalca, ki obdeluje podatke iz nezaupljivega vira na nevaren način, kot je pisanje v innerHTML [S1].

Betonski popravki

  • Kodiraj podatke na izhodu: Pretvori podatke, ki jih lahko nadzoruje uporabnik, v varno obliko, preden jih upodabljaš. Uporabite kodiranje entitete HTML za telo HTML in ustrezno kodiranje JavaScript ali CSS za te posebne kontekste [S1][S2].
  • Filtrirajte vnos ob prihodu: Izvedite stroge sezname dovoljenih za pričakovane formate vnosa in zavrnite vse, kar ni v skladu z [S1][S2].
  • Uporabite varnostne glave: Nastavite zastavico HttpOnly na piškotke seje, da preprečite dostop prek JavaScripta [S2]. Uporabite Content-Type in X-Content-Type-Options: nosniff, da zagotovite, da brskalniki ne bodo napačno razlagali odgovorov kot izvršljivo kodo [S1].
  • Politika varnosti vsebine (CSP): Namestite močan CSP, da omejite vire, iz katerih je mogoče naložiti in izvajati skripte, in tako zagotoviti poglobljeno obrambo [S1][S2].

Kako ga FixVibe testira

FixVibe bi lahko zaznal XSS z večplastnim pristopom, ki temelji na uveljavljenih metodologijah skeniranja [S1]:

  • Pasivni pregledi: Prepoznavanje manjkajočih ali šibkih varnostnih glav, kot sta Content-Security-Policy ali X-Content-Type-Options, ki so zasnovani za ublažitev XSS [S1].
  • Aktivne sonde: Vstavljanje edinstvenih, nezlonamernih alfanumeričnih nizov v parametre URL in polja obrazca, da se ugotovi, ali se odražajo v telesu odgovora brez ustreznega kodiranja [S1].
  • Repo pregledi: Analiza JavaScripta na strani odjemalca za "ponore", ki nevarno obravnavajo nezaupljive podatke, kot so innerHTML, document.write ali setTimeout, ki so običajni indikatorji XSS, ki temelji na DOM [S1].