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

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

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

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

最后使用刚伪造的attackHash:

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

Beosin:Rabby项目遭受黑客攻击,涉及金额约20万美元:金色财经报道,据Beosin EagleEye Web3安全预警与监控平台监测显示,Rabby项目遭受黑客攻击。因为RabbyRouter的_swap函数存在外部调用,任意人都可以调用该函数,转走授权该合约用户的资金。目前攻击者已在Ethereum,BSC链,polygon,avax,Fantom,optimistic,Arbitrum发起攻击,请用户取消对相应合约的授权。以下是存在问题的合约:

Bsc合约地址:0xf756a77e74954c89351c12da24c84d3c206e5355、

Ethereum合约地址:0x6eb211caf6d304a76efe37d9abdfaddc2d4363d1、

optimistic合约地址:0xda10009cbd5d07dd0cecc66161fc93d7c9000da1、

avax合约地址:0x509f49ad29d52bfaacac73245ee72c59171346a8、

Fantom合约地址:0x3422656fb4bb0c6b43b4bf65ea174d5b5ebc4a39、

Arbitrum合约地址:0xf401c6373a63c7a2ddf88d704650773232cea391、

Beosin安全团队分析发现攻击者(0xb687550842a24D7FBC6Aad238fd7E0687eD59d55)已把全部获得的代币兑换为相应平台币,目前被盗资金已全部转移到Tornado Cash中。Beosin Trace将对被盗资金进行持续追踪。[2022/10/12 10:31:31]

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

Beosin:TempleDAO项目遭受黑客攻击,涉及金额约236万美元:据Beosin EagleEye Web3安全预警与监控平台监测显示,TempleDAO项目遭受黑客攻击。因为在StaxLPStaking合约的migrateStake函数缺少权限校验,导致任意人都可以通过该函数提取合约中的StaxLP。

Beosin安全团队分析发现攻击者已把全部获得的StaxLP代币全部兑换为ETH,目前被盗资金已全部转移到0x2B63d4A3b2DB8AcBb2671ea7B16993077F1DB5A0地址,Beosin安全团队将持续跟踪。Beosin Trace将对被盗资金进行持续追踪。[2022/10/12 10:31:30]

Beosin:Gnosis Omni Bridge跨链桥项目存在合约层面的重放漏洞:金色财经报道,Beosin 安全团队发现,在以太坊合并并分叉出 ETHW 后,Gnosis Omni Bridge跨链桥项目,由于合约代码中固定写死了chainID,而未真正验证当前所在链的chainID,导致合约在验证签名时能够在分叉链上验证通过。攻击者首先在 ETH 主网上通过omni Bridge 转移 WETH,随后将相同的交易内容在 ETHW 链上进行了重放,获取了等额的 ETHW。目前攻击者已经转移了 741 ETHW 到交易所。

Beosin 安全团队建议如果项目方合约里面预设了chainID,请先手动将chainId更新,即使项目方决定不支持ETHW,但是由于无法彻底隔绝通过跨链桥之间的资产流动,建议都在ETHW链上更新。[2022/9/19 7:04:46]

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

EY Blockchain:

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

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

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

Beosin

企业专栏

阅读更多

金色荐读

金色财经 善欧巴

Chainlink预言机

区块律动BlockBeats

白话区块链

金色早8点

Odaily星球日报

MarsBit

Arcane Labs

深潮TechFlow

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

金星链

[0:31ms0-0:940ms