
Aviso de divulgación responsable para CVE-2026-79294, un XSS almacenado en la vista previa de artefactos HTML de Moonshot AI Kimi a través de la vista pública de Share que permite el robo de tokens de sesión y la toma de control de cuentas.
CVE-2026-79294 — XSS almacenado en la vista previa de artefactos HTML de Moonshot AI Kimi, entregado a través de la vista pública de Compartir, lo que provoca la exfiltración del token de sesión y se demuestra la toma de control de la cuenta. Aviso de divulgación responsable.
| Proveedor / producto | Moonshot AI — Kimi |
| Componentes | Representación de la vista previa de artefactos HTML; vista pública de Compartir |
| Debilidad | CWE-79 — Neutralización incorrecta de la entrada durante la generación de páginas web |
Kimi representa los artefactos HTML generados por el modelo en un panel de vista previa dentro del propio origen de la aplicación, sin neutralizar el script. Compartir una conversación publica ese artefacto en una URL pública de Compartir, por lo que el script creado por una cuenta se ejecuta en el navegador de cualquiera que abra el enlace.
Los valores de sesión en los que se basa Kimi se guardan en localStorage y, por lo tanto, son legibles por ese script:
access_token
refresh_token
msh_user_id
En consecuencia, la ejecución de script no se detiene en la ejecución de script. Esos tres valores pueden leerse del navegador de una víctima, enviarse a cualquier lugar y reutilizarse para obtener una sesión autenticada como esa víctima.
cuenta del atacante → artefacto que contiene el script de exfiltración → Compartir público
→ la víctima abre el enlace → el script se ejecuta en el origen de Kimi
→ los tres valores de localStorage llegan al atacante
→ se reutilizan en un navegador limpio → autenticado como la víctima
Un atacante necesita una cuenta normal. La víctima solo necesita abrir un enlace compartido mientras tiene la sesión iniciada, que es precisamente para lo que sirven los enlaces compartidos.
| Observado | Cómo |
|---|---|
| El script se ejecuta en el navegador de la víctima | Una solicitud llegó al endpoint del atacante, originada desde la sesión de la víctima |
| Los tres valores son legibles por el script | Los tres estaban presentes en el cuerpo de esa solicitud |
| Los valores autentican por sí solos | Se escribieron en un navegador que nunca había iniciado sesión en Kimi; tras recargar, ese navegador mantenía una sesión autenticada |
| Los valores son la causa | Control: mismo navegador, valores omitidos, recarga — permaneció sin autenticar |
Ambas cuentas involucradas fueron creadas y controladas por el investigador. En ningún momento se accedió a datos de terceros.
La cadena está documentada arriba en su totalidad. La carga útil funcional y el endpoint receptor se omiten — publicarlos armaría el ataque en lugar de describirlo.
El prompt del artefacto tiene la forma:
Generate an HTML page that reads the three localStorage values above
and POSTs them to <attacker endpoint>.