
Proof-of-concept, das gespeichertes XSS und IDOR im Chaindesk-AI-Agenten-Chat demonstriert und so den Diebstahl von Sitzungstokens sowie die Übernahme von Konten ermöglicht.
Chaindesk, eine Webanwendung zur Erstellung von KI-Agenten, ist in seiner Chat-Komponente für Agenten anfällig für gespeichertes Cross-Site Scripting (XSS). Ein Angreifer kann beliebige clientseitige Skriptausführung erreichen, indem er einen KI-Agenten erstellt, dessen System-Prompt das zugrunde liegende Large Language Model (LLM) anweist, bösartige Skript-Payloads (z. B. SVG-basiertes XSS) in seine Chat-Antworten einzubetten. Wenn ein Benutzer mit einem solchen bösartigen Agenten interagiert oder einen direkten Link zu einer Konversation mit einer XSS-Payload aufruft, wird das Skript im Browser des Benutzers ausgeführt. Eine erfolgreiche Ausnutzung kann zum Diebstahl sensibler Informationen wie JWT-Sitzungstokens führen und möglicherweise eine Kontopiraterie ermöglichen. Eine Schwachstelle durch unsichere direkte Objektreferenz (Insecure Direct Object Reference, IDOR) in der Konversations-URL-Struktur (https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID>) erleichtert die Verbreitung dieser bösartigen Konversationslinks und kann zudem ein Risiko für unbefugten Zugriff auf andere Chat-Sitzungen darstellen.
Chaindesk ist anfällig für eine Schwachstelle durch gespeichertes Cross-Site Scripting (XSS) in der Chat-Funktionalität seiner KI-Agenten. Diese Schwachstelle betrifft Benutzerinteraktionen und die Anzeige von Konversationen, auf die über URLs wie https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID> zugegriffen wird.
Die primäre Methode zur Ausnutzung dieser XSS-Schwachstelle besteht darin, dass ein Angreifer einen KI-Agenten mit einem manipulierten System-Prompt erstellt. Dieser bösartige Prompt weist das integrierte Large Language Model (LLM) an, Antworten mit einer eingebetteten SVG-XSS-Payload zu erzeugen. Wenn ein Opfer daraufhin mit diesem kompromittierten Agenten chatet, wird die Payload vom Browser des Opfers gerendert, was zur Ausführung von clientseitigem Skript führt. Diese Technik nutzt effektiv die Konfiguration des Agenten, um die XSS-Payload zu speichern und auszuliefern. Die Ausführung beliebigen JavaScript-Codes in der Sitzung des Opfers ermöglicht es dem Angreifer, sensible Daten, insbesondere JWT-Tokens, zu stehlen, die dann für eine Kontopiraterie verwendet werden können. Abbildung 1 zeigt die UI-Darstellung, nachdem der Benutzer mit dem bösartigen Agenten kommuniziert hat; sie gibt die Sitzung und das Token des Benutzers preis.

Darüber hinaus weist die Anwendung eine Schwachstelle durch unsichere direkte Objektreferenz (Insecure Direct Object Reference, IDOR) auf (auch als Broken Access Control klassifizierbar), die die Handhabung von Konversations-URLs betrifft. Der Endpunkt https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID> stützt sich bei der Anzeige von Chat-Inhalten hauptsächlich auf die Parameter agentID und conversationID, offenbar ohne ausreichende Zugriffskontrollprüfungen. Diese IDOR-Schwachstelle ermöglicht es einem Angreifer: a) Direkte URLs zu erstellen und zu verbreiten, die auf von ihm kontrollierte Konversationen verweisen und eine XSS-Payload enthalten (entweder über die oben beschriebene LLM-Methode oder möglicherweise anderweitig eingebettet). Wenn ein Opfer eine solche URL aufruft, wird die XSS-Payload ausgeführt. b) Möglicherweise auf Konversationen anderer Benutzer zuzugreifen, wenn gültige Kombinationen aus agentID und conversationID ermittelt werden können. Der ursprüngliche Bericht weist jedoch darauf hin, dass conversationID-Werte möglicherweise nicht leicht zu erraten sind, um einen breiten unbefugten Zugriff auf bereits bestehende, nicht zusammenhängende Konversationen zu ermöglichen. Dennoch bleibt der Nutzen der IDOR-Schwachstelle für die Zustellung von XSS-Payloads an gezielte Opfer ein erhebliches Problem. Abbildung 2 zeigt den POC der IDOR-Schwachstelle.

Diese Schwachstelle kann sich auf jeden Benutzer von https://www.chaindesk.ai auswirken. Das Cookie (das die Sitzung und das Token enthält) des Benutzers wird gestohlen, wenn er mit einem öffentlichen bösartigen Agenten kommuniziert.