mediumCWE-358A05:2021

Falta el Header Content-Security-Policy

El header Content-Security-Policy (CSP) está ausente, dejando a los navegadores sin instrucciones sobre qué fuentes de scripts, estilos y recursos confiar.

Cómo Funciona

Sin CSP, si un atacante inyecta un script malicioso en tu página (via XSS), el navegador lo ejecutará sin cuestionar. CSP es una allowlist que el navegador enforce y bloquea scripts de orígenes inesperados, ejecución de scripts inline y trucos con data: URI — es tu última línea de defensa cuando ocurre XSS.

Código Vulnerable
// MAL: sin header CSP en la config de Next.js
// next.config.ts — sin headers() definidos
export default {
  // CSP no configurado
};
Código Seguro
// BIEN: CSP estricto en headers de Next.js
// next.config.ts
const cspHeader = `
  default-src 'self';
  script-src 'self' 'nonce-{NONCE}';
  style-src 'self' 'unsafe-inline';
  img-src 'self' data: https:;
  connect-src 'self';
  frame-ancestors 'none';
`;
export default {
  async headers() {
    return [{ source: '/(.*)', headers: [{ key: 'Content-Security-Policy', value: cspHeader }] }];
  }
};

Ejemplo Real

British Airways (2018) — los atacantes inyectaron 22 líneas de JavaScript en la página de pago. Un CSP estricto habría bloqueado la carga del script malicioso. El breach comprometió 500,000 clientes y resultó en una multa de £20 millones.

Cómo Prevenirlo

  • Agrega el header Content-Security-Policy a todas las respuestas via headers() de Next.js o config de nginx
  • Empieza en modo report-only (Content-Security-Policy-Report-Only) para probar sin romper nada
  • Usa nonces para scripts inline en lugar de 'unsafe-inline'
  • Prueba tu CSP en csp-evaluator.withgoogle.com

Tecnologías Afectadas

Next.jsnodejsnginxapache

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas