Dopad
Útočník může ukrást citlivá, ověřená data od uživatelů zranitelné aplikace [S2]. Pokud uživatel navštíví škodlivou webovou stránku, když je přihlášen do zranitelné aplikace, může škodlivý web zasílat požadavky na různé zdroje na API aplikace a číst odpovědi [S1][S2]. To může vést ke krádeži soukromých informací, včetně uživatelských profilů, tokenů CSRF nebo soukromých zpráv [S2].
Hlavní příčina
CORS je mechanismus založený na záhlaví HTTP, který serverům umožňuje určit, které zdroje (doména, schéma nebo port) mají povoleno načítat prostředky [S1]. K chybám zabezpečení obvykle dochází, když je politika serveru CORS příliš flexibilní nebo špatně implementovaná [S2]:
- Hlavička zrcadleného původu: Některé servery čtou hlavičku
Originz požadavku klienta a odrážejí ji zpět v hlavičce odpovědiAccess-Control-Allow-Origin(ACAO) [S2]. To efektivně umožňuje jakékoli webové stránce přístup ke zdroji [S2]. - Špatně nakonfigurované zástupné znaky: I když zástupný znak
*umožňuje libovolnému původu přístup ke zdroji, nelze jej použít pro požadavky, které vyžadují pověření (jako jsou soubory cookie nebo autorizační hlavičky) [S3]. Vývojáři se to často snaží obejít dynamickým generováním hlavičky ACAO na základě požadavku [S2]. - Whitelisting 'null': Některé aplikace zařadí na seznam povolených původ
null, který může být spuštěn přesměrovanými požadavky nebo místními soubory, což umožňuje škodlivým webům vydávat se za původnulla získat přístup ZXCVFIXVIBETOKENCVIXCVIX3 - Chyby analýzy: Chyby ve shodě regulárních výrazů nebo řetězců při ověřování záhlaví
Originmohou útočníkům umožnit používat domény jakotrusted-domain.com.attacker.com[S2].
Je důležité poznamenat, že CORS není ochranou proti zfalšování požadavků mezi stránkami (CSRF) [S2].
Opravy betonu
- Použijte statickou bílou listinu: Vyhněte se dynamickému generování záhlaví
Access-Control-Allow-Originze záhlaví požadavkuOrigin[S2]. Místo toho porovnejte původ požadavku s pevně zakódovaným seznamem důvěryhodných domén [S3]. - Vyhněte se 'nulovému' původu: Nikdy nezahrnujte
nulldo seznamu povolených zdrojů [S2]. - Omezit přihlašovací údaje:
Access-Control-Allow-Credentials: truenastavte pouze v případě, že je to absolutně nezbytné pro specifickou interakci mezi původy [S3]. - Použijte správné ověření: Pokud musíte podporovat více zdrojů, zajistěte, aby logika ověření pro hlavičku
Originbyla robustní a nelze ji obejít subdoménami nebo podobně vypadajícími doménami [S2].
Jak to testuje FixVibe
FixVibe to nyní zahrnuje jako uzavřenou aktivní kontrolu. Po ověření domény odešle active.cors požadavky stejného původu API se syntetickým původem útočníka a zkontroluje hlavičky odpovědí CORS. Hlásí odrážený libovolný původ, pověření zástupnými znaky CORS a široce otevřené CORS na neveřejných koncových bodech API, přičemž se vyhýbá hluku z veřejných aktiv.
