Synth Daily

用“子代理组合 + 代理定义”这套连招就能绕过计费

一份报告指出,通过巧妙地组合 Copilot 的功能,可以绕过其计费机制,实现对昂贵付费模型的免费、无限制使用。其核心原理是利用免费模型作为起点,通过“子代理 (subagent)”和“工具调用”功能,将实际计算任务转交给付费模型执行,而系统计费却只认最初的免费模型,从而不产生费用。此外,通过设置高请求上限和脚本循环,也能以极低成本持续调用付费模型。

核心漏洞:利用子代理绕过计费

将多个机制组合在一起,就能实现对昂贵付费模型(如通常需要消耗 3 个高级请求的 Opus 4.5)的免费使用。其利用了以下几个系统特点:

  • 子代理和工具调用本身不消耗任何“请求”额度
  • 请求的费用是根据会话开始时使用的初始模型来计算的。
  • Copilot 内置了像 GPT-5 Mini 这样的免费模型。
  • 用户可以为子代理定义一个代理配置文件,并为其指定任意模型

操作步骤

  1. 选择免费模型启动:开始一个新的聊天会话,并将模型设置为一个免费模型,例如 GPT-5 Mini
  2. 创建付费代理:创建一个代理配置文件,并将其模型设置为一个昂贵的付费模型,例如 Claude Opus 4.5
  3. 通过子代理传递任务:在第一条消息中,指示免费模型使用 runSubagent 工具启动一个子代理,并将真正的用户查询(例如“伦敦现在几点了?”)传递给这个子代理。

执行流程与结果

  • 初始请求由 GPT-5 Mini (免费模型) 接收,不产生费用
  • 免费模型会创建一个子代理,这个创建动作本身也是免费的
  • 这个子代理会加载你预设的代理配置文件,该文件指定使用 Opus 4.5 (付费模型)。
  • 最终,昂贵的付费模型完成了实际任务,但由于计费系统只认第一步的免费模型,整个过程几乎不消耗任何高级积分

另一种滥用方式:循环调用

除了上述方法,还存在一种需要更多设置的滥用方式,可以实现长时间、大规模的调用。

  • 提高请求上限:将 chat.agent.maxRequests(聊天代理的最大请求数)设置为一个非常高的值。
  • 使用付费模型启动:直接使用一个付费模型(如 Opus 4.5)作为会话的初始模型。
  • 构建循环脚本:创建一个自定义脚本,并通过提示词引导模型在工具调用中重复执行该脚本。

通过正确的提示词和脚本,可以创建一个循环,让付费模型在一次初始计费后被无限次地调用,而无需支付额外费用。

在测试中,单条消息触发了一个持续 3 小时以上的处理过程,启动了数百个 Opus 4.5 子代理来处理数百个文件,而最终只消耗了 3 个高级积分。如果不是手动停止,这个过程还会继续下去。

漏洞报告与处理

该漏洞最初已提交给微软安全响应中心(MSRC),案件号为 VULN-172488。然而,MSRC 多次坚称,绕过计费问题不属于其处理范围,并指示报告者将其作为公开的错误报告进行提交。