Saltar al contenido
sobolewski.proLa IA de hoy, cada tardeSuscribirme

Una vez al día. Date de baja con un clic. Política de privacidad

Vulnerabilidad en ChatGPT: bastaba un enlace para robar la cuenta

Una vulnerabilidad en ChatGPT permitía robar cuentas con un enlace público a un chat y leer chats ajenos. OpenAI pagó 5000 USD. Así funcionaba el ataque.

4 min de lectura

Este artículo en otros idiomas:العربيةDeutschEnglishFrançaisItaliano日本語Polski简体中文

En este artículo
  1. Cómo funcionaba la vulnerabilidad en ChatGPT
  2. ¿Qué podía hacer exactamente el atacante?
  3. ¿Cómo reaccionó OpenAI?
  4. ¿Por qué se habla tanto de esto?
  5. ¿Qué tener en cuenta de cara al futuro?
  6. FAQ

El 28 de octubre, Mukul Goyal, de Parameter, publicó la descripción de una vulnerabilidad en ChatGPT que permitía hacerse con una cuenta mediante un simple enlace público a una conversación (chatgpt.com/share/…). El código del atacante se ejecutaba en la sesión iniciada de quien abría el enlace. OpenAI cerró el reporte el 26 de octubre y pagó 5000 USD a través de su programa de bug bounty.

Cómo funcionaba la vulnerabilidad en ChatGPT

El ataque es una cadena de cuatro fallos (según los describen los investigadores):

  1. Un gráfico interactivo de la conversación cargaba MathLive, una biblioteca de código abierto para escribir fórmulas matemáticas. La biblioteca aceptaba mensajes entre marcos de la página de cualquier remitente, sin comprobar quién los enviaba.
  2. Los datos de la distribución de teclado de MathLive podían incluir HTML, que la biblioteca insertaba en la página principal sin filtrar.
  3. Ese HTML creaba un iframe sin el atributo sandbox, así que el nuevo documento heredaba el origen chatgpt.com.
  4. La Content Security Policy de ChatGPT bloqueaba los scripts inline, pero permitía YouTube. El endpoint oEmbed de YouTube admitía un callback al estilo JSONP, lo que permitió a los investigadores cargar su propio código desde un dominio permitido.

En la práctica, el atacante publicaba una conversación de aspecto normal. Al principio tenía un gráfico real (para cargar MathLive) y, más abajo, una vista previa HTML, es decir, la función Preview, que convierte un bloque de código HTML en una pequeña página funcional. Era esa vista previa la que enviaba los mensajes maliciosos a la biblioteca.

Según los investigadores, abrir el enlace compartido era la única acción necesaria. En la versión más estable, la víctima hacía clic una vez en Preview. En una posterior, la vista previa se abría sola y la prueba de ejecución de código aparecía al cabo de unos 4,5 segundos.

¿Qué podía hacer exactamente el atacante?

El código se ejecutaba como chatgpt.com en la sesión de la víctima, así que podía llamar a la API autenticada de ChatGPT en su nombre. En su prueba de concepto, los investigadores obtuvieron la lista de conversaciones recientes, después el contenido de una conversación privada que nadie les había compartido, y enviaron un pequeño fragmento a su servidor.

Según la publicación, de este modo podían realizar prácticamente cualquier acción en la cuenta de la víctima («Essentially, we could perform any action on behalf of the victim’s ChatGPT account»). El ataque también funcionaba entre cuentas y workspaces distintos.

¿Cómo reaccionó OpenAI?

La cronología de la publicación de Parameter:

  1. 13 de octubre: los investigadores confirman la ruta vulnerable de MathLive en el código de producción.
  2. 18 de octubre: reportan el fallo al programa de bug bounty de OpenAI.
  3. 21 de octubre: OpenAI reproduce el error y sube su prioridad de P2 a P1.
  4. 22 de octubre: la corrección llega a uno de los dos frontends web, y el 23 de octubre unos cambios en la CSP bloquean parte de la cadena.
  5. 26 de octubre: ambos frontends rechazan los mensajes usados en el ataque, se cierra el reporte y los investigadores reciben la recompensa.

La publicación no menciona que la vulnerabilidad se haya explotado en ataques reales. Tampoco explica qué cambió exactamente OpenAI en el código.

¿Por qué se habla tanto de esto?

Primero, por lo sencillo del ataque. El enlace parecía uno más de los chats compartidos de ChatGPT, así que revisar la URL no habría servido de nada.

Segundo, por la recompensa. La publicación llegó a la portada de Hacker News y en los comentarios lo que más se repite es la cifra: a muchos les parecen pocos 5000 USD por robar una cuenta con un enlace, y algunos temen que unos pagos tan bajos desanimen a los investigadores a reportar fallos.

Tercero, por el origen del problema. Curiosamente, toda la cadena empezaba en una biblioteca para escribir fórmulas matemáticas (de ahí el título de la publicación, «Do the Math»). Cuantos más extras interactivos tiene un chat – gráficos, vistas previas de páginas –, más puntos donde algo puede salir mal. Y las conversaciones compartidas ya habían dado problemas antes: como sabemos, en la filtración de Meta Muse los títulos de los chats compartidos acabaron en el DNS público.

¿Qué tener en cuenta de cara al futuro?

Los investigadores señalan dos lecciones para quienes desarrollan aplicaciones web:

  1. Quien recibe mensajes entre marcos debe comprobar tanto el origen del remitente como la ventana exacta a la que dio permisos.
  2. La CSP debe ser una defensa de respaldo, no la única barrera cuando el HTML del atacante ya está en la página.

Para nosotros, como usuarios, esta vulnerabilidad ya está corregida. Aun así, conviene recordar que un enlace a la conversación de otra persona con un chatbot sigue siendo un enlace de un desconocido. Explico más sobre cómo proteger cuentas y claves de API en mi guía de seguridad de agentes de IA.

FAQ

¿Ya está corregida la vulnerabilidad en ChatGPT?

Sí. Según los investigadores, OpenAI confirmó el 26 de octubre que los dos frontends web de ChatGPT rechazan los mensajes usados en el ataque.

¿Tengo que hacer algo con mi cuenta?

La publicación de Parameter no indica ningún paso para los usuarios ni menciona ataques fuera de las pruebas de los investigadores.

¿Cuánto pagó OpenAI por el reporte?

5000 USD dentro de su programa de bug bounty. El reporte recibió prioridad P1.

¿De verdad bastaba con abrir el enlace?

Según los investigadores, sí. En una versión del ataque había que hacer clic una vez en Preview; en otra posterior, la vista previa se abría sola.

  • IA
  • seguridad
  • OpenAI

La IA de hoy, cada tarde

Cada tarde, las noticias de IA más importantes del día y los nuevos artículos del blog. Breve y con fuentes.

Una vez al día. Date de baja con un clic. Política de privacidad