Un equipo de investigación en Parameter.ai identificó un fallo de seguridad crítico en la plataforma ChatGPT de OpenAI que permitía la toma de control total de una cuenta a través de un enlace de compartir público. La vulnerabilidad surgió de una combinación de tres funciones aparentemente inofensivas: un gráfico interactivo relacionado con matemáticas, una herramienta de vista previa de HTML y una configuración específica de la Política de Seguridad de Contenido (CSP). Al crear una conversación maliciosa y compartirla públicamente, un atacante podía engañar a un usuario con sesión iniciada para que ejecutara código que corría con los mismos permisos que la propia sesión web del usuario, otorgando efectivamente al atacante acceso a las APIs autenticadas del usuario.

Esta imagen ilustra cómo se aprovechó la función de compartir público para inyectar contenido malicioso en la sesión del usuario.
El mecanismo técnico dependía de un 'escape de sandbox' que involucraba una biblioteca matemática llamada MathLive. Aunque la función Preview de ChatGPT normalmente aísla el código en un marco restringido, la biblioteca MathLive instaló un escuchador en la página principal de ChatGPT para manejar mensajes de un teclado en pantalla. Debido a que el escuchador no verificaba el origen de los mensajes entrantes, el marco Preview aislado podía enviar un `postMessage` a la página principal. Este mensaje instruía a la página principal para renderizar un nuevo diseño de teclado que contenía HTML sin procesar. Los investigadores descubrieron que el ayudante `createHTML` de la página principal no sanitizaba esta entrada, permitiendo la inyección de un `iframe` con un atributo `srcdoc`. Debido a que la página principal creaba este marco, el navegador le otorgaba la identidad de `chatgpt.com`, eludiendo el aislamiento estándar de la herramienta Preview.
Para eludir la Política de Seguridad de Contenido del sitio, que bloqueaba los scripts en línea, los investigadores utilizaron una respuesta de tipo callback JSONP desde el punto de conexión oEmbed de YouTube. Dado que la CSP de ChatGPT permitía scripts de YouTube, los investigadores utilizaron un callback especialmente diseñado para ejecutar JavaScript arbitrario dentro del marco recién creado. Una vez lograda la ejecución, el equipo demostró que podía llamar a las APIs de backend de ChatGPT para enumerar las conversaciones recientes de una víctima y recuperar el contenido de chats privados que nunca habían sido compartidos. OpenAI abordó el problema actualizando su interfaz web para rechazar los mensajes entre marcos y clasificó el informe como un error de severidad P1 (prioridad alta). Los investigadores señalaron que el error fue resultado de la complejidad del sistema, donde los componentes individuales funcionaban correctamente de forma aislada pero creaban una ruta peligrosa cuando se combinaban en una sola página.

Esta imagen proporciona una prueba visual de la capacidad de los investigadores para recuperar contenido de chats privados utilizando la vulnerabilidad descubierta.