Las malas configuraciones CORS pueden crear vulnerabilidades significativas de ciberseguridad en las aplicaciones web. Entender estas malas configuraciones es crucial para tanto los desarrolladores como profesionales de seguridad.
- Null Origin Misconfiguration: Esto ocurre cuando un servidor acepta peticiones de un origen "null". Esto puede pasar en escenarios donde el origen de la petición no sea un entorno estándar de navegador, como
file://. Un atacante puede crear un email de phishing con un link a un archivo HTML que al ser pulsado por la víctima envíe peticiones al servidor, el cual las acepta como origen "null". Los servidores deben estar configurados para validar y no fiarse de origen "null" a no ser que sea explícitamente necesario. - Bad Regex in Origin Checking: Las expresiones regulares mal configuradas en la comprobación de origen pueden resultar en aceptación de peticiones de orígenes no intencionados. Por ejemplo, una regex como
/example.com$/permitiríabadexample.com. Un atacante podría encontrar un dominio que cumpla con la regex y crear un sitio malicioso. Otro ejemplo ocurre con los subdominios, por ejemplo si los dominios que empiezan conexample.comestán permitidos,example.com.attacker123.comes permitido. - Trusting Arbitrary Supplied Origin: Algunos servidores están configurados para replicar con el valor
Originen el headerAccess-Control-Allow-Origin, permitiendo así cualquier origen. Un atacante puede crear una petición HTTP con un origen controlado. Como el servidor hace echo del origen, el sitio del atacante puede bypassear las restricciones SOP. En lugar de hacer echo a los orígenes, mantén una lista de orígenes permitidos y valídalos contra ella.
Manejo Seguro de Comprobación de Orígenes

La tabla de flujo superior muestra un acercamiento seguro para manejar peticiones CORS. Primero comprueba si el origen es "null" y rechaza dichas peticiones. Si no, comprueba si el origen está predefinido en la lista. Si lo está, el server configura Access-Control-Allow-Origin al origen y procede con la petición. Si no, rechaza la petición.
