FixVibe
Covered by FixVibehigh

CORS Configurare greșită: riscuri ale politicilor excesiv de permisive

Partajarea resurselor între origini (CORS) este un mecanism de browser conceput pentru a relaxa Politica pentru aceeași origine (SOP). Deși este necesară pentru aplicațiile web moderne, implementarea necorespunzătoare, cum ar fi ecou antetul Origin al solicitantului sau includerea în lista albă a originii „nule” – poate permite site-urilor rău intenționate să exfiltreze datele private ale utilizatorilor.

CWE-942

Impact

Un atacator poate fura date sensibile și autentificate de la utilizatorii unei aplicații vulnerabile [S2]. Dacă un utilizator vizitează un site web rău intenționat în timp ce este conectat la aplicația vulnerabilă, site-ul rău intenționat poate face cereri de origine încrucișată către API al aplicației și poate citi răspunsurile [S1][S2]. Acest lucru poate duce la furtul de informații private, inclusiv profiluri de utilizator, jetoane CSRF sau mesaje private [S2].

Cauza fundamentală

CORS este un mecanism bazat pe antet HTTP care permite serverelor să specifice ce origini (domeniu, schemă sau port) au permisiunea de a încărca resurse [S1]. Vulnerabilitățile apar de obicei atunci când politica CORS a unui server este prea flexibilă sau implementată prost [S2]:

  • Antet de origine reflectată: Unele servere citesc antetul Origin dintr-o solicitare a clientului și îl redau în antetul de răspuns Access-Control-Allow-Origin (ACAO) [S2]. Acest lucru permite efectiv oricărui site web să acceseze resursa [S2].
  • Caractere mânerele configurate greșit: În timp ce caracterul mâner * permite oricărei origini să acceseze o resursă, acesta nu poate fi utilizat pentru solicitări care necesită acreditări (cum ar fi module cookie sau anteturi de autorizare) [S3]. Dezvoltatorii încearcă adesea să ocolească acest lucru prin generarea dinamică a antetului ACAO pe baza solicitării [S2].
  • Includerea pe lista albă „null”: Unele aplicații includ originea null, care poate fi declanșată de solicitări redirecționate sau de fișiere locale, permițând site-urilor rău intenționate să se mascheze ca origine null pentru a obține acces
  • Erori de analiză: greșelile de regex sau potrivirea șirurilor la validarea antetului Origin pot permite atacatorilor să folosească domenii precum trusted-domain.com.attacker.com [S2].

Este important de reținut că CORS nu este o protecție împotriva falsificării cererilor între site-uri (CSRF) [S2].

Remedieri concrete

  • Utilizați o listă albă statică: evitați generarea dinamică a antetului Access-Control-Allow-Origin din antetul Origin [S2] al solicitării. În schimb, comparați originea cererii cu o listă codificată de domenii de încredere [S3].
  • Evitați originea „nulă”: Nu includeți niciodată null în lista albă de origini permise [S2].
  • Restricționați acreditările: setați Access-Control-Allow-Credentials: true numai dacă este absolut necesar pentru interacțiunea specifică între origini [S3].
  • Utilizați validarea corectă: Dacă trebuie să acceptați mai multe origini, asigurați-vă că logica de validare pentru antetul Origin este robustă și nu poate fi ocolită de subdomenii sau domenii similare [S2].

Cum testează FixVibe pentru aceasta

FixVibe include acum acest lucru ca verificare activă cu blocare. După verificarea domeniului, active.cors trimite cereri de aceeași origine API cu o origine sintetică a atacatorului și examinează anteturile de răspuns CORS. Raportează origini arbitrare reflectate, CORS cu acreditări wildcard și CORS larg deschis pe puncte finale API non-publice evitând în același timp zgomotul bunurilor publice.