前期提要
在2025 年 8 月,腾讯玄武实验室的阿图因自动化漏洞挖掘引擎在零知识证明库 gnark 中发现了一个高危漏洞(CVE-2025-57801,CVSS 8.6)。之后,玄武实验室联合上海交通大学 GOSSIP 实验室及郁昱教授团队共同完成了漏洞复现。
2025 年 8 月,腾讯玄武实验室基于大模型能力构建的自动化漏洞挖掘引擎 Atuin 在零知识证明(ZKP)库 gnark 的签名验证电路中发现一处高危漏洞,并获得编号 CVE-2025-57801(CVSS 8.6)。该问题本质上属于签名可塑性(Signature Malleability):在电路约束不完备的情况下,攻击者可以在不改变公共输入(交易内容/消息等)的前提下,构造出不同但仍能通过验证的签名见证,从而破坏“签名唯一性/不可重放性”这一常被上层协议默认成立的安全前提。
之所以需要严肃对待这类缺陷,是因为 gnark 作为工程化程度很高的 ZKP 库,被广泛用于 ZK-Rollup 等扩容场景;一旦 Operator/业务电路直接复用存在缺陷的“原生(native)签名验证”实现,那么攻击者就可能基于一笔真实交易派生出“内容相同但签名不同”的伪造版本,进而在某些以签名字段(如 R/S)派生 nullifier、反重放标识或约束逻辑的系统里引发重复执行/重复结算等连锁风险。
在玄武实验室披露后,其与上海交通大学 GOSSIP 实验室及郁昱教授团队完成了漏洞复现与影响分析,并推动社区修复。但值得注意的是:即便该漏洞构造并不复杂,其初始“修复”却并不严谨。在早期修复链路中,签名标量 S 的取值约束仍存在边界条件缺口——实现里检查的是 s <= order,而标准要求的是 严格不等 s < order。这会在极端边界(例如 s = order)下引入等价关系,使得签名对在形式上出现可塑性(可理解为 (R, 0) 与 (R, order) 的等价风险点),从而留下“理论上可被利用、工程上可能被误用”的残余隐患。
为消除这一残余风险,我们(星图实验室)进一步向 gnark 上游报告并推动修复:最终在 PR #1684 将约束从 AssertIsLessOrEqual 调整为严格比较(在 std/signature/eddsa/eddsa.go 中用 cmp.IsLess 并断言结果为 1),使 EdDSA 验证满足 S < order 的严格要求;该 PR 已于 2026-01-21 合入主分支,并在CVE-2025-57801中获得了致谢。

更有意思的是,这个“残余隐患”的发现路径,几乎与玄武实验室依赖复杂 Agent 体系(Atuin)进行自动化挖掘的路径相反:星图研究员在看到玄武实验室相关信息后第一时间尝试复现。作为安全研究团队,我们希望对 AI/大模型在漏洞分析中的有效性做更“朴素但可对照”的评估——因此我们没有调用外部网络,也没有搭建多工具链 Agent,而是把公开上下文(即ecdsa.go,prompt为:“请你帮我查找其中的安全隐患”。)直接投喂给 Gemini 2.5 Pro 与 GPT-5。出乎意料的是,在“无外部检索、无复杂编排”的条件下,大模型依然给出了准确的漏洞挖掘、机理拆解与推导链路,并能自然地把关注点落到“约束是否完备/边界是否严格”这种最容易在修复阶段被忽略的细节上。
我们关注到当时的网络安全圈的一些评论,例如微博上对这个的讨论是: “用 AI 发现代码中的漏洞已经没什么稀奇了。但是在密码学库,尤其是经过多轮人工审计的 Web3 社区的密码学库里还能发现漏洞,这就让我们对 AI 能力边界的认知又扩大了一圈。” 这个案例给了我们一些新的如何利用AI能力开展安全研究的启发,AI的能力在目前的安全研究人员认知中可能被低估了,需要大家进一步评估AI挖掘漏洞的潜力。
相关链接:
- 我们的AI发现了一个零知识证明库的漏洞,Sam Altman的项目也用了这个库https://mp.weixin.qq.com/s/MefyWBQJKU2Mf0vLwau8MQ
- gnark 官方漏洞公告:Security Advisories · Consensys/gnark · GitHub
- CVE-2025-57801:NVD – CVE-2025-57801