链捕手消息,据慢雾区分析,币安智能链DeFi项目AutoSharkFinance被黑,导致代币价格闪崩。慢雾团队针对攻击过程分析如下:
由于AutoShark策略池的机制,攻击者需要事先存入一定数量的LP代币到策略池中,为后续攻击做准备,所以整个攻击其实分成了2步,这里主要分析的是第2笔的攻击交易。
攻击步骤如下:
1.攻击者从Pancake的WBNB/BUSD交易对中借出大量WBNB;
慢雾创始人:去年11月14日-23日期间使用TrustWallet浏览器扩展创建的钱包存在风险:4月22日消息,慢雾创始人余弦在社交媒体引用Trust Wallet公告表示,若用户使用TrustWallet浏览器扩展且在2022年11月14日-23日期间创建了钱包,则该钱包将存在风险。本质原因是当时TrustWallet浏览器扩展使用的MT19937伪随机数生成器没有提供足够的随机性,导致私钥可以被破解。[2023/4/22 14:20:28]
2.将第1步借出的全部WBNB中的一半通过Panther的SHARK/WBNB交易对兑换出大量的SHARK,同时池中WBNB的数量增多;
慢雾:Inverse Finance遭遇闪电贷攻击简析:据慢雾安全团队链上情报,Inverse Finance遭遇闪电贷攻击,损失53.2445WBTC和99,976.29USDT。慢雾安全团队以简讯的形式将攻击原理分享如下:
1.攻击者先从AAVE闪电贷借出27,000WBTC,然后存225WBTC到CurveUSDT-WETH-WBTC的池子获得5,375.5个crv3crypto和4,906.7yvCurve-3Crypto,随后攻击者把获得的2个凭证存入Inverse Finance获得245,337.73个存款凭证anYvCrv3Crypto。
2.接下来攻击者在CurveUSDT-WETH-WBTC的池子进行了一次swap,用26,775个WBTC兑换出了75,403,376.18USDT,由于anYvCrv3Crypto的存款凭证使用的价格计算合约除了采用Chainlink的喂价之外还会根据CurveUSDT-WETH-WBTC的池子的WBTC,WETH,USDT的实时余额变化进行计算所以在攻击者进行swap之后anYvCrv3Crypto的价格被拉高从而导致攻击者可以从合约中借出超额的10,133,949.1个DOLA。
3.借贷完DOLA之后攻击者在把第二步获取的75,403,376.18USDT再次swap成26,626.4个WBTC,攻击者在把10,133,949.1DOLAswap成9,881,355个3crv,之后攻击者通过移除3crv的流动性获得10,099,976.2个USDT。
4.最后攻击者把去除流动性的10,000,000个USDTswap成451.0个WBT,归还闪电贷获利离场。
针对该事件,慢雾给出以下防范建议:本次攻击的原因主要在于使用了不安全的预言机来计算LP价格,慢雾安全团队建议可以参考Alpha Finance关于获取公平LP价格的方法。[2022/6/16 4:32:58]
3.将第1步和第2步的WBNB和SHARK打入到SharkMinter中,为后续攻击做准备;
动态 | 慢雾提醒:检测到 Upbit 交易所频繁出现代币转账情况:据慢雾情报消息,今日下午 12 点 06 分,巨鲸警报检测到 Upbit 交易所频繁出现代币转账情况,其中包含:342,000 个 ETH 从 Upbit 钱包转至未知钱包地址,11 亿个TRX、 863 万个 EOS、872 万个 XLM 等加密货币从 Upbit 钱包转至其他钱包地址,总计价值超 1 亿美元!
随后 Upbit 发出服务器检查公告。
慢雾提醒广大交易所、钱包以及个人注意资产安全、市场波动,注意避险![2019/11/27]
4.调用AutoShark项目中的WBNB/SHARK策略池中的getReward函数,该函数会根据用户获利的资金从中抽出一部分手续费,作为贡献值给用户奖励SHARK代币,这部分操作在SharkMinter合约中进行操作;
5.SharkMinter合约在收到用户收益的LP手续费之后,会将LP重新拆成对应的WBNB和SHARK,重新加入到Panther的WBNB/SHARK交易池中;
6.由于第3步攻击者已经事先将对应的代币打入到SharkMinter合约中,SharkMinter合约在移除流动性后再添加流动性的时候,使用的是SharkMinter合约本身的WBNB和SHARK余额进行添加,这部分余额包含攻击者在第3步打入SharkMinter的余额,导致最后合约获取的添加流动性的余额是错误的,也就是说SharkMinter合约误以为攻击者打入了巨量的手续费到合约中;
7.SharkMinter合约在获取到手续费的数量后,会通过tvlInWBNB函数计算这部分手续费的价值,然后根据手续费的价值铸币SHARK代币给用户。但是在计算LP价值的时候,使用的是PantherWBNB/SHARK池的WBNB实时数量除以LP总量来计算LP能兑换多少WBNB。但是由于在第2步中,Panther池中WBNB的数量已经非常多,导致计算出来的LP的价值非常高;
8.在LP价值错误和手续费获取数量错误的情况下,SharkMinter合约最后在计算攻击者的贡献的时候计算出了一个非常大的值,导致SharkMinter合约给攻击者铸出了大量的SHARK代币;
9.攻击者后续通过卖出SHARK代币来换出WBNB,偿还闪电贷。然后获利离开。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。