OpenAI corrigió una falla de ChatGPT que permitía a quien preparara un enlace compartido manipulado ejecutar código dentro de la sesión web de otra persona y acceder a conversaciones privadas. La investigación fue realizada por Parameter Labs y el problema quedó reparado antes de su divulgación pública.
En una prueba controlada entre cuentas separadas, los investigadores enumeraron chats recientes, abrieron una conversación privada que nunca había sido compartida con la cuenta atacante y enviaron un fragmento a un servidor bajo su control. El código utilizó los permisos de la sesión iniciada en chatgpt.com para consultar información de la cuenta.
La primera reproducción estable exigió pulsar el botón Preview. Parameter después preparó una variante automática que reprodujo tres veces en otra cuenta, incluso tras recargar por completo la página. Solo fue necesario abrir el enlace y esperar unos 4,5 segundos. “Abrir el enlace compartido fue la única acción necesaria”, escribió el investigador Mukul Goyal.
Cómo funcionaba la falla de ChatGPT
La conversación pública preparada para la prueba reunía dos elementos normales de ChatGPT: un gráfico interactivo y una vista previa de HTML. Los enlaces compartidos han planteado otros riesgos de privacidad cuando quedan expuestos en buscadores, pero en este caso el acceso surgió de la interacción entre funciones dentro de la página.
La vista previa se abría en un espacio aislado y no podía leer directamente la página principal de ChatGPT. El gráfico, sin embargo, cargaba MathLive, una biblioteca para mostrar contenido matemático y un teclado virtual. Esa biblioteca instalaba en la página principal un receptor para intercambiar mensajes entre marcos del navegador.

El receptor aceptaba instrucciones sin comprobar de forma adecuada desde qué sitio y ventana llegaban. La vista previa podía enviarle contenido HTML, y MathLive lo insertaba en la página principal. Así se creaba un nuevo marco sin el aislamiento aplicado a la vista previa original.
La política de seguridad de ChatGPT bloqueaba la ejecución directa de código, pero permitía cargar scripts desde YouTube. Los investigadores aprovecharon una respuesta del servicio oEmbed de YouTube para ejecutar JavaScript con la identidad web de chatgpt.com. oEmbed es un servicio utilizado para obtener información que permite insertar contenido de una plataforma en otra página.
Desde esa sesión web, el código llamó a las interfaces internas que utiliza ChatGPT. La prueba obtuvo la lista de conversaciones recientes, recuperó mensajes de un chat privado y realizó una solicitud externa con una pequeña parte de la respuesta. Ese envío se realizó mediante una petición de imagen dirigida al servidor de prueba, un mecanismo que permitió trasladar información fuera de la conversación.
OpenAI corrigió las dos interfaces antes de la divulgación
Parameter envió el reporte al programa de recompensas de OpenAI el 18 de octubre. Según el registro de la firma, la empresa reprodujo la ejecución de JavaScript y el acceso a la conversación privada el 21 de octubre, elevó la clasificación inicial de P2 a P1 y comenzó a desplegar la reparación.
El 26 de octubre, OpenAI confirmó a Parameter que sus dos versiones de la interfaz web rechazaban los mensajes utilizados por la prueba y marcó el caso como resuelto. Parameter publicó su investigación el 28 de octubre. La recompensa total fue de US$5.000.
Parameter identificó tres decisiones que se combinaron en la falla. El receptor aceptaba mensajes sin autenticar al emisor, admitía HTML dentro de la configuración del teclado y permitía que ese contenido creara un documento sin aislamiento. Los investigadores recomendaron comprobar tanto el sitio de origen como la ventana autorizada y mantener las restricciones en los documentos generados a partir de contenido externo.

