FixVibe
Covered by FixVibehigh

CORS Nesprávna konfigurácia: Riziká príliš tolerantných politík

Cross-Origin Resource Sharing (CORS) je mechanizmus prehliadača navrhnutý tak, aby zmiernil zásady rovnakého pôvodu (SOP). Aj keď je to nevyhnutné pre moderné webové aplikácie, nesprávna implementácia – ako napríklad opakovanie hlavičky Pôvodcu žiadateľa alebo zaradenie „nulového“ pôvodu na bielu listinu – môže umožniť škodlivým stránkam preniknúť do súkromných údajov používateľov.

CWE-942

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 Origin z požiadavky klienta a odrážajú ju späť v hlavičke odpovede Access-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 null na 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ôvod null a získať prístup ZXCVFIXVIBETOKENXCVIXCVIX3
  • Chyby analýzy: Chyby v zhode regulárnych výrazov alebo reťazcov pri overovaní hlavičky Origin môžu útočníkom umožniť používať domény ako trusted-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-Origin z hlavičky Origin pož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 null na váš biely zoznam povolených zdrojov [S2].
  • Obmedziť poverenia: Access-Control-Allow-Credentials: true nastavte 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 Origin je 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.