Succinct主网Prover网络因SP1漏洞未能有效验证无效证明

以太坊 2026-10-24 10:30:18
核心提要:Succinct SP1零知识证明系统发现高危严重性漏洞Succinct的零知识证明系统SP1中存在一个高危严重性的健全性(soundness)漏洞,导致该公司主网Prover Network暴露于无效证明之下。根据10月11日发布的GitHub安全公告,该网络是唯一已知受影响的部署实例。在6.0.0至6.8.0版本中

Succinct SP1零知识证明系统发现高危严重性漏洞

Succinct的零知识证明系统SP1中存在一个高危严重性的健全性(soundness)漏洞,导致该公司主网Prover Network暴露于无效证明之下。根据10月11日发布的GitHub安全公告,该网络是唯一已知受影响的部署实例。

在6.0.0至6.8.0版本中,原生Rust验证器可能接受无效证明。编号为GHSA-p7v2-jjv3-8p8f的公告指出,恶意证明者可以提交针对无效执行的证明,而网络的验证器会予以接受。该Prover Network接受了来自第三方证明者的证明。

要利用此漏洞,证明必须直接发送至SP1的原生Rust验证器。Core和Compressed类型的证明在该路径上受到暴露。由于Groth16和Plonk检查使用了具有固定形状的包装证明,且从未触及由证明者控制的张量格式,因此它们是安全的。用于链上Plonk和Groth16检查的Solidity检查器也未受影响。使用verify_sp1_proof函数来检查Compressed证明的应用程序,只有在证明聚合最终生成Groth16或Plonk证明时才是安全的。

公告指出,从6.0.0到6.8.0版本,sp1_hypercube、sp1_prover和sp1_sdk均受到影响。Succinct于9月24日在6.8.1版本中发布了修复补丁,比公告公开时间早17天。

漏洞原理与修复细节

Succinct的安全公告GHSA-p7v2-jjv3-8p8f(评级为高危)列出了受影响的sp1_hypercube、sp1_prover和sp1_sdk版本6.0.0至6.8.0,以及已修复的版本6.8.1。

SP1的原生Rust验证器存在此漏洞,这是程序中用于检查证明有效性的部分。SP1将多维数据存储在“张量”(Tensor)中。张量由存储值的缓冲区和描述其形状声明维度组成。两者必须在健全性验证中保持一致:存储元素的数量必须等于给定维度的乘积。

每块证明数据上都标有一个标签显示其大小,但验证器从未确保标签内容与内部实际内容匹配,它仅查看标签。因此,攻击者可以发送带有伪造标签的数据。检查的不同部分随后会查看同一数据的各个部分,这意味着伪造的证明可以通过验证。

在6.8.1版本中,反序列化过程增加了长度检查。任何存储元素数量不等于其声明维度乘积的张量都将被拒绝。

后续影响与用户建议

6.8.1发布后,Succinct已将修复程序部署到主网Prover Network。向网络请求证明的用户无需进行任何更改。任何运行自己的原生Rust验证器并接受来自不受信任的证明者的证明的人,都需要升级至6.8.1版本。

公告称,Vitalis Salis通过Immunefi的漏洞赏金计划发现了该缺陷并进行了报告。

上一篇 大规模数据公司(GPUS)股价飙升34%...
下一篇 没有啦!

声明:文章不代表币圈网立场和观点,不构成本站任何投资建议。内容仅供参考!