Chaindesk 是一个用于构建 AI 智能体的 Web 应用程序,其智能体聊天组件存在存储型跨站脚本(XSS)漏洞。攻击者可以通过构造 AI 智能体并使其系统提示词指示底层大语言模型(LLM)在聊天响应中嵌入恶意脚本载荷(例如基于 SVG 的 XSS),从而在客户端执行任意脚本。当用户与这类恶意智能体交互,或访问包含 XSS 载荷的会话直接链接时,脚本会在用户浏览器中执行。成功利用该漏洞可导致敏感信息(如 JWT 会话令牌)被窃取,进而可能造成账户劫持。会话 URL 结构(https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID>)中还存在不安全直接对象引用(IDOR)漏洞,这便于分发这些恶意会话链接,并可能造成未经授权访问其他聊天会话的风险。
Chaindesk 的 AI 智能体聊天功能容易受到存储型跨站脚本(XSS)漏洞的影响。该漏洞影响通过 https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID> 等 URL 访问的用户交互和会话显示。
利用此 XSS 的主要方式是攻击者创建一个带有精心构造的系统提示词的 AI 智能体。该恶意提示词指示集成的 LLM(大语言模型)生成包含嵌入式 SVG XSS 载荷的响应。因此,当受害者与这个被入侵/恶意构造的智能体进行聊天时,载荷会被受害者的浏览器渲染,从而导致客户端脚本执行。该技术有效地利用智能体的配置来存储和传递 XSS 载荷。在受害者会话中执行任意 JavaScript 代码后,攻击者可以窃取敏感数据,尤其是 JWT 令牌,并进而用于账户劫持。图 1 展示了用户与恶意智能体交流后的 UI 渲染情况,它泄露了用户的会话和令牌。

此外,该应用在会话 URL 的处理方式上还存在不安全直接对象引用(IDOR)漏洞(也可归类为访问控制失效/Broken Access Control)。端点 https://app.chaindesk.ai/agents/<agentID>?tab=chat&conversationId=<conversationID> 主要依赖 agentID 和 conversationID 参数来显示聊天内容,并且显然缺乏充分的访问控制检查。该 IDOR 漏洞允许攻击者:a) 构造并分发指向其所控制的、包含 XSS 载荷(通过上述 LLM 方式传递,或以其他方式嵌入)的会话的直接链接。当受害者访问此类 URL 时,XSS 载荷会执行。b) 如果能够识别有效的 agentID 和 conversationID 组合,则有可能访问其他用户的会话。不过,最初的报告指出,conversationID 的值可能不容易猜测,因此难以大规模未经授权访问已有的、无关的会话。尽管如此,IDOR 在向目标受害者传递 XSS 载荷方面的利用价值仍然是一个严重问题。图 2 展示了 IDOR 漏洞的 POC。

该漏洞可能影响 https://www.chaindesk.ai 的任何用户。用户与公开的恶意智能体进行交流时,其 cookie(包含会话和令牌)将被窃取。