Mõju
Ründaja võib haavatava rakenduse [S2] kasutajatelt varastada tundlikke, autentitud andmeid. Kui kasutaja külastab pahatahtlikku veebisaiti, kui ta on haavatavasse rakendusse sisse logitud, saab pahatahtlik sait teha rakenduse API päringuid ja lugeda vastuseid [S1][S2]. See võib kaasa tuua privaatse teabe, sealhulgas kasutajaprofiilide, CSRF-i märkide või privaatsõnumite varguse [S2].
Algpõhjus
CORS on HTTP-päisepõhine mehhanism, mis võimaldab serveritel määrata, millistel lähtekohtadel (domeen, skeem või port) on lubatud ressursse laadida. [S1]. Haavatavus tekib tavaliselt siis, kui serveri CORS poliitika on liiga paindlik või halvasti rakendatud [S2]:
- Peegeldatud päritolu päis: mõned serverid loevad
Originpäise kliendi päringust ja kordavad seda vastuse päisesAccess-Control-Allow-Origin(ACAO) [S2]. See võimaldab tõhusalt igal veebisaidil juurdepääsu ressursile [S2]. - Valesti konfigureeritud metamärgid: kuigi metamärk
*võimaldab igal päritolul ressursile juurde pääseda, ei saa seda kasutada taotluste puhul, mis nõuavad mandaate (nt küpsised või autoriseerimispäised). [S3]. Arendajad püüavad sellest sageli mööda minna, genereerides dünaamiliselt ACAO päise päringu [S2] alusel. - Null lubatud loendisse lisamine: mõned rakendused lisavad
nullpäritolu lubatud loendisse, mille võivad käivitada ümbersuunatud päringud või kohalikud failid, võimaldades pahatahtlikel saitidel maskeerudanulllähtekohaks. [S2][S3]. - Parsimise vead: päise
Originvalideerimisel esinevad vead regexi või stringi sobitamises võivad lubada ründajatel kasutada selliseid domeene nagutrusted-domain.com.attacker.com[S2].
Oluline on märkida, et CORS ei kaitse saidiülese päringu võltsimise (CSRF) [S2] eest.
Betooniparandused
- Kasutage staatilist valget loendit: vältige päise
Access-Control-Allow-Origindünaamilist genereerimist päringu päisestOrigin[S2]. Selle asemel võrrelge päringu päritolu usaldusväärsete domeenide püsivalt kodeeritud loendiga [S3]. - Vältige nullpäritolu: Ärge kunagi lisage
nulllubatud päritolu [S2] lubatud päritolunimekirja. - Piira mandaati: määrake
Access-Control-Allow-Credentials: trueainult siis, kui see on hädavajalik konkreetse päritoluülese interaktsiooni jaoks [S3]. - Kasutage õiget valideerimist: kui peate toetama mitut päritolu, veenduge, et päise
Originvalideerimisloogika oleks tugev ja seda ei saaks alamdomeenid või sarnase välimusega domeenid [S2] mööda minna.
Kuidas FixVibe seda testib
FixVibe sisaldab seda nüüd piiratud aktiivse kontrollina. Pärast domeeni kinnitamist saadab active.cors sünteetilise ründaja päritoluga sama päritoluga API päringud ja vaatab üle vastuse päised CORS. See kajastab suvalist päritolu, metamärgiga mandaadiga CORS ja laialt avatud CORS mitteavalikes API lõpp-punktides, vältides samal ajal avalike varade müra.
