lunes, marzo 18, 2024

Cómo robar cuentas de ChatGPT con "Wildcard Web Cache Deception"

Si ayer os hablaba de tres bugs descubiertos en un Bug Bounty de ChatGPT, hoy os traigo otro que salió publicado este mes de Febrero y que habla de cómo robar cuentas de ChatGPT utilizando Wildcard Web Cache Deception , que es más que interesante, y que le valió 6.500 USD al investigador que lo descubrió.
El bug ha sido publicado una vez resuelto, pero es bastante curioso, ya que el problema se encuentra en la implementación que se hacía de la Cache de ChatGPT, y que el investigador explotó para hacer un ataque funcional que permitiera robar las cuentas de cualquier usuario que hiciera clic en un enlace malicioso, para ganarse su Bug Bounty.
Según cuenta en el artículo el propio descubridor del bug, se dio cuenta porque ChatGPT le estaba cachenado una petición cuando había dado a la opción de Share para compartir una conversación. Aunque siguiera actualizando la conversación, esta se quedaba estática en el enlace de compartición, porque todo lo que estuviera bajo /share/ se cacheaba automáticamente una vez visitada esa URL, ya que el servidor estaba usando el HTTP-Header Cf-Cache-Status:HIT en esa URL.
Sabiendo esto, lo siguiente era ver si podía generar una URL que tuviera el Token de autenticación de un usuario, pero bajo la dirección de una URL con el path /share/, y esto es posible porque la cache no es un servidor web que esté procesando la URL, y la está tomando como una dirección para generar un
 

ID
de objeto cacheado, así que si se utilizan %2F o wildcards para construir una URL que el servidor Web sí va a procesar, el servicio de Caché no lo va a hacer.
Una vez comprobado eso, basta con generar la URL correcta para que el usuario entregue su Token de autenticación, pase el proceso de autenticarse (o no), y deje su Token guardado en la caché para poder ser accedido después por el atacante.

En este caso, es necesario que la víctima haga clic en un enlace malicioso, tal y como se muestra en el esquema de ataque, pero es un 1-Click Owned! esquema, muy peligroso, que ChatGPT ya ha corregido, para eliminar este problema.
Al final, no es un problema del LLM, y no podríamos meterlo en ningún esquema del OWASP TOP 10 de LLM Apps & Services, que el problema es la implementación del sistema de compartición, pero es más que interesante cómo funciona este bug.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


No hay comentarios:

Publicar un comentario