GPT、Claude遭遇窃听门:换个模型就能让思维链不再隐身?
全球主流 AI API 集体翻车,隐藏推理被成功还原,谁在偷听 AI 的「心声」?
作者丨 郑佳美
编辑丨 岑 峰
昨天,X 用户 @kotekjedi_ml 公布了一组很反常的实验:Claude、GPT 和 Gemini API 里原本不向用户展示的隐藏 reasoning,被研究人员重新恢复成了可读文本。
按正常设计,这些 reasoning 本来应该是看不到的。模型完成内部推理后,API 会把这部分内容加密成一段 opaque block 返回给客户端。用户拿得到这段数据,但无法直接读取,也不能随意修改,等到下一轮调用时,再把它原样交回服务器,模型就能接着之前的状态继续推理。
问题出在这些 encrypted reasoning 并没有始终和原来的模型、会话严格绑定。 一段由强模型生成的隐藏推理,在一些情况下可以被同一家厂商的另一个模型继续读取。于是,研究人员不再尝试让强模型自己交出 Chain-of-Thought,而是把它留下的 encrypted reasoning 交给一个更容易被绕过的兼容模型,再让后者把已经加载的内容转录出来。
整个过程没有拿到服务端密钥,也没有破解 encrypted reasoning。被绕过的是这段 reasoning 的使用范围:系统能够确认这段数据没有被篡改,却没有在所有场景下确认当前模型和当前会话是否仍然有资格使用它。
而要理解这个漏洞为什么会出现,得先看清一件事:这些隐藏 reasoning 为什么会离开模型,跑到客户端手里。
01
被加密,不代表一直留在模型内部
推理模型和普通聊天模型的区别,不只是回答之前多想了几步,而是这些中间状态在很多任务里还要继续使用。
模型可能先拆解问题,尝试不同方案,读取工具结果,再根据中间结果修正判断。对于一次性问答,这段 reasoning 用完就结束;但到了长任务和 Agent 场景,下一轮调用往往还要接着前面的分析继续。如果每次都从头计算,不仅浪费推理成本,也会丢掉已经形成的任务状态。
服务端当然可以替每个会话长期保存完整 reasoning,但这样会增加状态存储、任务恢复和上下文管理的复杂度。于是,一些 API 选择把内部 reasoning 封装成客户端无法直接读取的数据,再交给客户端保存。后续调用时,客户端把这段数据原样发回来,服务端验证后继续使用。
这样做同时解决了几个工程问题。调用者看不到完整内部推理,修改后的数据也无法继续通过认证,服务端还不用长期保存全部状态。
但也正因为 reasoning 被交到了客户端,系统开始面对一个过去没那么突出的权限问题。
加密和签名能够证明一段 block 是服务端生成的,而且没有被外部改动,但这只能证明数据本身可信。它不能自动证明这段数据现在还应该出现在当前账号、当前 session,或者当前模型里。
也就是说,一段 reasoning 可以完全合法,却被放到了错误的位置。
接下来的跨模型攻击,正是从这里成立。