前言
北京时间11月7日,知道创宇区块链安全实验室监测到跨链协议SynapseProtocol推出的资产跨链桥被攻击,攻击者设法降低了nUSDMetapool虚拟价格并从中获利约800万美元。
知道创宇区块链安全实验室第一时间对本次事件深入跟踪并进行分析。
分析
攻击事件如下图所示,该次攻击事件的问题点并不在Synapse跨链桥本身,而是在Saddle开发的Metapool合约上。
Kanpai Pandas宣布推出动态稀有度系统:金色财经报道,NFT项目Kanpai Pandas在社交媒体宣布推出动态稀有度系统(Dynamic Rarity System),用户可以使用“熊猫积分”来购买新特征以提升或降低排名,但1 of 1 NFT(总共 15 个)和 Infinity Pandas(总共 247 个)不能改变特性,只能保持原样。上月底该NFT系列宣布成立Panda Lab并设置了六种不同的特征稀有度等级,每一种都会以不同的方式影响NFT稀有度,具有不同的成本、数量限制和稀有度分数。[2023/4/16 14:06:35]
在具体分析攻击事件之前,我们先来介绍一下什么是Metapool。Curve开发的stableswap实现中有两类池子,分别是Standardstableswappools和Metapools。
比特币矿企HIVE Blockchain 2月产出250枚BTC,售出267.7枚BTC:金色财经报道,比特币矿企HIVE Blockchain 2月产出250枚BTC,平均每天产出8.9枚,平均哈希率为2.75 EH/s,较1月环比增长16%。截止3月3日,HIVE共持有2365枚BTC,市值超过5600万美元,2月共售出267.7枚BTC,净收益为660万美元。
HIVE现已安装超过4200台BuzzMiner,并在数据中心接收至少5600台BuzzMiner,后续将继续安装以提高整体哈希率。此外,HIVE预计接下来2个月内将收到645台BuzzMiner。(Newsfilecorp)[2023/3/3 12:40:55]
Standardstableswappools:包括了多个基础资产,它们在一个小范围内彼此相互定价。
ACX清算人指控交易所使用客户资金开展业务:金色财经报道,由Blockchain Capital经营的去年倒闭的ACX加密货币交易所将客户存款用于资助其另一部分业务,而不是将留作储备,这涉及到调查该交易所清算人的调查结果的庭审。前首席技术官Jin Chen于2018年离开该公司,未被指控有任何不当行为,他告诉清算人,他受Blockchain Global联合创始人Allan Guo的指示,将客户账户中的比特币(BTC)转移到业务的其他部分。并且没办法识别客户的资金。
周三,在公共清算人对该集团进行审查期间,向维多利亚州最高法院披露了这些信息。目前对客户存入的数百万美元消失的调查正在进行中。[2022/10/22 16:35:16]
Metapools:实现了相同的stableswap不变量,但将资产D与资产A、B、C的LP代币进行定价时会导致池的理想平衡权重变为资产D的50%以及资产A、B、C的各16.66%,这既隔离了资产D的风险,又允许基础池用于额外的Metapools,这种池子虽然很好,但实现起来也会更加的复杂。
SBF:支持使用黑名单方式对加密货币行业进行监管:金色财经报道,FTX首席执行官Sam-Bankman Fried(SBF)在社交媒体上表示,他支持使用黑名单方式对加密货币行业进行监管,除非得到明确批准,否则个人可以自由交易。这与白名单或白名单形成鲜明对比,在白名单方式下,除非明确获得许可,否则默认情况下个人被禁止交易。 SBF解释说,加密行业需要快速、可靠的与非法金融相关的地址列表,但点对点传输通常应该是免费的,只要它们不去和受制裁的参与者进行交易,这可以同时有效地执行制裁合规,黑名单方式能够取得更健康的平衡。[2022/10/20 16:31:27]
基础信息
攻击者:
0x3ab92d06f5f2a33d8f45f836607f8da68cab81e8
攻击tx:0xe2f66358873553990911c15d2bbe8ffea72ddba86dfa64e32cde7ae998f09f350x415d4ad8c6237b6d110fc0ea66f0d1b4a3f13ac196ac5b708b037c07c83d69f2
漏洞合约:
https://github.com/saddle-finance/saddle-contract/blob/master/contracts/meta/MetaSwapUtils.so
流程
1、首先攻击者通过FirebirdRouter在Metaswap.sol上调用swap()函数和removeLiquidityOneToken()函数,先将nUSD兑换成nUSD-LP代币,再移除nUSD-LP获取USDC。
2、攻击者通过MetaswapDeposit合约中的addLiquidity()函数用USDC添加流动性换取nUSD-LP。
3、攻击者通过MetaswapDeposit合约中的removeLiquidityOneToken()函数用nUSD-LP移除流动性换取nUSD,然后依次循环,不断套利。
细节
在Metapool中当用户可以直接用资产D去兑换A、B或C,但在兑换到A、B、C的LP代币时,需要计算LP代码基本虚拟价格,而SaddleMetaswap合约中忽略计算LP代币基本虚拟价格的检查,详情代码见Metaswap合约的第424行。
因为增加流动性和从池中移除一个代币实际上和兑换是相同的,所以与此对应的是MetaSwapUtils合约的第277行,276行代码是在判断代币是否为LP代币,在检查到兑换的是LP代币时就进行LP代币基本虚拟价格的计算。
由于检查的忽略允许了攻击者0x3ab92d06f5f2a33d8f45f836607f8da68cab81e8进行不断的循环交易,上面提到的攻击流程是最后一次循环交易,从而使得nUSD-LP代币数量增加,降低了Metapool虚拟价格并从nUSD-LP中兑换走更多的nUSD代币。
在事件发生后官方更新了跨链桥受攻击事件进展,由于官方一直在线且反应迅速,没有给黑客跨链转移资金的机会,官方将不会处理黑客的交易,损失的SynapsenUSD也将全额返回给受影响的流动性提供者们。
截止目前,SynapseProtocol网络已经恢复正常活动并处理完了之前积压的交易,针对此次事件官方将Stableswap合约代替Metapool合约成为为新的nUSD资金池,以保证安全性,而未受影响的流动性提供者将需要解除抵押并从旧资金池中提取流动性以方便后续正常操作。
总结
Synapse跨链桥遭遇的攻击的核心原因在于外部的AMM计算合约Metapool中未对LP代币基本虚拟价格计算的检查,使得攻击者通过循环交易降低Metapool虚拟价格并从LP中抽走资金,从而获取约800万美元的nUSD资产。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。