FixVibe
Covered by FixVibehigh

CORS Netinkama konfigūracija: pernelyg leistinos politikos rizika

Kryžminės kilmės išteklių bendrinimas (CORS) yra naršyklės mechanizmas, skirtas sušvelninti tos pačios kilmės politiką (SOP). Nors tai būtina šiuolaikinėms žiniatinklio programoms, netinkamas diegimas, pvz., užklausos teikėjo „Origin“ antraštės atkartojimas arba „nulios“ kilmės įtraukimas į baltąjį sąrašą, gali leisti kenkėjiškoms svetainėms išfiltruoti privačius naudotojo duomenis.

CWE-942

Poveikis

Užpuolikas gali pavogti neskelbtinus autentifikuotus duomenis iš pažeidžiamos programos [S2] vartotojų. Jei vartotojas apsilanko kenkėjiškoje svetainėje prisijungęs prie pažeidžiamos programos, kenkėjiška svetainė gali pateikti įvairios kilmės užklausas programos API ir skaityti atsakymus [S1][S2]. Dėl to gali būti pavogta asmeninė informacija, įskaitant naudotojų profilius, CSRF prieigos raktus arba asmeninius pranešimus [S2].

Pagrindinė priežastis

CORS yra HTTP antraštėmis pagrįstas mechanizmas, leidžiantis serveriams nurodyti, kurioms ištakoms (domenui, schemai ar prievadui) leidžiama įkelti išteklius [S1]. Pažeidžiamumų paprastai atsiranda, kai serverio CORS politika yra per lanksti arba prastai įdiegta [S2]:

  • Atspindinčios kilmės antraštė: kai kurie serveriai nuskaito Origin antraštę iš kliento užklausos ir atkartoja ją Access-Control-Allow-Origin (ACAO) atsakymo antraštėje [S2]. Tai veiksmingai leidžia bet kuriai svetainei pasiekti šaltinį [S2].
  • Neteisingai sukonfigūruoti pakaitos simboliai: nors pakaitos simbolis * leidžia bet kuriai kilmei pasiekti šaltinį, jo negalima naudoti užklausoms, kurioms reikalingi kredencialai (pvz., slapukai ar prieigos teisės antraštės). [S3]. Kūrėjai dažnai bando tai apeiti, dinamiškai generuodami ACAO antraštę pagal užklausą [S2].
  • Nulinis įtraukimas į baltąjį sąrašą: kai kuriose programose į baltąjį sąrašą įtraukta null kilmė, kurią gali suaktyvinti peradresuotos užklausos arba vietiniai failai, leidžiančios kenkėjiškoms svetainėms apsimesti null šaltiniu. [S2][S3].
  • Išnagrinėjimo klaidos: Klaidos atliekant reguliarųjį reiškinį arba eilučių atitikimą tikrinant Origin antraštę gali leisti užpuolikams naudoti tokius domenus kaip trusted-domain.com.attacker.com [S2].

Svarbu pažymėti, kad CORS nėra apsauga nuo užklausų klastojimo keliose vietose (CSRF) [S2].

Betoniniai pataisymai

  • Naudokite statinį baltąjį sąrašą: venkite dinamiškai generuoti Access-Control-Allow-Origin antraštės iš užklausos Origin antraštės [S2]. Vietoj to palyginkite užklausos kilmę su užkoduotu patikimų domenų sąrašu [S3].
  • Venkite „nulinės“ kilmės: Niekada neįtraukite null į baltąjį leidžiamų šaltinių sąrašą [S2].
  • Apriboti kredencialus: Access-Control-Allow-Credentials: true nustatykite tik tuo atveju, jei tai absoliučiai būtina konkrečiai kelių šaltinių sąveikai [S3].
  • Naudokite tinkamą patvirtinimą: jei turite palaikyti keletą šaltinių, įsitikinkite, kad Origin antraštės patvirtinimo logika yra patikima ir jos negali apeiti padomeniai arba panašiai atrodantys domenai [S2].

Kaip FixVibe tai tikrina

FixVibe dabar tai įtraukta kaip aktyvus tikrinimas. Patvirtinus domeną, active.cors siunčia tos pačios kilmės API užklausas su sintetiniu užpuoliko šaltiniu ir peržiūri CORS atsakymų antraštes. Ji praneša apie savavališką kilmę, pakaitos simbolių kredencialus CORS ir plačiai atvirą CORS neviešuose API galiiniuose taškuose, vengiant viešųjų išteklių triukšmo.