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的漏洞赏金计划发现了该缺陷并进行了报告。

交易所
交易所排行榜
24小时成交排行榜
人气排行榜
交易所比特币余额
交易所资产透明度证明
去中心化交易所
资金费率
资金费率热力图
爆仓数据
清算最大痛点
多空比
大户多空比
币安/欧易/火币大户多空比
Bitfinex杠杆多空比
ETF追踪
索拉纳ETF
瑞波币ETF
香港ETF
比特币持币公司
加密资产反转
以太坊储备
HyperLiquid钱包分析
Hyperliquid鲸鱼监控
大额转账
链上异动
比特币回报率
稳定币市值
期权分析
新闻
文章
财经日历
专题
钱包
合约计算器
账号安全
资讯收藏
自选币种
我的关注