FixVibe
Covered by FixVibehigh

CORS Nesprávná konfigurace: Rizika příliš tolerantních zásad

Cross-Origin Resource Sharing (CORS) je mechanismus prohlížeče určený k uvolnění zásad stejného původu (SOP). I když je to nezbytné pro moderní webové aplikace, nesprávná implementace – jako je opakování hlavičky Originu žadatele nebo zařazení „nulového“ původu na seznam povolených – může umožnit škodlivým webům proniknout do soukromých uživatelských dat.

CWE-942

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 Origin z požadavku klienta a odrážejí ji zpět v hlavičce odpovědi Access-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ůvod null a 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í Origin mohou útočníkům umožnit používat domény jako trusted-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-Origin ze záhlaví požadavku Origin [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 null do seznamu povolených zdrojů [S2].
  • Omezit přihlašovací údaje: Access-Control-Allow-Credentials: true nastavte 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 Origin byla 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.