FixVibe
Covered by FixVibehigh

Kryžminių svetainių scenarijų (XSS) pažeidžiamumų aptikimas ir prevencija

Kryžminis scenarijus (XSS) įvyksta, kai programa į tinklalapį įtraukia nepatikimų duomenų be tinkamo patvirtinimo ar kodavimo. Tai leidžia užpuolikams vykdyti kenkėjiškus scenarijus aukos naršyklėje, dėl ko užgrobiama sesija, atliekami neteisėti veiksmai ir atskleidžiami jautrūs duomenys.

CWE-79

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]. Naudokite Content-Type ir X-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-Policy arba X-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.write arba setTimeout, kurie yra įprasti ZVIETOKEN2ZXCV rodikliai, pagrįsti DVIXCVF DFXXVCCVF. [S1].