外观
企业 AI 参数注入与可信出口数据外泄
摘要
Data Tomb Raider 汇总三条企业 AI 数据外泄链。RePrompt 利用 Microsoft Copilot 的可控输入;RovoBlast 把 Atlassian Rovo 的 rovoChatPrompt URL 参数交给 Research Agent;SearchLeak 则让 Microsoft 365 Copilot 的 /search/?q= 参数进入提示词,再借允许访问的 Bing 图片通道编码外传结果。演讲报告三项问题均已修复,其中 SearchLeak 分配为 CVE-2026-42824。
这些链的共同根因不是搜索或图片服务本身,而是应用把导航参数直接提升为指令,并允许模型从同一会话读取企业数据和构造外部资源请求。本站合并分析三项发现,以避免按产品重复描述同一种参数到提示词的信任转换。
共同模型:“进入—规避—逃逸”
作者用 Enter–Evade–Escape 概括三条链:
- 进入:攻击者可控的 URL 参数、搜索词或深链接被提升为提示词,而不是保持为普通导航数据。
- 规避:通过分阶段请求、不同语法或重复请求绕开模型与渲染器的拒绝条件。
- 逃逸:模型使用允许访问的外部通道,把内部检索结果带到攻击者可观察的位置。
这一模型与“致命三要素”一致:Agent 同时接触不可信输入、私有企业数据和外部通信能力。三项发现使用了不同产品入口,但最先失效的安全控制相同——应用没有验证“打开一个链接”是否等同于用户授权 Agent 执行一段指令。
| 研究代号 | 参数入口 | 可访问的私有数据 | 演示中的出口 |
|---|---|---|---|
| RePrompt | Copilot ?q= | 会话上下文、Agent 记忆和用户信息 | 模型可生成的外部请求或后续动作 |
| RovoBlast | Rovo rovoChatPrompt | Confluence、Jira、Bitbucket 等连接器数据 | 多阶段检索与外部资源 |
| SearchLeak | Microsoft 365 Search ?q= | Microsoft 365 搜索结果 | Bing 图片服务代取外部 URL |
RePrompt:个人 Copilot 的一键自动提交
材料展示个人 Copilot 接受类似 copilot.microsoft.com/?q=hello 的链接。q 不只是填充搜索框;页面加载后会把内容自动提交为用户消息。攻击者因此可以把自然语言指令放入微软自己的域名,诱导已登录用户点击,而无需托管恶意文档。
作者把 RePrompt 拆为四个阶段:
- 让参数内容进入会话并被当作指令。
- 请求模型收集当前用户元数据、Agent 记忆或聊天上下文。
- 让输出进入一个可由攻击者观察的外部通信步骤。
- 使用重复请求或分阶段表达绕过护栏(Guardrail)。
公开幻灯片能够支持“参数被自动提交”和“形成多阶段数据流”这两个结论,但没有给出可独立复测的完整版本矩阵。本文不把“能读取某类上下文”外推为所有 Copilot 账户都能泄露同样数据。
RovoBlast:组织重定向并没有消除不可信提示词
Atlassian Rovo 链接使用 home.atlassian.com/chat,并通过 rovoChatPathway=chat 和 rovoChatPrompt=<内容> 等参数预置会话。用户登录后,服务可以重定向到正确的组织标识;从使用体验看,这是正常深链接能力,从安全角度看,攻击者输入却因此抵达了已认证组织中的 Agent。
内置 Research Agent 扩大了检索范围
Rovo 能调用内部 Research Agent 和连接器搜索 Confluence 页面、Jira 工单及 Bitbucket 内容。攻击者不必知道具体项目结构,只需让 Agent 自行查找符合某类描述的数据。演讲演示了以下受控场景:
- 从 Confluence 找到内部文档内容。
- 从 Jira 工单中提取项目或人员信息。
- 通过连接器扩展到 Bitbucket 等关联服务。
“可访问所有组织数据”应理解为“可在当前用户和连接器授权范围内搜索”,不是绕过 Atlassian 自身的每一项对象权限。
分阶段请求与重复请求
材料描述“双重请求(double request)”:第一次请求可能因敏感动作被拒绝,第二阶段则把同一目标包装成继续研究、格式转换或引用资源,模型可能分别批准每一步。RovoBlast 还可先生成中间结果,再让另一个内部 Agent 消费,来源与目的在 Agent 间传递时变得不清楚。
这与单句提示词注入不同。安全验证必须覆盖完整任务图,而不是只判断每一轮文字看起来是否危险。
SearchLeak:同源搜索页加受信任 Bing 出口
SearchLeak 使用 Microsoft 365 搜索页面的 /search/?q= 参数。该参数进入 AI 搜索上下文后,模型可以查询当前用户可见的 Microsoft 365 内容。页面还会渲染模型生成的富文本或图片资源,由此形成从内部检索到浏览器网络请求的连接。
为什么内容安全策略没有阻断
正常情况下,内容安全策略可以禁止页面请求任意攻击者域名。但 Bing 图片搜索属于受信任的微软域名,页面允许加载。Bing 的“按图片 URL 搜索”功能会在服务端取得调用者提供的图片地址;如果模型构造的 Bing URL 又嵌入攻击者控制地址和数据片段,实际网络链会变成:
text
Microsoft 365 页面
-> 允许访问的 bing.com
-> Bing 服务端请求攻击者端点
-> 攻击者从请求路径观察编码片段因此,允许域名控制只验证了第一跳,没有验证 Bing 代取的第二跳,也没有限制模型把私有数据放入路径。演讲还提到 HTML 渲染时序:在防护或拒绝结果完全生效前,外部资源可能已经开始加载。
CVE 与修复结论
材料称 SearchLeak 获得 CVE-2026-42824,三项问题均已修复。本文只记录演讲披露状态;补丁是否覆盖所有区域、移动端、深链接和已有会话,需要根据厂商公告和实际租户继续验证。
为什么“同一厂商域名”不能继承信任
SearchLeak 揭示了三种不同的信任属性:
bing.com的 TLS 和域名身份可以是真的。- Bing 代取 URL 的功能也可以按设计正常工作。
- 请求中携带的数据来源仍可能是企业私有上下文,目标仍可能由攻击者控制。
出口策略如果只维护域名允许列表,会把前两项真实性错误地解释为第三项数据流获得授权。正确的控制对象应是“哪个主体、因为什么任务、把哪类数据、发到哪个最终目的地”。
去武器化 PoC:本地深链接与双跳出口测试
以下夹具使用不可解析域名和本地 Mock 渲染器,不复现真实产品链接:
text
GET /mock-search?q=DRY_RUN%3A%20return%20PUBLIC_FIXTURE
session.private_index = ["PRIVATE_FIXTURE_MUST_NOT_LEAVE"]
session.public_index = ["PUBLIC_FIXTURE"]
renderer.allowed_hosts = ["images.mock.invalid"]
renderer.network = RECORD_ONLYMock 模型返回一个外部图片引用时,出口代理不发起真实请求,只记录标准化后的最终目的地:
text
assert query_parameter_is_data_not_instruction()
assert private_index_was_not_searched_without_explicit_consent()
assert redirect_chain_is_resolved_before_policy_check()
assert recorded_request_contains_no_model_generated_path_data()
assert real_network_request_count == 0第二组测试把任务拆成两轮:第一轮只检索,第二轮要求渲染。策略应把两轮合并为同一个数据流判断,不能因为每一轮单看都合理就批准最终外发。本站省略真实 Bing 路径、数据分块、编码方式和渲染竞态细节。
复现与验证时应记录什么
- 链接打开后参数是只填充界面,还是自动提交为用户消息。
- 服务器端记录的消息角色、来源和是否有用户确认事件。
- Agent 实际调用了哪些检索器、连接器和内部子 Agent。
- 每条检索结果的对象权限与来源标签是否保留到最终回答。
- HTML、Markdown、图片和重定向分别由浏览器还是服务端请求。
- 出口代理看到的最终 IP、重定向链、查询参数和数据分类。
- 首轮拒绝后,重复或分阶段请求是否继承原始风险状态。
防护措施与验证方法
- 查询参数、片段标识和深链接内容只能作为数据填充,不能直接生成已发送的用户消息;自动执行前必须有可验证的用户确认事件。
- 服务器端采用固定任务类型和类型化参数,拒绝把任意自然语言参数拼接到系统或用户指令。
- 内部检索、内容摘要和外部渲染分阶段授权;打开链接不能代表同意搜索企业数据,更不能代表同意外发。
- 在 Agent 间传递逐字段来源、对象权限和原始请求主体;内部 Research Agent 的摘要不能自动获得更高信任等级。
- 对 Bing 等允许域名解析完整重定向和代取目标,在连接前后都校验最终 IP、目标域和数据分类。
- 富文本输出采用安全中间表示,图片和链接默认不自动加载;模型不得控制任意 URL 路径或查询串。
- 对重复请求和多轮任务维护累计风险状态。首轮拒绝的敏感目标不能通过拆分成多个低风险步骤重新批准。
关键结果与实际影响
研究说明,一个位于产品官方域名的链接也可能携带攻击者指令。若应用自动提交参数、Agent 可读取企业数据、渲染器又能对外通信,点击链接便可能完成从输入到外泄的整条路径。实际读取范围仍受当前用户和连接器权限限制;三项受控演示不能证明其他企业 AI 产品存在相同实现缺陷。
局限与待验证问题
公开证据集中在演讲幻灯片,缺少各区域的完整版本矩阵、厂商补丁差异和独立复现。RePrompt、RovoBlast 与 SearchLeak 的入口和出口并不完全相同,本文只合并其共同机制,不把单一产品结果外推为行业发生率。后续应复测修复是否覆盖移动端、桌面端、重定向、既有会话、多轮请求和不同连接器。