Beosin | 深度剖析零知识证明zk-SNARK漏洞:为什么零知识证明系统并非万无一失?_PRO:EOS

随着数字资产和区块链技术的快速发展,数字隐私保护和安全性成为了越来越受关注的话题。在这个背景下,一种名为"零知识证明"的技术正在逐渐崭露头角。

零知识证明技术可以在不泄露任何信息的情况下证明某些事情的真实性,被广泛应用于保护隐私和安全性。其中,基于零知识证明技术的zk-SNARK近期备受瞩目,成为数字资产和区块链技术领域的热门话题,但有一些安全问题却往往被我们忽视。

Beosin将陆续推出zk零知识证明安全研究,第一篇,本文将深入探讨zk-SNARK的背景,深度剖析零知识证明zk-SNARK漏洞:输入假名漏洞是如何被挖掘出来的?

Beosin:Jumpnfinance项目发生Rugpull,涉及金额约115万美元:金色财经报道,据Beosin EagleEye平台监测显示,Jumpnfinance项目Rugpull。攻击交易为0x48333962e6e946748a26d6222db95ce97e76c9ed3917123a7c9f2731f896b72c。Beosin安全团队分析发现攻击者首先调用0xe156合约的0x6b1d9018()函数,提取了该合约中的用户资产,存放在攻击者地址上(0xd3de02b1af100217a4bc9b45d70ff2a5c1816982)。目前被盗资金中2100 BNB ($581,700)已转入Tornado.Cash,剩余部分2,058 BNB($571,128)还存放在攻击者地址,Beosin安全团队将持续跟踪。Beosin Trace将对被盗资金进行持续追踪。[2022/10/10 12:51:13]

最后使用刚伪造的attackHash:

Beosin已完成对永久通缩协议Mimosa代码审计:12月28日消息。据官方通告,区块链安全公司Beosin(LianAnTech)宣布已完成对永久通缩协议Mimosa的审计工作,审计项包括协议安全性评估、代码漏洞审查等,确认了MIMO在以太坊链上传输,通过扣除转账手续费的形式进行代币销毁,手续费比例可在有效范围0-100%内修改,当手续费比例为100%时转账数量全部销毁;目前手续费为默认5%。[2020/12/28 15:54:14]

21888242871839275222246405745257275088548364400416034343698204186575808495694,同样验证通过!即同一份proof,可以被多次验证通过,即可造成双花攻击。

此外,由于本文使用ALT_BN128曲线进行复现,因此共计可以生成5个不同参数通过验证:

4.修复方案

Semaphore?项目已经针对该漏洞进行了修复,具体修复代码如下:

图源:https://github.com/semaphore-protocol/semaphore/blob/0cb0ef3514bc35890331379fd16c7be071ada4f6/packages/contracts/contracts/base/SemaphoreVerifier.sol#L42

图源:https://github.com/semaphore-protocol/semaphore/blob/0cb0ef3514bc35890331379fd16c7be071ada4f6/packages/contracts/contracts/base/Pairing.sol#L94

但是该漏洞属于实现上的通用漏洞,经过我们Beosin安全团队的研究发现,众多知名的零知识证明算法组件和DApp项目都受到该漏洞的影响,绝大部分后续进行了及时修复。以下列举出部分项目方的修复方案:

ethsnarks:

图源?https://github.com/HarryR/ethsnarks/commit/34a3bfb1b0869e1063cc5976728180409cf7ee96

snarkjs:

图源:https://github.com/iden3/snarkjs/commit/25dc1fc6e311f47ba5fa5378bfcc383f15ec74f4

heiswap-dapp:

图源:https://github.com/kendricktan/heiswap-dapp/commit/de022ffc9ffdfa4e6d9a7b51dc555728e25e9ca5#diff-a818b8dfd8f87dea043ed78d2e7c97ed0cda1ca9aed69f9267e520041a037bd5

EYBlockchain:

图源:https://github.com/EYBlockchain/nightfall/pull/96/files

此外,还有部分项目未能及时修复,Beosin安全团队已与项目方取得联系,正在积极协助修复。

针对此漏洞,Beosin安全团队提醒zk项目方,在进行proof验证时,应充分考虑算法设计在实际实现时,由于代码语言属性导致的安全风险。同时,强烈建议项目方在项目上线之前,寻求专业的安全审计公司进行充分的安全审计,确保项目安全。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

水星链

[0:46ms0-1:139ms