随着数字资产和区块链技术的快速发展,数字隐私保护和安全性成为了越来越受关注的话题。在这个背景下,一种名为"零知识证明"的技术正在逐渐崭露头角。
零知识证明技术可以在不泄露任何信息的情况下证明某些事情的真实性,被广泛应用于保护隐私和安全性。其中,基于零知识证明技术的zk-SNARK近期备受瞩目,成为数字资产和区块链技术领域的热门话题,但有一些安全问题却往往被我们忽视。
Beosin将陆续推出zk零知识证明安全研究,第一篇,本文将深入探讨zk-SNARK的背景,深度剖析零知识证明zk-SNARK漏洞:输入假名漏洞是如何被挖掘出来的?
Beosin:Arbitrum上的Rodeo Finance疑似遭遇攻击,损失150万美元:金色财经报道,据Beosin旗下Beosin EagleEye监控显示,Arbitrum上的杠杆收益协议Rodeo Finance疑似遭遇攻击,目前统计被盗资金约150万美元,Beosin提醒用户注意资金安全。[2023/7/11 10:48:08]
最后使用刚伪造的attackHash:
21888242871839275222246405745257275088548364400416034343698204186575808495694,同样验证通过!即同一份proof,可以被多次验证通过,即可造成双花攻击。
此外,由于本文使用ALT_BN128曲线进行复现,因此共计可以生成5个不同参数通过验证:
Beosin:BRA代币被攻击,损失820个WBNB:金色财经报道,据区块链安全审计公司Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测显示,BRA代币被攻击,交易哈希:0x6759db55a4edec4f6bedb5691fc42cf024be3a1a534ddcc7edd471ef205d4047与0x4e5b2efa90c62f2b62925ebd7c10c953dc73c710ef06695eac3f36fe0f6b9348。据Beosin安全技术人员分析,该攻击是由BRA合约的逻辑漏洞所导致,BRA转移过程中如果调用方或接收方为pair,则会产生奖励。此处,攻击者直接转移部分BRA代币给0x8F4BA1交易pair合约,并调用pair的skim函数,该函数会将多余供应量的BRA代币发送给指定地址,此处攻击者设置本pair为接收地址,BRA又重新回到pair,导致经过一次skim,pair的BRA代币就会增加(奖励部分),多次skim后,pair中已经存在大量BRA代币。最后,攻击者通过pair的闪电贷功能,将UBST借贷出来,由于BRA代币异常多,所以pair在闪电贷最后判断余额的时候,就算UBST少了,也能通过检查(类似于乘积恒定的方式)。目前被盗资金全部存在攻击者地址(0xE2Ba15be8C6Fb0d7C1F7bEA9106eb8232248FB8B),Beosin Trace将持续对被盗资金进行监控。[2023/1/10 11:04:38]
Beosin与SUSS NiFT、NUS AIDF等共同成立“区块链生态安全联盟”:金色财经报道,9月24日,Web3安全公司Beosin宣布与SUSS NiFT、NUS AIDF、新加坡区块链协会、Fomo Pay、Coin Hako、Onchain Custodian、Paritybit、Semisand等在新加坡联合成立“区块链生态安全联盟”。未来,联盟成员将在区块链生态进行紧密合作,通过联盟整合区块链安全领域的技术创新,探索和建立区块链安全生态体系,促进区块链安全领域产学研合作和科技成果转化,营造良好的产业发展环境,推动区块链安全产业的发展。[2022/9/25 7:19:44]
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验证时,应充分考虑算法设计在实际实现时,由于代码语言属性导致的安全风险。同时,强烈建议项目方在项目上线之前,寻求专业的安全审计公司进行充分的安全审计,确保项目安全。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。