
Aviso de divulgação responsável para CVE-2026-79294, um XSS armazenado no Preview de artefato HTML do Moonshot AI Kimi através da visualização pública de Share, permitindo roubo de token de sessão e tomada de conta.
CVE-2026-79294 — XSS Armazenado na Pré-visualização de artefato HTML do Moonshot AI Kimi, entregue através da visualização pública de Compartilhamento, levando à exfiltração de token de sessão e à demonstração de tomada de conta. Aviso de divulgação responsável.
XSS Armazenado na Pré-visualização de artefato HTML do Moonshot AI Kimi, acessível através da visualização pública de Compartilhamento, levando ao roubo de token de sessão e à tomada de conta.
| Fornecedor / produto | Moonshot AI — Kimi |
| Componentes | Renderização da Pré-visualização de artefato HTML; visualização pública de Compartilhamento |
| Fraqueza | CWE-79 — Neutralização Incorreta de Entrada Durante a Geração de Página Web |
O Kimi renderiza artefatos HTML gerados pelo modelo em um painel de Pré-visualização dentro da própria origem da aplicação, sem neutralizar scripts. Compartilhar uma conversa publica esse artefato em uma URL pública de Compartilhamento, então o script criado por uma conta é executado no navegador de qualquer pessoa que abra o link.
Os valores de sessão dos quais o Kimi depende são mantidos em localStorage e, portanto, são legíveis por
esse script:
access_token
refresh_token
msh_user_id
A execução do script, consequentemente, não para na execução do script. Esses três valores podem ser lidos do navegador de uma vítima, enviados para qualquer lugar e reproduzidos para obter uma sessão autenticada como essa vítima.
conta do atacante → artefato contendo script de exfiltração → Compartilhamento público
→ vítima abre o link → script é executado na origem do Kimi
→ os três valores do localStorage chegam ao atacante
→ reproduzidos em um navegador limpo → autenticado como a vítima
Um atacante precisa de uma conta comum. A vítima precisa apenas abrir um link de compartilhamento enquanto está conectada — que é exatamente para isso que servem os links de compartilhamento.
| Observado | Como |
|---|---|
| O script é executado no navegador da vítima | Uma requisição chegou ao endpoint do atacante, originada da sessão da vítima |
| Os três valores são legíveis por script | Todos os três estavam presentes no corpo dessa requisição |
| Os valores autenticam por conta própria | Inseridos em um navegador que nunca havia se conectado ao Kimi; após recarregar, esse navegador mantinha uma sessão autenticada |
| Os valores são a causa | Controle: mesmo navegador, valores omitidos, recarregar — permaneceu não autenticado |
Ambas as contas envolvidas foram criadas e controladas pelo pesquisador. Nenhum dado de terceiros foi acessado em momento algum.
A cadeia está documentada acima na íntegra. O payload funcional e o endpoint receptor são omitidos — publicá-los armaria o ataque em vez de descrevê-lo.
O prompt do artefato assume a forma:
Generate an HTML page that reads the three localStorage values above
and POSTs them to <attacker endpoint>.