Poveikis
Užpuolikas, sėkmingai išnaudojantis kelių svetainių scenarijų (XSS) pažeidžiamumą, gali apsirengti vartotoju auka, atlikti bet kokį veiksmą, kurį vartotojas turi teisę atlikti, ir pasiekti bet kokius vartotojo duomenis [S1]. Tai apima seanso slapukų vagystę paskyroms užgrobti, prisijungimo kredencialų fiksavimą naudojant netikras formas arba virtualų sugadinimą [S1][S2]. Jei auka turi administravimo teises, užpuolikas gali visiškai valdyti programą ir jos duomenis [S1].
Pagrindinė priežastis
XSS įvyksta, kai programa gauna vartotojo valdomą įvestį ir įtraukia ją į tinklalapį be tinkamo neutralizavimo ar kodavimo [S2]. Tai leidžia aukos naršyklei interpretuoti įvestį kaip aktyvų turinį (JavaScript), apeinant tą pačią kilmės politiką, skirtą svetainėms atskirti viena nuo kitos [S1][S2].
Pažeidžiamumo tipai
- Atspindi XSS: Kenkėjiški scenarijai atsispindi žiniatinklio programoje į aukos naršyklę, paprastai per URL parametrą [S1].
- Išsaugotas XSS: Scenarijus visam laikui saugomas serveryje (pvz., duomenų bazėje arba komentarų skiltyje) ir vėliau pateikiamas vartotojams [S1][S2].
- DOM pagrįstas XSS: Pažeidžiamumas yra tik kliento kode, kuris nesaugiu būdu apdoroja duomenis iš nepatikimo šaltinio, pvz., rašo į
innerHTML[S1].
Betono pataisymai
- Koduoti duomenis išvestyje: prieš pateikdami naudotojo valdomus duomenis konvertuokite į saugią formą. Naudokite HTML objekto kodavimą HTML turiniui ir atitinkamą JavaScript arba CSS kodavimą tiems specifiniams kontekstams [S1][S2].
- Filtruokite įvestį atvykus: įdiekite griežtus leistinų įvesties formatų sąrašus ir atmeskite viską, kas neatitinka [S1][S2].
- Naudokite saugos antraštes: seanso slapukuose nustatykite žymą
HttpOnly, kad neleistumėte pasiekti per JavaScript [S2]. NaudokiteContent-TypeirX-Content-Type-Options: nosniff, kad įsitikintumėte, jog naršyklės neteisingai interpretuoja atsakymus kaip vykdomąjį kodą [S1]. - Turinio saugos politika (CSP): Įdiekite tvirtą CSP, kad apribotumėte šaltinius, iš kurių galima įkelti ir vykdyti scenarijus, suteikdami gilų apsaugos sluoksnį [S1]ZBXVFIXIXXVF.1.
Kaip FixVibe tai tikrina
FixVibe gali aptikti XSS taikydamas daugiasluoksnį metodą, pagrįstą nustatytomis nuskaitymo metodikomis [S1]:
- Pasyvūs nuskaitymai: trūkstamų arba silpnų saugos antraščių, pvz.,
Content-Security-PolicyarbaX-Content-Type-Options, kurios skirtos sumažinti XSS [S1], nustatymas. - Aktyvūs tyrimai: unikalių, nekenksmingų raidinių ir skaitmeninių eilučių įterpimas į URL parametrus ir formos laukus, siekiant nustatyti, ar jos atsispindi atsakymo tekste be tinkamos kodavimo [S1].
- Pakartotinis nuskaitymas: kliento JavaScript analizavimas, ieškant „kriauklių“, kurie nesaugiai tvarko nepatikimus duomenis, pvz.,
innerHTML,document.writearbasetTimeout, kurie yra įprasti ZVIETOKEN2ZXCV rodikliai, pagrįsti DVIXCVF DFXXVCCVF. [S1].
