mediumCWE-693A05:2021

Iframe Sin Atributo Sandbox

Contenido de terceros o generado por el usuario cargado en un iframe sin el atributo sandbox, permitiendo que ese contenido ejecute scripts, acceda a cookies del padre y navegue el frame de nivel superior.

Cómo Funciona

Un iframe sin sandbox se ejecuta con las mismas capacidades que tu propio JavaScript. Puede acceder a document.cookie (para cookies no HttpOnly), navegar la ventana padre y hacer requests. El atributo sandbox restringe lo que el iframe puede hacer — un iframe con sandbox y sin permisos adicionales está esencialmente aislado.

Código Vulnerable
// MAL: iframe sin sandbox
<iframe src="https://widget-tercero.com/embed" />
// O con URL provista por el usuario:
<iframe src={urlDelUsuario} />
Código Seguro
// BIEN: sandbox con solo los permisos necesarios
<iframe
  src="https://widget-tercero.com/embed"
  sandbox="allow-scripts allow-same-origin"
  // Solo agrega los permisos que realmente necesitas:
  // allow-forms, allow-popups, allow-modals
/>

Ejemplo Real

Si embedes URLs provistas por el usuario (como una función de 'vista previa') sin sandbox, los usuarios pueden enviar URLs con páginas que intentan navegar tu ventana de nivel superior (window.top.location) o acceder a tus cookies. Esto se explota en phishing y secuestro de sesiones.

Cómo Prevenirlo

  • Siempre agrega el atributo sandbox a iframes que cargan contenido externo o provisto por el usuario
  • Empieza con solo sandbox (sin valores) y agrega solo los permisos que realmente necesitas
  • Nunca agregues allow-same-origin a menos que sea absolutamente necesario — anula el sandboxing para iframes del mismo origen
  • Combina con CSP frame-src para controlar qué orígenes pueden ser enmarcados

Tecnologías Afectadas

ReactNext.jsjavascript

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas