Vplyv
Útočník môže ukradnúť citlivé, overené údaje používateľom zraniteľnej aplikácie [S2]. Ak používateľ navštívi škodlivú webovú lokalitu počas prihlásenia sa do zraniteľnej aplikácie, škodlivá lokalita môže odosielať požiadavky z rôznych zdrojov na API aplikácie a prečítať si odpovede [S1][S2]. To môže viesť ku krádeži súkromných informácií vrátane používateľských profilov, tokenov CSRF alebo súkromných správ [S2].
Hlavná príčina
CORS je mechanizmus založený na hlavičke HTTP, ktorý umožňuje serverom určiť, ktoré zdroje (doména, schéma alebo port) môžu načítať prostriedky [S1]. Zraniteľnosť sa zvyčajne vyskytuje, keď je politika servera CORS príliš flexibilná alebo zle implementovaná [S2]:
- Hlavička odrazeného pôvodu: Niektoré servery čítajú hlavičku
Originz požiadavky klienta a odrážajú ju späť v hlavičke odpovedeAccess-Control-Allow-Origin(ACAO) [S2]. To efektívne umožňuje akejkoľvek webovej lokalite prístup k zdroju [S2]. - Zle nakonfigurované zástupné znaky: Aj keď zástupný znak
*umožňuje ľubovoľnému zdroju prístup k zdroju, nemožno ho použiť pre požiadavky, ktoré vyžadujú poverenia (ako sú súbory cookie alebo hlavičky autorizácie) [S3]. Vývojári sa to často snažia obísť dynamickým generovaním hlavičky ACAO na základe požiadavky [S2]. - Whitelisting 'null': Niektoré aplikácie zaradia pôvod
nullna bielu listinu, ktorá môže byť spustená presmerovanými požiadavkami alebo miestnymi súbormi, čo umožňuje škodlivým stránkam maskovať sa ako pôvodnulla získať prístup ZXCVFIXVIBETOKENXCVIXCVIX3 - Chyby analýzy: Chyby v zhode regulárnych výrazov alebo reťazcov pri overovaní hlavičky
Originmôžu útočníkom umožniť používať domény akotrusted-domain.com.attacker.com[S2].
Je dôležité poznamenať, že CORS nie je ochranou proti falšovaniu žiadostí medzi stránkami (CSRF) [S2].
Opravy betónu
- Použite statickú bielu listinu: Vyhnite sa dynamickému generovaniu hlavičky
Access-Control-Allow-Originz hlavičkyOriginpožiadavky [S2]. Namiesto toho porovnajte pôvod žiadosti s pevne zakódovaným zoznamom dôveryhodných domén [S3]. - Vyhnite sa 'nulovému' pôvodu: Nikdy nezahŕňajte
nullna váš biely zoznam povolených zdrojov [S2]. - Obmedziť poverenia:
Access-Control-Allow-Credentials: truenastavte len vtedy, ak je to absolútne nevyhnutné pre špecifickú interakciu medzi pôvodom [S3]. - Použite správnu validáciu: Ak musíte podporovať viacero zdrojov, uistite sa, že logika overenia pre hlavičku
Originje robustná a nemožno ju obísť subdoménami alebo podobne vyzerajúcimi doménami [S2].
Ako to testuje FixVibe
FixVibe to teraz zahŕňa ako uzavretú aktívnu kontrolu. Po overení domény active.cors odošle požiadavky API s rovnakým pôvodom so syntetickým útočníkom a skontroluje hlavičky odpovedí CORS. Hlási svoj ľubovoľný pôvod, zástupné znaky CORS a široko otvorené CORS na neverejných koncových bodoch API, pričom sa vyhýba šumu verejných aktív.
