mediumCWE-1021A05:2021

Clickjacking Avanzado

Ausencia de los headers X-Frame-Options y CSP frame-ancestors, combinada con sin lógica de frame-busting en el cliente, dejando la app completamente embebible en iframes maliciosos.

Cómo Funciona

El clickjacking superpone tu app invisible sobre la interfaz falsa del atacante. Las versiones avanzadas encadenan múltiples clics (clickjacking multi-paso) para completar operaciones de múltiples pasos como habilitar apps OAuth, eliminar datos o enviar dinero. Sin CSP frame-ancestors y X-Frame-Options, el navegador no tiene forma de rechazar el embebido.

Código Vulnerable
// MAL: sin ninguna protección contra framing
// next.config.ts sin headers definidos
// Sin X-Frame-Options, sin CSP frame-ancestors
// El cliente tampoco tiene detección de frames
Código Seguro
// BIEN: headers + defensa en profundidad del lado del cliente
// next.config.ts
const headers = [
  { key: 'X-Frame-Options', value: 'DENY' },
  { key: 'Content-Security-Policy', value: "frame-ancestors 'none'" }
];
// JS defensivo opcional (cinturón y tirantes)
if (window.top !== window.self) window.top!.location = window.location.href;

Ejemplo Real

Twitter tuvo una vulnerabilidad de clickjacking (2009) que permitía a los atacantes hacer que los usuarios siguieran cuentas o publicaran tweets sin saberlo. La página de ataque mostraba un juego con botones invisibles de Twitter debajo de los elementos clicables del juego.

Cómo Prevenirlo

  • Configura los headers X-Frame-Options: DENY y CSP frame-ancestors 'none'
  • Agrega frame-busting JavaScript como defensa secundaria solo (los headers son la protección real)
  • Presta especial atención a las páginas de configuración, pago y concesión de permisos
  • Prueba intentando embeber tu sitio en un iframe — debería rechazarlo

Tecnologías Afectadas

Next.jsnodejsjavascript

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas