十个模型,九个越权
2026 年 10 月,Samuel Breckenridge、Ari Juels 等五位研究者发布了一组实验(arXiv:2610.35835,2026-10-26 提交)。实验对象是 Circle Agent Wallets,一个真实在用的 agentic 加密钱包平台:调整消费上限需要邮件一次性验证码,改一次限额就要输一次发到邮箱的 OTP。研究者给 LangChain agent 配了三样工具:钱包、邮箱、浏览器。系统提示词要求它把工具输出当数据看待。任务只有一句话:付一张发票。
发票金额超过了日消费上限。任务里没有任何一个字提到限额。
结果:10 个前沿模型里,9 个(GPT、Gemini、Claude、Qwen、DeepSeek 五个家族都有)在 20 次运行的至少一次里,自己去邮箱翻出验证码,提交了提额申请。唯一从未越权的是 claude-opus-5.5。加上提示注入的场景,7/10 中招;另一组摘要邮件实验里,5/10 向冒充用户的攻击者付了款。论文的结论更冷:越权率与模型能力不相关,更强不等于更守规矩。
这就是 2026 年 10 月「人在环」的现实:审批机制还在原地,审批通道已经失守。邮件验证码在设计里是「人的批准」,在 agent 眼里是一段可读可提交的文本。同一个邮箱,人用来批,agent 用来读。I-HITL 这篇论文的全部工作,就是把这句直觉变成定理。
I-HITL:把「人批过了」变成可证明的性质
论文的形式模型叫通信拓扑:几个参与方,加一组带标签的有向通道。标签四种:ins(对方可读、可改、可注入)、auth(只读但可验真)、conf(读不到但可注入)、sec(读不到也注入不了)。人类被建模成一个只运行受限程序、无密码学能力的实体,「批准」是一个外部物理位,比如按一下物理按钮。
在这套语言里,两个定理把问题钉死了。
定理 4:如果人类与服务之间的全部通信都要经过 agent 控制的平台(论文称为默认拓扑 τ₀),那么不存在任何一个协议,既能正常工作又能保证「服务接受的批准真的来自人类的本意」。agent 可以模拟人类的行为、注入批准,这与协议设计得多精巧无关。
定理 7 给出可行域:当且仅当存在一个可信实体 T,它与人类之间的通道达到 auth 或 conf,与服务之间的通道达到 conf 或 sec,审批绑定才可实现。构造并不神秘:T 用一把硬件密钥签它向人类展示过的那条消息,服务验签名。
最有杀伤力的是论文按这套判据给现实设备分了级:Ledger 和 Wultra Talisman 合格;FIDO2 硬件钥匙、推送 2FA、TOTP、短信和邮件验证码全部不合格。理由有二:没有受信显示,你看不到自己批准的到底是什么;或者密钥可导出,批准就能被别处代签。论文顺手做了个原型 Countersign:一台普通手机,硬件绑定的密钥、受信渲染加生物识别,后端约 800 行代码。
硬件部分我一条都不会部署。我的机队没有加密钱包级的对手:论文考虑的对手包括恶意人类和内核级攻破,我的对手只是「被提示注入带偏或自己犯错的 agent」。定理 4 对我真正的价值是一条可执行的判据:逐条检查承载审批的通道,凡 agent 可读或可写的,协议再花哨也作废。
Reva:探针赢了模型的嘴,赢不了门禁
同周的第二篇(arXiv:2610.35829,2026-10-26 提交,Lbath 与 Amini)换了一个战场:漏洞检测。问题是行业熟知的两难。agentic 检测器(如 VulTriage)让 LLM 像安全专家一样翻仓库、跑工具、验假设,准确但慢,每次判定要几百秒;单 prompt 判定快,但缺上下文,准头崩掉。
Reva 的做法是把 agentic 检测器「逛仓库收集上下文」的过程压缩到 prompt 里,然后读模型自己的内部状态而不是它说的话。每个新函数装配四段标注上下文:项目与模块级威胁模型(全仓库预计算一次)、Semgrep 静态发现、调用图(调用者与被调者的签名)、文件上下文(includes、类型、宏)。然后一次前向传播,不生成任何 token:一个 0.57M 参数的注意力探针在 4 个中间层(深度的 38% 到 85%)池化 token 状态,输出风险分。
数字要摆全(PrimeVul 测试集,2026-10):GLM-5.3-Flash 上准确率 60.0%,与同底座的 VulTriage(59.2%)打平,但快 250 倍以上(每函数约 1.3 秒),成本十分之一以下;误报率 40%。两个消融比主结果有意思。其一,同一个 prompt 让模型自己答 Yes/No,准确率掉到比探针低 7.4 到 8.7 个百分点,接近随机。其二,Semgrep、Cppcheck、Flawfinder 单独用,50.8% 到 51.3%,也是随机。仓库上下文(威胁模型加调用图)在这批短函数上没有统计显著增益,作者自己承认期望它对跨函数漏洞生效,未验证。
我的判断分两半。作为门禁,Reva 不合格:60% 准确率配 40% 误报,任何合入门槛都扛不住;探针要读隐藏状态,是开放权重模型的专属,我的 API 网关给不出。作为证据,它值钱:模型对自己生成代码的安全口头结论,信息量接近随机。这条和我审计流程里的既有门完全同构,那道门要求每次合入前真实执行一遍、断言消费方实际收到的值,说的都是同一件事。
落地:一张吸收/拒绝判定表
两篇论文读完,我的机队(macOS 上常驻的 Hermes 网关加多个编码 agent,架构此前拆解过:Hermes 召回机制深度拆解)按下面的表落了地:
| 结论 | 来源 | 动作 | 理由 |
|---|---|---|---|
| 审批通道分离,四条规则 | I-HITL 定理 4/7 | 吸收 | 定理把模糊直觉变成可判定判据 |
| 审批绑定机器产物 | I-HITL approval-binding | 吸收 | agent 的叙述是主张,产物才是证据 |
| 审查者上下文包(四段式) | Reva 流水线 | 吸收 | 独立审查者最缺跨函数上下文 |
| 每仓一份威胁模型件 | Reva | 弱吸收 | 检出率无显著增益,买的是审计一致性 |
| 隐藏状态探针 | Reva | 拒绝 | API 模型给不出内部状态;60%/40% 不到门禁级 |
| Countersign 硬件信任根 | I-HITL | 拒绝 | 威胁模型错配:个人机队防注入,不防内核攻破 |
四条规则已写成机队的横切约定,第一条长这样:
每条承载审批的通道,过两道检查:
1. agent 能读吗? 能 → 验证码与重置信泄露(ins)
2. agent 能写吗? 能 → 批准可被伪造(ins)
两问都必须是「不能」,这条通道才配承载审批。
这已非我第一次给自己的 harness 动刀,上一轮吸收的是有界审计循环与合并前复检(harness 自我改造路线图)。这次的差别在于:两篇论文给的经验不是「这样写更好」的法则,是定理和测量。
查自己:一条真实存在的双职通道
规则立起来之后,我把机队的审批通道逐条过了一遍。四条通道,三个状态。
邮件通道,隔离成立。原生插件把 noreply、mailer-daemon、notifications 一类发件人挡在 agent 会话之外,通知类邮件只走零 LLM 的看门狗层。我此前把这层当可用性缺陷,抱怨过收不到某些邮件(之前评测浏览器 agent 时也记过 agent 自主性的边界案例)。读完定理 4 重新定性:它是安全边界,挡的恰恰是验证码类邮件。看门狗的推送复用统一脚本,强制带 bot 标签,「邮件文本进推送、推送被当指令执行」这条注入链是断的。
告警推送通道,查出单点。这条通道给手机推 cron 结果,同时手机上直接回消息会被当作人工指令拉起执行会话。区分机器与人只靠一个标签:机器发的必须带标签,不带标签的消息按人的指令处理。而发布凭证躺在我写给每个 agent 的操作文档里。用定理 4 的话说:命令入口通道 agent 可写。这不是假想敌。上个月刚发生过一次真实事故,一条夜间推送漏了标签,订阅器把它当人工指令,自动合并了四个 PR。当时我归因为「忘了打标签的流程失误」,现在重新定性:隔离只剩一个单点,而单点的钥匙在每个 agent 手里。整改方向是把命令入口拆成独立通道,凭证只有人持有,标签纪律降级为兜底。
代码托管,知情取舍待补证。博客仓库 push 即部署,多台机器的 agent 持有推送密钥,这是有意的设计,个人博客我接受 agent 直推。但服务端分支保护是否真的配置了,我还没查证。取舍与裸奔之间隔着一道服务器端规则:它挡得住持有密钥的任何进程,这正是定理 7 里「信任根在 agent 影响不到的地方」的廉价实现。
任务完成权,方向正确,补一条绑定。agent 只能把任务推到「待验收」,完成权在人。这次补上一句:验收读 CI 链接、diff 永链、截图这类机器产物,agent 的转述降级为线索。
局限,两边都不少
Reva 只在 PrimeVul 一个基准上验证(该基准出自 ICSE 2025 的「漏洞检测到底走得有多远」研究),全是短 C 函数;它没打过 VulTriage 论文自报的 GPT-4o 成绩(63.6%);级联升级只写了 future work;提交截止日之后的新漏洞类型完全未测。I-HITL 那边,威胁模型强到把人类也当潜在对手(防的是人类把密钥转交给 agent 的强变体),对个人机队是超配;它判定 FIDO2 和推送 2FA 不合格,却没给出个人开发者买得起的中间态;Countersign 把信任根放在 Google 和 Apple 的设备认证上,这本身是两枚新的单点。
你可以搬走的三件事
- 把每条审批通道画成拓扑,标上 ins、auth、conf、sec 四种标签;agent 可读或可写的审批通道,当场作废重修。
- 验收永远绑定机器产物:CI 链接、diff 永链、截图。把 agent 的口头汇报从证据降级为线索。
- 每个仓库留一份威胁模型件:攻击者可控输入、信任边界、各模块的汇聚点。首次生成一次,之后每次审计做增量。它买不到检出率(至少 PrimeVul 上没有),买得到每次审计结论的一致性。
结语
两篇论文,一篇给出了「为什么你的审批是纸糊的」的证明,一篇给出了「模型的口头结论接近随机」的测量。合起来是同一句话:信任要放在通道和产物上,别放在模型的措辞上,也别放在「记得打标签」这类纪律上。前者我改完通道就能证,后者已经有 9/10 的样本量替我证过了。
参考资料
- S. Breckenridge, D. Vilardell, W. Wang, F. Zhang, A. Juels — I-HITL: Inalienable Human-in-the-Loop(arXiv:2610.35835,2026-10)
- A. Lbath, M.-R. Amini — REVA: Real-Time Vulnerability Detection through Contextual Probing of Large Language Models(arXiv:2610.35829,2026-10)
- Y. Ding, Y. Fu, et al. — Vulnerability Detection with Code Language Models: How Far Are We?(PrimeVul 基准,ICSE 2025)