Errores de configuración: fallos que no están en el código
Guía en castellano sobre errores de configuración: CORS permisivo, paneles expuestos, subdominios huérfanos y cabeceras ausentes.
Qué es
Muchas vulnerabilidades no vienen de un error de programación, sino de cómo está montado el sistema: un servicio que se dejó abierto, una opción por defecto que nadie cambió o un registro DNS que apunta a algo que ya no existe. El código puede ser perfecto y la aplicación seguir siendo vulnerable.
Ejemplos frecuentes
- Toma de subdominio (subdomain takeover): un subdominio sigue apuntando a un servicio externo (alojamiento, almacenamiento en la nube) que la empresa ya no usa. Si un tercero puede reclamar ese recurso, sirve contenido bajo el dominio de la empresa.
- CORS demasiado permisivo: el servidor refleja cualquier
Originy además permite credenciales, de modo que otra web puede leer respuestas con la sesión del usuario. - Paneles y servicios expuestos: consolas de administración, bases de datos, herramientas de monitorización o depuración accesibles desde Internet.
- Ficheros que no deberían publicarse:
.git, copias de seguridad, ficheros de configuración o listados de directorios. - Almacenamiento en la nube público: contenedores con permisos de lectura o escritura para cualquiera.
- Cabeceras de seguridad ausentes, que solo suelen tener interés si permiten un ataque concreto.
Cómo se busca
- Enumera los subdominios del programa (dentro del alcance) y revisa a dónde apunta cada uno. Los que devuelven errores de servicios externos son candidatos a toma.
- Envía peticiones con un
Originpropio y mira las cabecerasAccess-Control-Allow-OriginyAccess-Control-Allow-Credentialsde la respuesta. - Busca rutas habituales de ficheros sensibles y paneles conocidos.
- Revisa las versiones de los servicios expuestos.
Cómo se evita
- Inventario de dominios y servicios: borrar los registros DNS al retirar un servicio.
- CORS con una lista fija de orígenes permitidos.
- Paneles y servicios internos detrás de una VPN o con control de acceso, nunca abiertos a Internet.
- Revisar los permisos del almacenamiento en la nube y no desplegar ficheros de desarrollo.
Al reportarlo
Demuestra el impacto real, no solo la mala configuración: muchos programas no aceptan reportes de cabeceras ausentes o servicios expuestos si no se muestra qué permiten hacer. En una toma de subdominio, basta con una página inocua que lo pruebe.
Casos reales de Configuración
Ver los 8 →Liberapay: un miembro del equipo enlazaba una cuenta de Twitter caducada que cualquiera podía registrar
El perfil de un miembro del equipo de Liberapay mostraba como "verificada" una cuenta de X/Twitter que ya no existía. Quien la registrase podía hacerse pasar por él ante los donantes.
2 min
AWS Bedrock AgentCore: el CLI creaba roles IAM de Gateway sin protección contra el "confused deputy" entre cuentas
El comando `agentcore gateway create` generaba roles IAM con una política de confianza sin `aws:SourceArn` ni `aws:SourceAccount`, de modo que AgentCore desde otra cuenta podía asumirlos y leer secretos, S3 o invocar Lambdas ajenas.
3 min
AWS CloudWatch: endpoints no productivos permitían comprobar permisos de credenciales robadas sin dejar rastro en CloudTrail
Cuatro endpoints no productivos de CloudWatch aceptaban credenciales IAM normales y respondían distinto según los permisos, pero no registraban nada en CloudTrail. Un atacante podía averiguar en silencio qué podían hacer unas credenciales robadas.
3 min
Un repositorio oficial de AWS enlazaba a un usuario de GitHub abandonado que cualquiera podía registrar
Un repositorio de AWS en GitHub enlazaba a una cuenta cuyo nombre de usuario había quedado libre. El investigador lo registró y pasó a controlar el destino de ese enlace.
2 min
CORS mal configurado en el panel de administración de Myndr: cualquier subdominio podía leer respuestas autenticadas
El panel admin.myndr.net reflejaba cualquier origen *.myndr.net con credenciales permitidas, así que una página en cualquier subdominio podía leer respuestas autenticadas del panel, incluido el nonce anti-CSRF.
2 min
Monero GUI en Windows: carpeta de P2Pool escribible por cualquier usuario permite ejecutar código ajeno
El instalador de Monero GUI para Windows daba control total a todos los usuarios sobre la carpeta p2pool. Un usuario local sin privilegios podía colocar su propio p2pool.exe y la cartera lo ejecutaba al iniciar la minería.
3 min