Reprompt:通过 URL 预填提示词对 Copilot Personal 实现一键数据外泄
一个已修复的 Copilot Personal 缺陷,将 URL 预填提示词、仅校验首次请求的防护,以及由服务器驱动的后续指令串联起来,实现了一键式的隐蔽数据外泄。其绕过教训具有普遍意义。
这是什么?
Reprompt 是由 Varonis Threat Labs 披露的、针对 Microsoft Copilot Personal 的一条攻击链,其公开技术分析最早发布于 2026 年 1 月 14 日,并在 2026 年 6 月 16 日 随一项相关的企业侧发现一同更新。它把对一个看似合法的 Copilot 链接的一次点击,变成一条隐蔽的数据外泄通道:助手读取受害者的会话与档案上下文,并将其逐片泄露到攻击者控制的服务器。微软已确认问题已修复,而由租户 DLP 和 Purview 治理保护的企业版 Microsoft 365 Copilot 并未以相同方式受到影响。
我们在此并非将其作为突发新闻报道,而是作为一个干净、已完全修复的案例研究。它三项技术中的两项是远超 Copilot 范畴、反复出现的绕过模式,理解它们比理解这个具体的产品缺陷更有价值。下文不复现任何可用的攻击载荷;价值在于这些失效模式本身。
工作原理
Reprompt 组合了三个步骤。其中没有任何一项是底层语言模型的缺陷——每一项都是模型外围应用程序中的设计与校验漏洞。
第一项是 参数到提示词(P2P)注入。Copilot 接受一个 q URL 参数来预填输入框,因此形如 https://copilot.microsoft.com/?q=... 的链接会让助手把其中嵌入的文本当作用户已输入并提交的内容来处理。攻击者把自己的指令放进该参数。用户只需点击;已经过身份验证的会话便完成其余工作,且不会再次要求认证。同样的预填提示词功能也已在其他助手上被记录——Tenable 针对 ChatGPT、LayerX 针对 Perplexity 的 Comet 浏览器都做过描述——这表明它是一类弱点,而非孤例。
第二项是 双重请求绕过,也是最具迁移价值的教训。Copilot 确实部署了一道防护,会从出站 URL 抓取中剥离敏感数据——但在存在漏洞的版本中,该检查只在指令的 首次 执行时运行。攻击者通过措辞让助手把每个动作执行两次并「比较」结果,从而把返回数据的步骤移到了过滤器从不检查的第二次执行中。确切指令在此 [已删除];结构性要点在于:安全检查与动作在多次迭代之间并未被对称地施加。
第三项是 请求链编排。首个提示词执行后,攻击者的服务器会根据 Copilot 的返回内容发回后续指令——用户名,然后是位置,然后是最近访问过的文件列表,然后是会话记忆,逐片进行。由于每条后续指令都是在初次点击 之后 由服务器下发的,检查起始提示词无法揭示实际被外泄的内容,而客户端监控只看到一连串细小、看似普通的出站请求。
为什么重要
这种组合正是 OWASP《State of Agentic AI Security and Governance》(v2.01,2026 年 6 月 11 日)置于智能体风险核心的「致命三要素」:一个同时具备私有数据访问权、暴露于攻击者可控内容、并能触达网络的助手,可被一条注入指令变成外泄工具。Copilot 在设计上就同时具备这三者,因为「有用」意味着持有用户上下文并能去抓取内容。
绕过之所以可普遍化,原因在于架构。正如 OWASP 与 Simon Willison 都强调的,语言模型把系统提示词、用户请求和任何外部文本作为同一条无差别的 token 流接收——在「命令」与「数据」之间没有可靠的边界。预填 URL 不过是又一种把攻击者文本塞进该数据流、同时披上用户权限外衣的方式。而双重请求这一手法提醒我们:在数据流某一点上施加的防护,并不等于对整条流施加了防护;凡是重试、再生成或后续步骤之间施加不均之处,就存在绕过。
请求链模式是防御者最应反复思考的部分。它击败了那个直觉性的控制——「在执行前检查提示词」——因为危险指令在点击时并不存在。它们是由远程服务器针对模型自身的输出动态撰写的。检测必须从提示词转向行为。
防御
将 Varonis 的建议推广到任何摄入外部输入的 LLM 助手或智能体:
- 将一切由外部提供的字符串端到端地视为不可信数据。 深层链接、预填提示词、检索到的文档和工具输出,都不应在没有显式且有日志记录的转换步骤的情况下被提升为「指令」。校验预填提示词参数,而非在页面加载时执行它们。
- 在所有执行路径上对称地施加防护。 无论何种防泄漏检查在首次请求上运行,都必须在第二次、重试、再生成以及每一次链式后续上以相同方式运行。漏洞在于施加不均,而非提示词本身。
- 让策略位于服务器端且有状态,而非客户端且按提示词。 由于请求链外泄在起始提示词上不可见,控制必须贯穿整个交互过程,并驻留在模型执行动作之处,而非浏览器标签页中。
- 施加致命三要素 / Agents Rule of Two 预算。 若一个助手能在无需批准的情况下读取私有上下文、触达不可信内容并向网络出站,就移除其中一条:将出站抓取限制到白名单目的地,或在模型获取攻击者可控 URL 之前要求人工确认。
- 以行为而非载荷进行狩猎。 对助手发起的、指向异常端点的出站,以及来自 AI 客户端的大量细小、顺序化的出站请求(增量外泄的特征)发出告警,而不是依赖检查用户提交的提示词。
- 对用户而言: 对待一个会带着已填好提示词打开 AI 工具的链接,应与对待任何未经请求的链接一样谨慎,并在让预填提示词运行前先阅读它。
状态
| 项目 | 详情 |
|---|---|
| 攻击 | Reprompt(Varonis Threat Labs,研究员 Dolev Taler) |
| 目标 | Microsoft Copilot Personal(消费者版) |
| 不受影响 | Microsoft 365 Copilot(企业版,租户 DLP/Purview) |
| 技术 | P2P(q 参数)注入 · 双重请求绕过 · 请求链外泄 |
| 公开分析 | 2026 年 1 月 14 日;2026 年 6 月 16 日更新 |
| 补丁状态 | 微软已修复(2026 年 1 月更新周期);厂商确认已修复 |
| 在野利用 | 披露时未确认存在大规模利用;为研究演示 |
| 相关 | SearchLeak——M365 Copilot Enterprise 中的类似攻击链(Varonis,2026 年 6 月) |
| 性质 | 防御性案例研究——未复现攻击载荷 |