FT-011 · Security Misconfiguration
Política CSP demasiado permisiva
www.acme.test
IMPACTO
Qué puede ocurrir
La política permite scripts en línea y orígenes amplios, de modo que una futura inyección de contenido se ejecutaría sin barrera preventiva.
REPRODUCCIÓN
Prueba de concepto paso a paso
- 01
Leer las cabeceras de seguridad
La política declara unsafe-inline y un comodín en las fuentes de script.
curl -sI https://www.acme.test/ | grep -i 'content-security-policy'
- 02
Contrastar con un evaluador
La política no supera el nivel recomendado por falta de nonces y por permitir código en línea.
curl -s https://csp-evaluator.withgoogle.com/ >/dev/null # evaluación manual de la cadena obtenida en el paso anterior
- 03
Comprobar el efecto en una página de prueba
Un script en línea insertado en el entorno de preproducción se ejecuta sin bloqueo. No se introduce contenido en producción.
Ejecutado dentro de la ventana autorizada, con cuentas creadas para el ejercicio y sin extraer datos reales. Las credenciales aparecen siempre redactadas.
EVIDENCIA SANITIZADA
Cabecera observada
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://*.cdn.example; style-src 'self' 'unsafe-inline'
REMEDIACIÓN
Política con nonce por respuesta
Eliminar unsafe-inline, emitir un nonce por respuesta, restringir los orígenes autorizados y vigilar las violaciones con report-to.
const nonce = crypto.randomUUID();
headers.set(
"content-security-policy",
`default-src 'self'; script-src 'self' 'nonce-${nonce}'; style-src 'self'; object-src 'none'; base-uri 'none'`
);CLASIFICACIÓN
Ficha del hallazgo
- Severidad
- Baja
- CVSS v3.1
- 3.7
- CWE
- CWE-693
- OWASP
- A05:2021 · Security Misconfiguration
- Validación
- Publicado · manual
- Activo
- www.acme.test
VECTOR
AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N
REFERENCIAS