Los enlaces compartidos de ChatGPT permitían la ejecución de código en sesiones de usuario
Investigadores descubrieron una vulnerabilidad en los enlaces compartidos de ChatGPT que permitía a atacantes ejecutar código y leer chats privados. OpenAI corrigió el fallo en ocho días.
Traducido automáticamente del original en inglés.
Investigadores de seguridad de Parameter descubrieron una vulnerabilidad crítica en ChatGPT que permitía ejecutar código malicioso dentro de la sesión iniciada de una víctima mediante un enlace de conversación compartida. El fallo, reportado el 18 de octubre de 2026, habilitaba a los atacantes para acceder a chats privados y realizar acciones en nombre del usuario. OpenAI clasificó el problema con severidad P1 y desplegó una corrección antes del 26 de octubre.
Qué ocurrió
El vector de ataque se basaba en la función estándar de ChatGPT que permite a los usuarios compartir conversaciones mediante enlaces públicos. Un atacante podía crear una conversación específica con elementos maliciosos y compartirla por correo electrónico, redes sociales o tickets de soporte. Cuando la víctima abría este enlace, no necesitaba instalar software ni iniciar sesión nuevamente; el exploit apuntaba a su sesión autenticada existente. En la prueba de concepto inicial, la víctima debía hacer clic una vez en el botón Preview (Vista previa). Una versión refinada automatizaba este paso, requiriendo únicamente que la víctima abriera el enlace.
Una vez activado, el código del atacante se ejecutaba con los mismos privilegios que la interfaz legítima de ChatGPT. Esto permitía al script malicioso llamar directamente a las APIs de sesión iniciada, listar conversaciones recientes y abrir chats privados que nunca habían sido compartidos. Los investigadores demostraron que podían exfiltrar partes de estas discusiones privadas hacia un servidor externo. Dado que el código operaba dentro del contexto completo de acceso web de la víctima, sus capacidades iban más allá de simplemente leer el historial de chat, extendiéndose a realizar cualquier acción que el titular de la cuenta pudiera ejecutar.
Parameter realizó este trabajo como una prueba controlada entre cuentas separadas y no reportó evidencia de explotación en el mundo real. Presentaron sus hallazgos a través del programa de bug bounty de OpenAI. Inicialmente, OpenAI calificó la severidad como P2, pero la elevó a P1 tras reproducir el exploit. La empresa pagó un total de $5,000 por el informe y desplegó correcciones en dos versiones de su frontend web.
Cómo funciona
La vulnerabilidad surgió de la interacción entre tres funciones distintas: el sandbox de Preview, la biblioteca MathLive y la mensajería entre frames. ChatGPT utiliza un frame aislado (sandbox) en un dominio separado para renderizar vistas previas HTML, impidiendo que accedan al estado principal de la aplicación. Este aislamiento funcionaba correctamente por sí solo. Sin embargo, el chat compartido también incluía un gráfico interactivo que cargaba MathLive, una biblioteca matemática, en la página principal.
MathLive incluye un listener (oyente) para mensajes relacionados con su teclado en pantalla. Parameter encontró que este listener aceptaba mensajes de cualquier remitente sin verificar el origen de la fuente. Crucialmente, se permitía que estos mensajes llevaran datos HTML crudos destinados a la personalización del diseño del teclado. El frame malicioso de Preview explotaba esto enviando un mensaje elaborado con HTML controlado por el atacante al listener de MathLive en la página principal.
Este HTML creaba un nuevo frame que el navegador trataba como parte del dominio confiable chatgpt.com, evadiendo el sandbox. Para ejecutar la carga final, los atacantes aprovecharon scripts de YouTube, que estaban en la lista blanca de la política de seguridad de contenido de ChatGPT. Aunque el código inline estaba bloqueado, los scripts de dominios permitidos como YouTube podían ejecutarse dentro de este nuevo frame confiable creado, dando al atacante control total sobre la sesión.
Detalles clave
- La vulnerabilidad fue reportada el 18 de octubre de 2026 y corregida el 26 de octubre de 2026.
- OpenAI calificó el problema como P1, su categoría de mayor severidad, después de clasificarlo inicialmente como P2.
- El ataque no requería instalación por parte del usuario ni pasos adicionales de inicio de sesión más allá de abrir un enlace compartido.
- La explotación dependía de que MathLive aceptara mensajes entre frames no verificados que contenían HTML crudo.
- Los atacantes utilizaron scripts de YouTube en lista blanca para evadir las políticas de seguridad de contenido y ejecutar código.
- Parameter recibió una recompensa de $5,000 por la divulgación responsable del fallo.
Por qué importa
Este incidente destaca los riesgos inherentes a las aplicaciones web complejas que integran bibliotecas de terceros y renderizado dinámico de contenido. Para los ingenieros que construyen interfaces de IA, subraya la importancia de una validación estricta para la comunicación entre frames. Incluso cuando los sandboxes se implementan correctamente, pueden surgir vulnerabilidades debido a cómo interactúan diferentes componentes. La dependencia de bibliotecas externas como MathLive introduce riesgos en la cadena de suministro que deben gestionarse mediante una validación rigurosa de entradas y comprobación de orígenes.
Para los equipos de producto, la velocidad de respuesta de OpenAI demuestra el valor de los programas robustos de bug bounty y protocolos claros de respuesta a incidentes. La capacidad de detectar, reproducir y parchear una vulnerabilidad P1 en ocho días minimiza el daño potencial. Sin embargo, el hecho de que el fallo permitiera la compromisión total de la cuenta sirve como recordatorio de que las funciones compartidas deben diseñarse teniendo en mente los principios de mínimo privilegio, asegurando que los modos de vista previa no puedan escalar privilegios al contexto principal de la aplicación.
Qué puedes hacer
- Verifica que todos los listeners de mensajes entre frames validen el origen de los mensajes entrantes.
- Evita permitir la inyección de HTML crudo a través de payloads de mensajes, incluso para datos de configuración.
- Revisa las políticas de seguridad de contenido para asegurar que solo los dominios necesarios estén en lista blanca para scripts.
- Implementa un sandboxing estricto para todas las vistas previas de contenido generado por el usuario y elementos interactivos.
- Realiza auditorías de seguridad periódicas centradas en las interacciones entre bibliotecas de terceros y la lógica central de la app.
- Fomenta la divulgación responsable manteniendo un programa accesible de bug bounty para tus productos.



