Zenity Labs 9 月 24 日披露了 Salesforce Agentforce 的三个漏洞,代号 SalesBleed:攻击者不登录、不点击、不接触目标租户,就能让企业的 AI agent 主动把 CRM 数据送出门。Salesforce 已于 8 月 19 日修复全部三个漏洞,但攻击模式的通用性让它值得每个做 agent 的团队复盘。
攻击链拆解
- 投放:攻击者通过公开的 Web-to-Lead 表单提交一条销售线索,正文里藏着间接提示注入指令。它混进 CRM,看起来和普通线索无异。
- 潜伏与触发:某天员工例行问 Agentforce「帮我看看最新的 leads」,agent 处理到这条被污染的记录,注入指令接管——用 Query Records 工具查询 Accounts 表,取出公司名和交易额。
- 外泄:agent 把数据编码进攻击者控制的子域名,生成一个 HTML image 标签写在回复里。聊天界面渲染图片标签,DNS 解析本身就把数据带出了门。员工看到的是一份正常的 leads 摘要。
Salesforce 本来有 Trusted URLs 白名单来拦这类外泄,但 Zenity 找到两个缺口:白名单不认识部分新顶级域名(.fun 直接漏过),且 URL 解析规则与渲染器不一致,{}、[] 等字符让「过滤器认为非法、浏览器认为合法」的字符串穿墙而过。
第二条通道更隐蔽:Slack 的 link preview 会自动抓取链接生成预览,agent 只要在回复里放一个精心构造的链接,Slack 自己的服务器就替攻击者把 CRM 数据带走了——你的 DNS 过滤和代理日志完全看不到。第三条则是把 agent 变成钓鱼工具:Reply to a Slack Thread 动作无确认、无发起人归属,注入后可以用企业官方 bot 的可信身份在内网发钓鱼消息。
这不是 Salesforce 的问题,是结构问题
SalesBleed 完整复现了研究者所说的 lethal trifecta(致命三角):访问私有数据 + 暴露于不可信内容 + 具备对外通信能力。三者齐备,提示注入就能把 agent 的能力反过来对付你。Meta 给出的 Rule of Two 原则值得贴在墙上:无人工监督的 agent,最多同时具备三项能力中的两项。
客服 agent 读工单、查订单库、发邮件;编码 agent 读 issue、碰代码库、提 commit;HR agent 读简历、查员工记录、排面试——大部分在产的企业 agent 都同时具备三项。
给你的行动清单
- 用 Rule of Two 审计每个 agent:私有数据访问、不可信输入、外发通道,砍掉至少一条腿。
- 最小权限:查 leads 的 agent 不应该能读整张 Accounts 表——SalesBleed 里越界的正是默认配置的 General CRM subagent。
- 外发链接一律走重写/确认,不要信任输出侧过滤;注意 unfurler、preview 渲染器这些「代理外泄面」。
- 部署后监控 agent 实际行为——Zenity CTO 的原话:「设计时审查挡不住真实世界的边缘情况,生产监控是最后防线」。
- 用 Agentforce 的确认 6-9 月被 lead 触发的 agent 活动,核对你的 Trusted URLs 配置。
一个耐人寻味的细节:SalesBleed 没有 CVE 编号。按传统漏扫思路,你永远不知道它存在过。
来源:Zenity Labs、SecurityWeek、beri.net

评论(0)
暂无评论,来抢沙发~
请 登录 后发表评论