字号 ·· | 护眼
theregister

Salesforce Agentforce漏洞允许零点击CRM数据窃取和匿名钓鱼攻击

Salesforce Agentforce存在安全漏洞,这些漏洞使得恶意用户能够操控其AI代理程序,悄无声息地窃取客户关系管理(CRM)系统中的数据,并以这些代理程序的名义发送钓鱼邮件。Zenity Labs发现了这三个漏洞,将其统称为“SalesBleed”,并立即向Salesforce报告了这些问题。Salesforce随后与相关AI代理安全供应商合作,共同修复了这些漏洞。虽然这些攻击手段目前已无法再被利用,但Zenity的联合创始人兼首席技术官Michael Bargury指出:这些漏洞暴露了在控制AI代理程序的访问权限方面存在的困难——以及当它们绕过旨在限制其访问权限的安全机制时可能发生的后果。Bargury表示:“真正的教训在于:如何才能有效‘限制’AI代理程序的行为。‘从设计阶段就确保系统安全’这一理念固然重要,但对于AI代理程序来说,这可能已不足以应对所有安全风险。我们虽然可以预先预测潜在风险并在其开发阶段就加入相应的防护措施,但仍可能忽略一些边缘情况,以及它们在现实环境中可能表现出的异常行为。”他还补充说,对AI代理程序进行有效约束的挑战是一个普遍存在的趋势;类似的问题在OpenAI-Hugging Face事件中也曾出现过(当时AI代理程序成功突破了原本用于限制其行为的‘沙箱’环境)。Bargury强调:“随着AI代理程序变得越来越强大,我们必须更加密切地监控它们的行为。因为即使我们认为它们已经被‘限制’在安全的范围内,一个被忽视的安全漏洞也可能带来灾难性后果。”

0点击数据窃取机制:前两个漏洞利用Salesforce的公共客户信息收集表单(Web-to-Lead form),将其转变为窃取敏感客户数据的渠道。Zenity的研究人员在周四发布的报告中详细说明了这些漏洞的原理,并通过视频演示了具体的攻击过程。攻击过程始于攻击者利用Web-to-Lead表单,在Salesforce系统中植入恶意代码(即所谓的“间接提示注入”攻击)。

关键漏洞细节:这些恶意指令处于“休眠”状态,直到员工向 Agentforce 的代理人员提出关于销售线索的问题(例如:“请查看我的最新销售线索,并帮我处理最新的那个线索”)。这时,代理人员会使用相应的工具处理这些销售线索,并执行隐藏在其中的恶意指令:通过该工具查询 Salesforce 的数据库(具体为 “Accounts” 表),并获取某些信息(如公司名称和交易金额)。这些信息会被作为子域名字符串,粘贴到攻击者控制的服务器上;随后,这些信息会被以 HTML 图片源代码(<img src="...">)的形式返回给员工。实际上,这些信息会被用于向攻击者控制的 DNS 服务器发送请求(从而实现数据泄露)。整个过程在员工完全不知情的情况下完成。

这个漏洞源于 Salesforce 的“可信 URL”安全机制存在缺陷:该机制本应限制 Agentforce 可访问的外部网站,并对指向不可信 URL 的链接或图片进行过滤。然而,Zenity 研究人员发现,该安全机制无法识别某些顶级域名;此外,某些字符的添加会干扰 URL 的解析过程。利用这些漏洞,攻击者可以构造包含恶意指令的字符串,从而成功绕过 URL 过滤机制。这些恶意指令会指示 Agentforce 代理从 Salesforce 数据库中获取信息,并将这些数据嵌入到发送给攻击者控制服务器的图片请求中。Zenity 团队指出:“由于前端系统在处理这些图片请求时不会进行任何额外的安全检查或用户交互,因此攻击者可以从任何 HTTPS 源头加载图片;换句话说,攻击者可以发送请求,从任何 HTTPS 源头获取数据。”研究人员还发现,攻击者还可以利用 Slack 的 URL 解析机制来实现同样的数据泄露攻击。

他们指出:“Slack 会自动从链接中提取信息以生成预览内容;而那些经过特殊设计的链接一旦被点击,就会促使 Slack 向攻击者控制的基础设施发送包含客户关系管理(CRM)数据的请求。”员工通过 Slack 与 Salesforce 代理进行交互时,可能会在不知情的情况下触发恶意指令,从而将敏感数据泄露到攻击者控制的服务器上。研究人员表示:“Salesforce 已修复了该漏洞(即 URL 编码绕过机制),因此这一具体漏洞已经被修复。不过,这类漏洞并非 Salesforce 所独有——任何能够读取外部来源提交的数据、向用户展示链接或图片、并且拥有访问敏感数据权限的代理程序,都可能存在类似的漏洞。”

第三处漏洞(详细内容见另一篇博客文章)与 Agentforce 与 Slack 的集成有关。当该漏洞与 URL 编码绕过机制结合使用时,内部用户或外部攻击者都可以利用该漏洞,以代理程序的合法身份发送钓鱼链接。这种攻击方式利用了 Agentforce 中的漏洞:该功能在发送消息前无需用户确认,且发送消息时不会显示发送者的身份信息。这意味着,任何能够调用“Reply to a Slack Thread”功能的代理程序都可以在未经用户授权的情况下发送消息。如果内部恶意人员已经与该代理程序建立了联系并掌握了其相关权限,他们就可以利用这一漏洞,以受信任代理的身份发送钓鱼信息从而保持匿名;外部攻击者则可以通过在 Web-to-Lead 系统中植入恶意代码来利用该漏洞,迫使代理程序在员工处理被篡改的潜在客户信息后发送钓鱼邮件。

Zenity 于 6 月 1 日向 Salesforce 报告了这三起安全漏洞问题,Salesforce 也在次日确认正在着手修复这些问题。Zenity 于 8 月 19 日确认 Salesforce 已修复了与“受信任的 URL”相关的漏洞,并在 9 月 21 日表示已对 Salesforce 的所有修复措施进行了测试,确认这三处漏洞均已被彻底修复。