
Proof-of-concept che dimostra XSS persistente e IDOR nella chat dell'agente AI Chaindesk, consentendo il furto di token di sessione e il dirottamento dell'account.
Chaindesk, un'applicazione web per la costruzione di AI Agents, è vulnerabile a Stored Cross-Site Scripting (XSS) nel suo componente di chat degli agenti. Un attaccante può ottenere l'esecuzione arbitraria di script lato client creando un agente AI il cui prompt di sistema istruisce il Large Language Model (LLM) sottostante a incorporare payload di script malevoli (ad esempio, XSS basato su SVG) nelle risposte della chat. Quando un utente interagisce con un tale agente malevolo, o accede a un collegamento diretto a una conversazione contenente un payload XSS, lo script viene eseguito nel browser dell'utente. Uno sfruttamento riuscito può portare al furto di informazioni sensibili, come i token di sessione JWT, con il potenziale di dirottamento dell'account. Una vulnerabilità Insecure Direct Object Reference (IDOR) nella struttura dell'URL della conversazione (https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID>) facilita la distribuzione di questi collegamenti di conversazione malevoli e potrebbe anche presentare un rischio di accesso non autorizzato ad altre sessioni di chat.
Chaindesk è suscettibile a una vulnerabilità di Stored Cross-Site Scripting (XSS) all'interno della sua funzionalità di chat degli agenti AI. Questa vulnerabilità impatta le interazioni degli utenti e la visualizzazione delle conversazioni accessibili tramite URL come https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID>.
Il metodo principale per sfruttare questa XSS prevede che un attaccante crei un agente AI con un prompt di sistema appositamente realizzato. Questo prompt malevolo istruisce il Large Language Model (LLM) integrato a generare risposte contenenti un payload XSS SVG incorporato. Di conseguenza, quando una vittima interagisce in chat con questo agente compromesso, il payload viene renderizzato dal browser della vittima, portando all'esecuzione di script lato client. Questa tecnica utilizza efficacemente la configurazione dell'agente per archiviare e distribuire il payload XSS. L'esecuzione di codice JavaScript arbitrario nella sessione della vittima consente all'attaccante di rubare dati sensibili, in particolare token JWT, che possono poi essere utilizzati per il dirottamento dell'account. La Figura 1 mostra il rendering dell'interfaccia utente dopo che l'utente comunica con l'agente malevolo, che rivela la sessione e il token dell'utente.

Inoltre, l'applicazione presenta una vulnerabilità Insecure Direct Object Reference (IDOR) (anche classificabile come Broken Access Control) per quanto riguarda la gestione degli URL delle conversazioni. L'endpoint https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID> si basa principalmente sui parametri agentID e conversationID per visualizzare il contenuto della chat, con controlli di accesso apparentemente insufficienti. Questa vulnerabilità IDOR consente a un attaccante di: a) Creare e distribuire URL diretti che puntano a conversazioni da lui controllate contenenti un payload XSS (distribuito tramite il metodo LLM descritto sopra o potenzialmente incorporato in altro modo). Quando una vittima accede a tale URL, il payload XSS viene eseguito. b) Potenzialmente accedere alle conversazioni di altri utenti se combinazioni valide di agentID e conversationID possono essere identificate. Tuttavia, il rapporto iniziale indica che i valori di conversationID potrebbero non essere facilmente indovinabili per un accesso non autorizzato esteso a conversazioni preesistenti e non correlate. Ciononostante, l'utilità dell'IDOR nella distribuzione di payload XSS a vittime mirate rimane una preoccupazione significativa. La Figura 2 mostra il POC della vulnerabilità IDOR.

Questa vulnerabilità può avere un impatto su qualsiasi utente di https://www.chaindesk.ai. Il cookie (che contiene la sessione e il token) dell'utente verrà rubato quando comunica con un agente malevolo pubblico.