
Avviso di responsible-disclosure per CVE-2026-79294, un XSS memorizzato nell'anteprima degli artefatti HTML di Moonshot AI Kimi tramite la vista Share pubblica che consente il furto del token di sessione e il takeover dell'account.
CVE-2026-79294 — XSS memorizzato nell'anteprima degli artefatti HTML di Moonshot AI Kimi, veicolato tramite la vista Share pubblica, che porta all'esfiltrazione del token di sessione e alla dimostrazione della compromissione dell'account. Avviso di divulgazione responsabile.
| Fornitore / prodotto | Moonshot AI — Kimi |
| Componenti | Rendering dell'anteprima degli artefatti HTML; vista Share pubblica |
| Debolezza | CWE-79 — Neutralizzazione impropria dell'input durante la generazione di pagine web |
Kimi esegue il rendering degli artefatti HTML generati dal modello in un riquadro di anteprima all'interno dell'origine dell'applicazione stessa, senza neutralizzare gli script. La condivisione di una conversazione pubblica quell'artefatto a un URL Share pubblico, quindi lo script creato da un account viene eseguito nel browser di chiunque apra il link.
I valori di sessione su cui Kimi fa affidamento sono conservati in localStorage e sono quindi leggibili da
tale script:
access_token
refresh_token
msh_user_id
L'esecuzione dello script, di conseguenza, non si ferma all'esecuzione dello script. Questi tre valori possono essere letti dal browser di una vittima, inviati ovunque e riprodotti per ottenere una sessione autenticata come quella vittima.
account dell'attaccante → artefatto contenente lo script di esfiltrazione → Share pubblico
→ la vittima apre il link → lo script viene eseguito nell'origine di Kimi
→ i tre valori di localStorage raggiungono l'attaccante
→ riprodotti in un browser pulito → autenticazione come la vittima
Un attaccante necessita di un account ordinario. La vittima deve solo aprire un link di condivisione mentre è autenticata — che è esattamente lo scopo dei link di condivisione.
| Osservato | Come |
|---|---|
| Lo script viene eseguito nel browser della vittima | Una richiesta ha raggiunto l'endpoint dell'attaccante, proveniente dalla sessione della vittima |
| I tre valori sono leggibili dagli script | Tutti e tre erano presenti nel corpo di quella richiesta |
| I valori autenticano da soli | Inseriti in un browser che non aveva mai effettuato l'accesso a Kimi; dopo il ricaricamento, quel browser manteneva una sessione autenticata |
| I valori sono la causa | Controllo: stesso browser, valori omessi, ricaricamento — è rimasto non autenticato |
Entrambi gli account coinvolti sono stati creati e controllati dal ricercatore. In nessun momento sono stati acceduti dati di terze parti.
La catena è documentata integralmente sopra. Il payload funzionante e l'endpoint ricevente sono omessi — pubblicarli armerebbe l'attacco anziché descriverlo.
Il prompt dell'artefatto assume la forma:
Generate an HTML page that reads the three localStorage values above
and POSTs them to <attacker endpoint>.