FixVibe
Covered by FixVibehigh

CORS Configuració incorrecta: riscos de polítiques massa permissives

L'ús compartit de recursos entre orígens (CORS) és un mecanisme de navegador dissenyat per relaxar la política del mateix origen (SOP). Tot i que és necessària per a les aplicacions web modernes, una implementació incorrecta, com ara fer ressò de la capçalera Origen del sol·licitant o afegir l'origen "nul" a la llista blanca, pot permetre que els llocs maliciosos s'exfiltrin les dades privades dels usuaris.

CWE-942

Impacte

Un atacant pot robar dades confidencials i autenticades dels usuaris d'una aplicació vulnerable [S2]. Si un usuari visita un lloc web maliciós mentre està connectat a l'aplicació vulnerable, el lloc maliciós pot fer sol·licituds d'origen creuat al API de l'aplicació i llegir les respostes [S1][S2]. Això pot provocar el robatori d'informació privada, inclosos els perfils d'usuari, els testimonis CSRF o els missatges privats [S2].

Causa arrel

CORS és un mecanisme basat en capçaleres HTTP que permet als servidors especificar quins orígens (domini, esquema o port) es permeten carregar recursos [S1]. Les vulnerabilitats solen aparèixer quan la política CORS d'un servidor és massa flexible o està mal implementada [S2]:

  • Capçalera de l'origen reflectit: Alguns servidors llegeixen la capçalera Origin d'una sol·licitud de client i la fan ressò a la capçalera de resposta Access-Control-Allow-Origin (ACAO) [S2]. Això permet efectivament que qualsevol lloc web accedeixi al recurs [S2].
  • Commodins mal configurats: tot i que el comodí * permet que qualsevol origen accedeixi a un recurs, no es pot utilitzar per a sol·licituds que requereixin credencials (com ara galetes o capçaleres d'autorització) [S3]. Els desenvolupadors sovint intenten evitar-ho generant dinàmicament la capçalera ACAO basada en la sol·licitud [S2].
  • Llista blanca 'nul': Algunes aplicacions inclouen a la llista blanca l'origen null, que es pot activar per sol·licituds redirigits o fitxers locals, la qual cosa permet que els llocs maliciosos es dissimulin com un origen null per accedir a ZXCVFIXVIBETOKENTOKEN2CVIXVIXVIBETOKENTOKVZCV3CV3CV.
  • Errors d'anàlisi: Els errors en la concordança d'expressions regulars o de cadenes en validar la capçalera Origin poden permetre als atacants utilitzar dominis com trusted-domain.com.attacker.com [S2].

És important tenir en compte que CORS no és una protecció contra la falsificació de sol·licituds entre llocs (CSRF) [S2].

Correccions concretes

  • Utilitzeu una llista blanca estàtica: Eviteu generar dinàmicament la capçalera Access-Control-Allow-Origin des de la capçalera Origin [S2] de la sol·licitud. En lloc d'això, compareu l'origen de la sol·licitud amb una llista codificada de dominis de confiança [S3].
  • Eviteu l'origen "nul": No inclogueu mai null a la vostra llista blanca d'orígens permesos [S2].
  • Restringeix les credencials: només definiu Access-Control-Allow-Credentials: true si és absolutament necessari per a la interacció específica entre origens [S3].
  • Utilitzeu la validació adequada: si heu de donar suport a diversos orígens, assegureu-vos que la lògica de validació de la capçalera Origin sigui sòlida i que no es pugui ometre els subdominis o dominis d'aspecte similar [S2].

Com ho prova FixVibe

FixVibe ara inclou això com a comprovació activa. Després de la verificació del domini, active.cors envia sol·licituds API del mateix origen amb un origen d'atacant sintètic i revisa les capçaleres de resposta CORS. Informa d'orígens arbitraris reflectits, CORS amb credencials comodís i CORS oberts en punts finals API no públics alhora que evita el soroll dels actius públics.