FixVibe
Covered by FixVibehigh

CORS Configuración incorrecta: riscos de políticas excesivamente permisivas ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG1 Aprende como as configuracións erróneas de CORS permiten aos atacantes eludir a Política da mesma orixe e roubar datos confidenciais de usuarios das aplicacións web xeradas por ZXCVFIXVIBETOKEN1ZXCV. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG2 A compartición de recursos entre orixes (CORS) é un mecanismo de navegador deseñado para relaxar a Política da mesma orixe (SOP). Aínda que é necesaria para as aplicacións web modernas, unha implementación inadecuada, como facer eco da cabeceira de orixe do solicitante ou incluír a orixe "nula" na lista branca, pode permitir que os sitios maliciosos se filtren datos privados dos usuarios. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG3 ## Impacto ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG4 Un atacante pode roubar datos confidenciais e autenticados dos usuarios dunha aplicación vulnerable CORS. Se un usuario visita un sitio web malicioso mentres inicia sesión na aplicación vulnerable, o sitio malicioso pode facer solicitudes de orixe cruzada ao ZXCVFIXVIBETOKEN4ZXCV da aplicación e ler as respostas ZXCVFIXVIBETOKEN1ZXCVZXCVFIXVIBETOKEN2ZXCV. Isto pode levar ao roubo de información privada, incluídos os perfís de usuario, os tokens CSRF ou as mensaxes privadas ZXCVFIXVIBETOKEN3ZXCV. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG5 ## Causa raíz ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG6 ZXCVFIXVIBETOKEN2ZXCV é un mecanismo baseado en cabeceiras HTTP que permite aos servidores especificar que orixes (dominio, esquema ou porto) teñen permiso para cargar recursos CORS. As vulnerabilidades adoitan aparecer cando a política ZXCVFIXVIBETOKEN3ZXCV dun servidor é demasiado flexible ou está mal implementada ZXCVFIXVIBETOKEN1ZXCV: ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG7 * **Cabeceira de orixe reflectida:** Algúns servidores len a cabeceira CORS dunha solicitude de cliente e repítena de novo na cabeceira de resposta ZXCVFIXVIBETOKEN1ZXCV (ACAO) ZXCVFIXVIBETOKEN2ZXCV. Isto permite que calquera sitio web acceda ao recurso ZXCVFIXVIBETOKEN3ZXCV. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG8 * **Commodins mal configurados:** Aínda que o comodín CORS permite que calquera orixe acceda a un recurso, non se pode usar para solicitudes que requiran credenciais (como cookies ou cabeceiras de autorización) ZXCVFIXVIBETOKEN1ZXCV. Os desenvolvedores adoitan tentar evitar isto xerando dinámicamente a cabeceira ACAO baseada na solicitude ZXCVFIXVIBETOKEN2ZXCV. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG9 * **Inclusión 'null' na lista branca:** Algunhas aplicacións inclúen a orixe CORS, que se pode activar mediante solicitudes redirixidas ou ficheiros locais, o que permite que os sitios maliciosos se fagan pasar por unha orixe ZXCVFIXVIBETOKEN1ZXCV para acceder a ZXCVFIXVIBETOKENXVIBETOKEN2CVIXVZVE2CV3CV3CV. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG10 * **Erros de análise:** Os erros na coincidencia de cadeas ou expresións regulares ao validar a cabeceira CORS poden permitir aos atacantes usar dominios como ZXCVFIXVIBETOKEN1ZXCV ZXCVFIXVIBETOKEN2ZXCV. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG11 É importante ter en conta que ZXCVFIXVIBETOKEN1ZXCV non é unha protección contra a falsificación de solicitudes entre sitios (CSRF) CORS. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG12 ## Correccións concretas ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG13 * **Utiliza unha lista branca estática:** Evite xerar dinámicamente a cabeceira CORS a partir da cabeceira ZXCVFIXVIBETOKEN1ZXCV ZXCVFIXVIBETOKEN2ZXCV da solicitude. En cambio, compara a orixe da solicitude cunha lista codificada de dominios de confianza ZXCVFIXVIBETOKEN3ZXCV. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG14 * **Evita a orixe "nula":** Non inclúas nunca CORS na túa lista branca de orixes permitidas ZXCVFIXVIBETOKEN1ZXCV. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG15 * **Restrinxir credenciais:** só establece CORS se é absolutamente necesario para a interacción específica entre orixes ZXCVFIXVIBETOKEN1ZXCV. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG16 * **Utiliza a validación adecuada:** Se debes admitir varias orixes, asegúrate de que a lóxica de validación para a cabeceira CORS é sólida e que non se pode ignorar por subdominios ou dominios de aspecto similar ZXCVFIXVIBETOKEN1ZXCV. ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG17 ## Como proba CORS para iso ZXCVFIXVIBESEXEEND ZXCVFIXVIBESEG18 ZXCVFIXVIBETOKEN1ZXCV agora inclúe isto como verificación activa activa. Despois da verificación do dominio, CORS envía solicitudes ZXCVFIXVIBETOKEN2ZXCV da mesma orixe cunha orixe de atacante sintética e revisa as cabeceiras de resposta ZXCVFIXVIBETOKEN4ZXCV. Informa de orixes arbitrarias reflectidas, ZXCVFIXVIBETOKEN5ZXCV con credenciais comodín e ZXCVFIXVIBETOKEN6ZXCV en puntos finais non públicos de ZXCVFIXVIBETOKEN3ZXCV ao tempo que evita o ruído dos activos públicos.

Cross-Origin Resource Sharing (CORS) is a browser mechanism designed to relax the Same-Origin Policy (SOP). While necessary for modern web apps, improper implementation—such as echoing the requester's Origin header or whitelisting the 'null' origin—can allow malicious sites to exfiltrate private user data.

CWE-942

Impact

An attacker can steal sensitive, authenticated data from users of a vulnerable application [S2]. If a user visits a malicious website while logged into the vulnerable app, the malicious site can make cross-origin requests to the app's API and read the responses [S1][S2]. This can lead to the theft of private information, including user profiles, CSRF tokens, or private messages [S2].

Root Cause

CORS is an HTTP-header based mechanism that allows servers to specify which origins (domain, scheme, or port) are permitted to load resources [S1]. Vulnerabilities typically arise when a server's CORS policy is too flexible or poorly implemented [S2]:

  • Reflected Origin Header: Some servers read the Origin header from a client request and echo it back in the Access-Control-Allow-Origin (ACAO) response header [S2]. This effectively allows any website to access the resource [S2].
  • Misconfigured Wildcards: While the * wildcard allows any origin to access a resource, it cannot be used for requests that require credentials (like cookies or Authorization headers) [S3]. Developers often try to bypass this by dynamically generating the ACAO header based on the request [S2].
  • Whitelisting 'null': Some applications whitelist the null origin, which can be triggered by redirected requests or local files, allowing malicious sites to masquerade as a null origin to gain access [S2][S3].
  • Parsing Errors: Mistakes in regex or string matching when validating the Origin header can allow attackers to use domains like trusted-domain.com.attacker.com [S2].

It is important to note that CORS is not a protection against Cross-Site Request Forgery (CSRF) [S2].

Concrete Fixes

  • Use a Static Whitelist: Avoid dynamically generating the Access-Control-Allow-Origin header from the request's Origin header [S2]. Instead, compare the request's origin against a hardcoded list of trusted domains [S3].
  • Avoid the 'null' Origin: Never include null in your whitelist of allowed origins [S2].
  • Restrict Credentials: Only set Access-Control-Allow-Credentials: true if absolutely necessary for the specific cross-origin interaction [S3].
  • Use Proper Validation: If you must support multiple origins, ensure the validation logic for the Origin header is robust and cannot be bypassed by subdomains or similar-looking domains [S2].

How FixVibe tests for it

FixVibe now includes this as a gated active check. After domain verification, active.cors sends same-origin API requests with a synthetic attacker origin and reviews CORS response headers. It reports reflected arbitrary origins, wildcard credentialed CORS, and wide-open CORS on non-public API endpoints while avoiding public asset noise.