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.
// MAL: iframe sin sandbox
<iframe src="https://widget-tercero.com/embed" />
// O con URL provista por el usuario:
<iframe src={urlDelUsuario} />// 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
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
XSS Basado en DOM
highScripts maliciosos ejecutados al leer datos controlados por el atacante de la URL o APIs del navegador y escribirlos en el DOM usando sinks peligrosos como innerHTML o document.write.
XSS Almacenado
highContenido provisto por el usuario guardado en la base de datos sin sanitizar y renderizado en el navegador como HTML, permitiendo inyección de scripts persistente que se ejecuta para cada usuario que ve el contenido.
PostMessage Sin Verificar Origen
mediumHandlers de window.addEventListener('message') que procesan mensajes sin verificar event.origin, permitiendo que cualquier sitio web envíe comandos al handler de mensajes de tu app.
Clickjacking Avanzado
mediumAusencia 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.