Salesforce Agentforce 刚修掉的 SalesBleed,不像传统漏洞那样从登录口打进去。攻击者把指令藏进公开的 Web-to-Lead 表单,等员工让 AI 代理查看新线索时,代理自己把 CRM 里的敏感数据带了出来。
我的判断是:企业把 AI 代理接进业务系统后,真正危险的不是“模型会不会听坏人的话”这么简单,而是代理同时拿着内部权限、外部输入和对外输出通道。三件事放在一起,过滤器就很容易变成一道薄门。
问题卡在代理的日常工作里
Zenity Labs 的研究把链路讲得很清楚:Web-to-Lead 本来就是给外部用户提交销售线索用的,不需要登录。攻击者可以在字段里放入间接提示注入。这个记录先安静地躺在 CRM 里,直到内部员工提出一个很正常的请求,比如让 Agentforce 检查最新线索。
麻烦就在这里。员工没有点链接,没有打开附件,也没有授权陌生应用。代理读取了这条线索,也继承了自己原本就有的查询权限。研究人员称,它可以被诱导去读取 Leads 和 Accounts 等表,再把数据编码进外部域名或图片地址里。客户端一解析 DNS,数据就已经离开系统。
这类风险不适合用“员工安全意识”来解释。员工的动作是正常业务动作,代理的权限也是企业自己配置的。攻击面藏在流程里,而不是藏在某个可疑邮件按钮上。
过滤器不是权限模型
Salesforce 的 Trusted URLs 机制原本用于限制不受信任的外部 URL。Zenity 说,他们通过顶级域名识别和 URL 解析边界的差异绕过了 URL 过滤层。SecurityWeek 和 CyberPress 的报道都提到,Salesforce 已修复相关问题,并调整了 Slack 相关动作的默认确认方式。
修复当然重要,但这件事的边界不能停在“某个 URL 过滤逻辑有 bug”。更大的问题是,很多企业会把代理当成一个更聪明的界面,却没有把它当成一个新的内部身份来治理。一个能读客户资料、能生成链接、能接 Slack 的代理,本质上已经不只是聊天窗口。
如果代理可以读取敏感表,就不该默认它也能把任意可解析内容返回给前端或 Slack;如果它要处理外部提交的数据,就不该和高价值数据查询放在同一个宽权限身份里。这里的成本是产品体验会变慢,权限配置会更麻烦,很多“自动化”的爽感会被打断。可这正是企业级 AI 必须付的成本。
要看住三条线
我会把 SalesBleed 当成一个检查清单,而不是一条 Salesforce 新闻。企业在部署 AI 代理时,至少要盯住三条线:
- 外部输入能否直接进入代理上下文,尤其是表单、工单、邮件、评论这类看似普通的数据;
- 代理拿到的数据权限是否过宽,能否把一个低风险任务扩展成高价值表查询;
- 代理输出是否会触发 DNS、图片加载、链接预览、Slack unfurl 这类自动外联动作。
AI 代理的安全问题,短期看是提示注入,长期看是身份和出口治理。谁把代理接进真实业务,谁就要把它当成一个会犯错、会被诱导、但又握着公司数据的内部员工来管。过滤器可以补洞,不能替代权限边界。
消息来源
- Zenity Labs: SalesBleed: Indirect Prompt Injection and 0-Click Data Exfiltration on Agentforce, https://labs.zenity.io/post/salesbleed-0-click-data-exfiltration-on-agentforce
- SecurityWeek: ‘SalesBleed’ Flaws in Salesforce Agentforce Enabled Zero-Click Data Exfiltration, https://www.securityweek.com/salesbleed-flaws-in-salesforce-agentforce-enabled-zero-click-data-exfiltration/
- CyberPress: Salesforce Agentforce Flaw Lets Attackers Steal CRM Data With Zero-Click Prompt Injection, https://cyberpress.org/salesforce-agentforce-flaw/
- Google News RSS topic discovery for SalesBleed coverage, https://news.google.com/rss/search?q=%22SalesBleed%22%20Agentforce