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

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

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

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

最后使用刚伪造的attackHash:

Beosin:sDAO项目遭受攻击事件简析:金色财经报道,根据区块链安全审计公司Beosin旗下Beosin?EagleEye 安全风险监控、预警与阻断平台监测显示,BNB链上的sDAO项目遭受漏洞攻击,Beosin分析发现由于sDAO合约的业务逻辑错误导致,getReward函数是根据合约拥有的LP代币和用户添加的LP代币作为参数来计算的,计算的奖励与用户添加LP代币数量正相关,与合约拥有总LP代币数量负相关,但合约提供了一个withdrawTeam的方法,可以将合约拥有的BNB以及指定代币全部发送给合约指定地址,该函数任何人都可调用。而本次攻击者向其中添加了LP代币之后,调用withdrawTeam函数将LP代币全部发送给了指定地址,并立刻又向合约转了一个极小数量的LP代币,导致攻击者在随后调用getReward获取奖励的时候,使用的合约拥有总LP代币数量是一个极小的值,使得奖励异常放大。最终攻击者通过该漏洞获得的奖励兑换为13662枚BUSD离场。Beosin Trace追踪发现被盗金额仍在攻击者账户,将持续关注资金走向。[2022/11/21 7:53:09]

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

Beosin:BSC链上的gala.games项目遭受攻击事件简析:金色财经报道,根据区块链安全审计公司Beosin旗下Beosin EagleEye 安全风险监控、预警与阻断平台监测显示,BSC链上的gala.games项目遭受攻击,Beosin分析发现由于pNetwork项目的bridge配置错误导致pTokens(GALA) 代币增发,累计增发55,628,400,000枚pTokens(GALA),攻击者已经把部分pTokens(GALA) 兑换成12,976个BNB,攻击者(0x6891A233Bca9E72A078bCB71ba02aD482A44e8C1)累计获利约434万美元。Beosin Trace追踪发现被盗金额还存在攻击者地址中。

第一笔攻击交易:0x4b239b0a92b8375ca293e0fde9386cbe6bbeb2f04bc23e7c80147308b9515c2e

第二笔攻击交易:0x439aa6f526184291a0d3bd3d52fccd459ec3ea0a8c1d5bf001888ef670fe616d[2022/11/4 12:17:00]

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

动态 | Beosin预警:持续警惕hardfail状态攻击 ?:Beosin(成都链安)预警,根据成都链安区块链安全态势感知系统Beosin-Eagle Eye检测发现,目前仍有不少攻击者尝试使用hard_fail 状态攻击,攻击测试目标已由交易所转向各类游戏合约,截止9号晚间10点,攻击者****wge在持续攻击中尝试混合使用正常转账交易和hardfail失败交易,在两次交易中设置同样的memo,如果项目方从节点获取交易数据时没有做好完整的交易判断,可能会因此造成损失,这种攻击尝试虽然简单但仍可能造成危害,Beosin(成都链安)提醒各项目方做好自检自查,对交易执行状态进行校验,避免不必要的损失。[2019/4/9]

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:15ms0-6:869ms