
Preuve de concept démontrant XSS stocké et IDOR dans le chat d'agent IA Chaindesk, permettant le vol de jetons de session et le détournement de compte.
Chaindesk, une application web pour la construction d'agents IA, est vulnérable au Cross-Site Scripting stocké (XSS) dans son composant de chat des agents. Un attaquant peut exécuter du script arbitraire côté client en créant un agent IA dont l'invite système demande au modèle de langage sous-jacent (LLM) d'intégrer des charges utiles de script malveillant (par exemple, XSS basé sur SVG) dans ses réponses de chat. Lorsqu'un utilisateur interagit avec un tel agent malveillant, ou accède à un lien direct vers une conversation contenant une charge utile XSS, le script s'exécute dans le navigateur de l'utilisateur. Une exploitation réussie peut entraîner le vol d'informations sensibles, telles que les jetons de session JWT, pouvant potentiellement conduire au détournement de compte. Une vulnérabilité de référence directe d'objet non sécurisée (IDOR) dans la structure des URL de conversation (https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID>) facilite la distribution de ces liens de conversation malveillants et peut également poser un risque d'accès non autorisé à d'autres sessions de chat.
Chaindesk est susceptible à une vulnérabilité de Cross-Site Scripting stocké (XSS) dans sa fonctionnalité de chat des agents IA. Cette vulnérabilité impacte les interactions utilisateur et les affichages de conversations accessibles via des URL telles que https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID>.
La méthode principale pour exploiter ce XSS implique qu'un attaquant crée un agent IA avec une invite système modifiée. Cette invite malveillante demande au modèle de langage large (LLM) intégré de générer des réponses contenant une charge utile XSS SVG intégrée. Par conséquent, lorsqu'une victime interagit avec cet agent compromis, la charge utile est rendue par le navigateur de la victime, entraînant l'exécution de script côté client. Cette technique utilise efficacement la configuration de l'agent pour stocker et délivrer la charge utile XSS. L'exécution de code JavaScript arbitraire dans la session de la victime permet à l'attaquant de dérober des données sensibles, notamment les jetons JWT, qui peuvent ensuite être utilisés pour le détournement de compte. La Figure 1 montre le rendu de l'interface utilisateur après la communication de l'utilisateur avec un agent malveillant, elle divulgue la session et le jeton de l'utilisateur.

De plus, l'application présente une vulnérabilité de référence directe d'objet non sécurisée (IDOR) (également classifiable comme un contrôle d'accès brisé) concernant la manière dont les URL de conversation sont gérées. Le point d'accès https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID> repose principalement sur les paramètres agentID et conversationID pour afficher le contenu du chat, avec des vérifications de contrôle d'accès apparemment insuffisantes. Cette vulnérabilité IDOR permet à un attaquant de : a) Créer et distribuer des URL directes pointant vers des conversations qu'il contrôle et qui contiennent une charge utile XSS (délivrée via la méthode LLM décrite ci-dessus ou potentiellement intégrée autrement). Lorsqu'une victime accède à une telle URL, la charge utile XSS s'exécute. b) Potentiellement accéder aux conversations d'autres utilisateurs si des combinaisons valides agentID et conversationID peuvent être identifiées. Cependant, le rapport initial indique que les valeurs conversationID peuvent ne pas être facilement devinables pour un accès non autorisé large à des conversations préexistantes sans lien. Néanmoins, l'utilité de l'IDOR pour délivrer des charges utiles XSS à des victimes ciblées reste une préoccupation majeure. La Figure 2 montre la POC de la vulnérabilité IDOR.

Cette vulnérabilité peut avoir un impact sur tout utilisateur de https://www.chaindesk.ai. Le cookie (contenant la session et le jeton) de l'utilisateur sera volé lorsqu'il communique avec un agent malveillant public.