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
Originantraš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
nullkilmė, kurią gali suaktyvinti peradresuotos užklausos arba vietiniai failai, leidžiančios kenkėjiškoms svetainėms apsimestinullšaltiniu. [S2][S3]. - Išnagrinėjimo klaidos: Klaidos atliekant reguliarųjį reiškinį arba eilučių atitikimą tikrinant
Originantraštę gali leisti užpuolikams naudoti tokius domenus kaiptrusted-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-Originantraštės iš užklausosOriginantraš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: truenustatykite 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
Originantraš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.
