
Responsible-Disclosure-Advisory für CVE-2026-79294, eine gespeicherte XSS-Schwachstelle in der HTML-Artefakt-Vorschau von Moonshot AI Kimi über die öffentliche Share-Ansicht, die Sitzungstoken-Diebstahl und Account-Übernahme ermöglicht.
CVE-2026-79294 — Gespeichertes XSS in der HTML-Artefakt-Vorschau von Moonshot AI Kimi, ausgeliefert über die öffentliche Share-Ansicht, was zur Exfiltration von Sitzungstoken und nachgewiesener Kontoübernahme führt. Responsible-Disclosure-Advisory.
Gespeichertes XSS in der HTML-Artefakt-Vorschau von Moonshot AI Kimi, erreichbar über die öffentliche Share-Ansicht, was zum Diebstahl von Sitzungstoken und zur Kontoübernahme führt.
| Anbieter / Produkt | Moonshot AI — Kimi |
| Komponenten | Rendering der HTML-Artefakt-Vorschau; öffentliche Share-Ansicht |
| Schwachstelle | CWE-79 — Unsachgemäße Neutralisierung von Eingaben bei der Generierung von Webseiten |
Kimi rendert vom Modell generierte HTML-Artefakte in einem Vorschaubereich innerhalb des eigenen Ursprungs der Anwendung, ohne Skripte zu neutralisieren. Das Teilen einer Konversation veröffentlicht dieses Artefakt unter einer öffentlichen Share-URL, sodass ein von einem Konto verfasstes Skript im Browser jedes Nutzers ausgeführt wird, der den Link öffnet.
Die Sitzungswerte, auf die Kimi sich stützt, werden in localStorage gehalten und sind daher für
dieses Skript lesbar:
access_token
refresh_token
msh_user_id
Die Skriptausführung endet folglich nicht bei der Skriptausführung. Diese drei Werte können aus dem Browser eines Opfers ausgelesen, an einen beliebigen Ort gesendet und wiederverwendet werden, um eine authentifizierte Sitzung als dieses Opfer zu erhalten.
Angreiferkonto → Artefakt mit Exfiltrationsskript → öffentliche Share
→ Opfer öffnet den Link → Skript läuft im Ursprung von Kimi
→ die drei localStorage-Werte erreichen den Angreifer
→ in einen sauberen Browser wiedereingespielt → authentifiziert als das Opfer
Ein Angreifer benötigt ein gewöhnliches Konto. Das Opfer muss lediglich einen Share-Link öffnen, während es angemeldet ist — wofür Share-Links schließlich da sind.
| Beobachtet | Wie |
|---|---|
| Skript wird im Browser des Opfers ausgeführt | Eine Anfrage erreichte den Endpunkt des Angreifers, ausgehend von der Sitzung des Opfers |
| Die drei Werte sind für Skripte lesbar | Alle drei waren im Body dieser Anfrage vorhanden |
| Die Werte authentifizieren sich von selbst | In einen Browser geschrieben, der sich nie bei Kimi angemeldet hatte; nach dem Neuladen hielt dieser Browser eine authentifizierte Sitzung |
| Die Werte sind die Ursache | Kontrolle: derselbe Browser, Werte weggelassen, Neuladen — blieb unauthentifiziert |
Beide beteiligten Konten wurden vom Forscher erstellt und kontrolliert. Zu keinem Zeitpunkt wurden Daten Dritter zugegriffen.
Die Kette ist oben vollständig dokumentiert. Die funktionierende Payload und der empfangende Endpunkt werden zurückgehalten — ihre Veröffentlichung würde den Angriff bewaffnen, statt ihn zu beschreiben.
Der Artefakt-Prompt hat die Form:
Generate an HTML page that reads the three localStorage values above
and POSTs them to <attacker endpoint>.