随着数字资产和区块链技术的快速发展,数字隐私保护和安全性成为了越来越受关注的话题。在这个背景下,一种名为"零知识证明(Zero-Knowledge Proof)"的技术正在逐渐崭露头角。
零知识证明技术可以在不泄露任何信息的情况下证明某些事情的真实性,被广泛应用于保护隐私和安全性。其中,基于零知识证明技术的zk-SNARK近期备受瞩目,成为数字资产和区块链技术领域的热门话题,但有一些安全问题却往往被我们忽视。
Beosin将陆续推出zk零知识证明安全研究,第一篇,本文将深入探讨zk-SNARK的背景,深度剖析零知识证明zk-SNARK漏洞:输入假名漏洞是如何被挖掘出来的?
Beosin:Polygon链上Atlantis Loans协议再度发起恶意提案:金色财经报道,区块链安全审计公司Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测显示,Polygon链上Atlantis Loans协议再度发起恶意提案,提案ID:18。事前2023年6月11日Atlantis Loans协议曾经因恶意提案篡改管理合约权限,替换后门合约,导致协议损失250W美元。Beosin提醒相关用户尽快移除相关授权,防止资产损失。[2023/7/14 10:55:03]
最后使用刚伪造的attackHash:
21888242871839275222246405745257275088548364400416034343698204186575808495694,同样验证通过!即同一份proof,可以被多次验证通过,即可造成双花攻击。
Beosin:Avalanche链上Platypus项目损失850万美元攻击事件解析:2月17日,据区块链安全审计公司Beosin旗下Beosin EagleEye安全风险监控、 预警与阻断平台监测显示,Avalanche链上的Platypus项目合约遭受闪电贷攻击,Beosin安全团队分析发现攻击者首先通过闪电贷借出4400万USDC之后调用Platypus Finance合约的deposit函数质押,该函数会为攻击者铸造等量的LP-USDC,随后攻击者再把所有LP-USDC质押进MasterPlatypusV4合约的4号池子当中,然后调用positionView函数利用_borrowLimitUSP函数计算出可借贷余额,_borrowLimitUSP函数会返回攻击者在MasterPlatypusV4中质押物品的价值的百分比作为可借贷上限,利用该返回值通过borrow函数铸造了大量USP(获利点),由于攻击者自身存在利用LP-USDC借贷的大量债务(USP),那么在正常逻辑下是不应该能提取出质押品的,但是MasterPlatypusV4合约的emergencyWithdraw函数检查机制存在问题,仅检测了用户的借贷额是否超过该用户的borrowLimitUSP(借贷上限)而没有检查用户是否归还债务的情况下,使攻击者成功提取出了质押品(4400万LP-USDC)。归还4400万USDC闪电贷后, 攻击者还剩余41,794,533USP,随后攻击者将获利的USP兑换为价值8,522,926美元的各类稳定币。[2023/2/17 12:12:32]
此外,由于本文使用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]
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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。