本文作者:yudan@慢雾安全团队前言
今早,bZx疑似遭遇第二次攻击,不同的是本次的对象是ETH/sUSD交易对,但也许有人会有疑问,sUSD不是对标USD的稳定币吗?这都能被攻击?攻击手法具体是怎样的?带着这样的疑问,针对此次事件,慢雾安全团队接下来将复盘这两次攻击过程。在第一次攻击中,攻击者结合Flashloan和Compound中的贷款,对bZx实施攻击,主要分成以下几步:从dYdX借了10000个ETH到Compound用5500ETH借了112个BTC准备抛售到bZx中用1300个ETH开5倍杠杆做空,换了51.345576个BTC,而这里换取的BTC是通过KyberNetwork来获取价格的,然而KyberNetwork最终还是调用Uniswap来获取价格,5倍杠杆开完后兑换回来的51个BTC实际上是拉高了UniSwap中BTC/ETH的价格,换取价格是1/109,但是实际上大盘的价格不会拉到这么多用从Compound借来的112个BTC来在UniSwap中卖掉,由于第三步中bZx中的5倍杠杆已经把价格拉高,所以这个时候出售ETH肯定是赚的,然后卖了6871个ETH归还dYdX中的借贷第二次攻击与之前稍有不同,但核心都在于控制预言机价格,并通过操纵预言机价格获利。注:下文中出现的WETH是ETH的token化代币,可统一认为是ETH。与ETH之间的兑换比例是1:1细节剖析
慢雾:CoinsPaid、Atomic与Alphapo攻击者或均为朝鲜黑客组织Lazarus:7月26日消息,慢雾发推称,CoinsPaid、Atomic与Alphapo攻击者或均为朝鲜黑客组织Lazarus Group。慢雾表示,TGGMvM开头地址收到了与Alphapo事件有关TJF7md开头地址转入的近1.2亿枚TRX,而TGGMvM开头地址在7月22日时还收到了通过TNMW5i开头和TJ6k7a开头地址转入的来自Coinspaid热钱包的资金。而TNMW5i开头地址则曾收到了来自Atomic攻击者使用地址的资金。[2023/7/26 16:00:16]
本次发生攻击的交易哈希为:0x762881b07feb63c436dee38edd4ff1f7a74c33091e534af56c9f7d49b5ecac15通过etherscan上的分析,我们看到这笔交易中发生了大量的token转账。
慢雾:Equalizer Finance被黑主要在于FlashLoanProvider合约与Vault合约不兼容:据慢雾区消息,6 月 7 日,Equalizer Finance 遭受闪电贷攻击。慢雾安全团队以简讯形式将攻击原理分享如下:
1. Equalizer Finance 存在 FlashLoanProvider 与 Vault 合约,FlashLoanProvider 合约提供闪电贷服务,用户通过调用 flashLoan 函数即可通过 FlashLoanProvider 合约从 Vault 合约中借取资金,Vault 合约的资金来源于用户提供的流动性。
2. 用户可以通过 Vault 合约的 provideLiquidity/removeLiquidity 函数进行流动性提供/移除,流动性提供获得的凭证与流动性移除获得的资金都受 Vault 合约中的流动性余额与流动性凭证总供应量的比值影响。
3. 以 WBNB Vault 为例攻击者首先从 PancekeSwap 闪电贷借出 WBNB
4. 通过 FlashLoanProvider 合约进行二次 WBNB 闪电贷操作,FlashLoanProvider 会先将 WBNB Vault 合约中 WBNB 流动性转给攻击者,随后进行闪电贷回调。
5. 攻击者在二次闪电贷回调中,向 WBNB Vault 提供流动性,由于此时 WBNB Vault 中的流动性已经借出一部分给攻击者,因此流动性余额少于预期,则攻击者所能获取的流动性凭证将多于预期。
6. 攻击者先归还二次闪电贷,然后从 WBNB Vault 中移除流动性,此时由于 WBNB Vault 中的流动性已恢复正常,因此攻击者使用添加流动性获得凭证所取出的流动性数量将多于预期。
7. 攻击者通过以上方式攻击了在各个链上的 Vault 合约,耗尽了 Equalizer Finance 的流动性。
此次攻击的主要原因在于 Equalizer Finance 协议的 FlashLoanProvider 合约与 Vault 合约不兼容。慢雾安全团队建议协议在进行实际实现时应充分考虑各个模块间的兼容性。[2022/6/8 4:09:22]
慢雾:ERC721R示例合约存在缺陷,本质上是由于owner权限过大问题:4月12日消息,据@BenWAGMI消息,ERC721R示例合约存在缺陷可导致项目方利用此问题进行RugPull。据慢雾安全团队初步分析,此缺陷本质上是由于owner权限过大问题,在ERC721R示例合约中owner可以通过setRefund Address函数任意设置接收用户退回的NFT地址。
当此退回地址持有目标NFT时,其可以通过调用refund函数不断的进行退款操作从而耗尽用户在合约中锁定的购买资金。且示例合约中存在owner Mint函数,owner可在NFT mint未达总供应量的情况下进行mint。因此ERC721R的实现仍是防君子不防小人。慢雾安全团队建议用户在参与NFTmint时不管项目方是否使用ERC721R都需做好风险评估。[2022/4/12 14:19:58]
这么多转账交易中,攻击者一共购买了20次sUSD,最终获利离场,那么攻击者具体是怎么操作的呢?我们使用区块浏览器bloxy.info来做进一步分析。1、赛前准备
慢雾:Avalanche链上Zabu Finance被黑简析:据慢雾区情报,9月12日,Avalanche上Zabu Finance项目遭受闪电贷攻击,慢雾安全团队进行分析后以简讯的形式分享给大家参考:
1.攻击者首先创建两个攻击合约,随后通过攻击合约1在Pangolin将WAVAX兑换成SPORE代币,并将获得的SPORE代币抵押至ZABUFarm合约中,为后续获取ZABU代币奖励做准备。
2.攻击者通过攻击合约2从Pangolin闪电贷借出SPORE代币,随后开始不断的使用SPORE代币在ZABUFarm合约中进行`抵押/提现`操作。由于SPORE代币在转账过程中需要收取一定的手续费(SPORE合约收取),而ZABUFarm合约实际接收到的SPORE代币数量是小于攻击者传入的抵押数量的。分析中我们注意到ZABUFarm合约在用户抵押时会直接记录用户传入的抵押数量,而不是记录合约实际收到的代币数量,但ZABUFarm合约在用户提现时允许用户全部提取用户抵押时合约记录的抵押数量。这就导致了攻击者在抵押时ZABUFarm合约实际接收到的SPORE代币数量小于攻击者在提现时ZABUFarm合约转出给攻击者的代币数量。
3.攻击者正是利用了ZABUFarm合约与SPORE代币兼容性问题导致的记账缺陷,从而不断通过`抵押/提现`操作将ZABUFarm合约中的SPORE资金消耗至一个极低的数值。而ZABUFarm合约的抵押奖励正是通过累积的区块奖励除合约中抵押的SPORE代币总量参与计算的,因此当ZABUFarm合约中的SPORE代币总量降低到一个极低的数值时无疑会计算出一个极大的奖励数值。
4.攻击者通过先前已在ZABUFarm中有进行抵押的攻击合约1获取了大量的ZABU代币奖励,随后便对ZABU代币进行了抛售。
此次攻击是由于ZabuFinance的抵押模型与SPORE代币不兼容导致的,此类问题导致的攻击已经发生的多起,慢雾安全团队建议:项目抵押模型在对接通缩型代币时应记录用户在转账前后合约实际的代币变化,而不是依赖于用户传入的抵押代币数量。[2021/9/12 23:19:21]
和第一次一样,首先攻击者需要从Flashloan借入一定的金额开始本次的攻击,第一次攻击是从dYdX借入10000ETH,这次,攻击者选择从bZx本身支持的Flashloan下手,借入7500个ETH。
慢雾:Cover协议被黑问题出在rewardWriteoff具体计算参数变化导致差值:2020年12月29日,慢雾安全团队对整个Cover协议被攻击流程进行了简要分析。
1.在Cover协议的Blacksmith合约中,用户可以通过deposit函数抵押BPT代币;
2.攻击者在第一次进行deposit-withdraw后将通过updatePool函数来更新池子,并使用accRewardsPerToken来记录累计奖励;
3.之后将通过_claimCoverRewards函数来分配奖励并使用rewardWriteoff参数进行记录;
4.在攻击者第一次withdraw后还留有一小部分的BPT进行抵押;
5.此时攻击者将第二次进行deposit,并通过claimRewards提取奖励;
6.问题出在rewardWriteoff的具体计算,在攻击者第二次进行deposit-claimRewards时取的Pool值定义为memory,此时memory中获取的Pool是攻击者第一次withdraw进行updatePool时更新的值;
7.由于memory中获取的Pool值是旧的,其对应记录的accRewardsPerToken也是旧的会赋值到miner;
8.之后再进行新的一次updatePool时,由于攻击者在第一次进行withdraw后池子中的lpTotal已经变小,所以最后获得的accRewardsPerToken将变大;
9.此时攻击者被赋值的accRewardsPerToken是旧的是一个较小值,在进行rewardWriteoff计算时获得的值也将偏小,但攻击者在进行claimRewards时用的却是池子更新后的accRewardsPerToken值;
10.因此在进行具体奖励计算时由于这个新旧参数之前差值,会导致计算出一个偏大的数值;
11.所以最后在根据计算结果给攻击者铸造奖励时就会额外铸造出更多的COVER代币,导致COVER代币增发。具体accRewardsPerToken参数差值变化如图所示。[2020/12/29 15:58:07]
2、发球
在完成从bZx的借入之后,攻击者开始通过Kyber进行sUSD的买入操作,第一次使用了540个ETH购买了92,419.7个sUSD,这个操作令WETH/sUSD的价格瞬间拉低,捧高了sUSD的价格。这次的交易兑换的比例大概为1:170,而Kyber最终是通过UniSwap来进行兑换的,所以此时Uniswap的WETH/sUSD处于低位,反过来,sUSD/WETH升高。在完成第一次的540个ETH的兑换之后,攻击者再次在Kyber进行18次小额度的兑换,每次使用20个ETH兑换sUSD,从etherscan我们能够看到,每一次的兑换回来的sUSD金额在不断减少。
这表明sUSD/WETH的价格被进一步拉升,这加剧了Uniswap中sUSD/WETH的价格,此时价格已经达到顶峰了,大概是1:157。在完成以上两步操作之后,攻击者已经完成狩猎前的准备,随时可以开始攻击。3、一杆进洞
在完成对sUSD/WETH的拉升后,攻击者此时需要采集大量的sUSD,为后续兑换WETH做准备。为了达成这个目的,攻击者向Synthetix发起sUSD的购买,通过向Synthetix发送6000ETH购买sUSD,直接把Synthetix中的sUSD买空,Synthetix合约返还2482个ETH给攻击者。
完成了上面的操作后,攻击者直接对bZx发动总攻,直接用之前操作得来的一共1,099,841个sUSD向bZx兑换WETH,此时由于bZx兑换还是要去查询Uniswap的sUSD/WETH的价格,而这个价格已经被攻击者人为拉得很高了,此时兑换,就能通过1,099,841个sUSD换取大量的WETH,此次交易一共用1,099,841个sUSD换取了6792个WETH,此时攻击已经完成。4、归还借贷
完成了对bZx的攻击之后,将7500ETH归还给bZx,完成闪电贷流程,从bZx来,再回到bZx去,还使bZx遭受了损失。赛后复盘
通过分析攻击者的攻击手法,我们统计下攻击者在攻击过程中的支出和收入情况。收入
7500=>bZx闪电贷+2482=>Synthetix返还+6792=>使用sUSD在bZX兑换WETH=16774ETH支出
540+(20*18)=>拉高sUSD/WETH价格+6000=>买空sUSD+7500=>归还bZx闪电贷=14400ETH总的收益为:16774-14400=2374ETH防御建议
两次攻击的主要原因还是因为Uniswap的价格的剧烈变化最终导致资产的损失,这本该是正常的市场行为,但是通过恶意操纵市场,攻击者可通过多种方式压低价格,使项目方造成损失。针对这种通过操纵市场进行获利的攻击,慢雾安全团队给出如下建议:项目方在使用预言机获取外部价格的时候,应设置保险机制,每一次在进行代币兑换时,都应保存当前交易对的兑换价格,并与上一次保存的兑换价格进行对比,如果波动过大,应及时暂停交易。防止市场被恶意操纵,带来损失。
标签:ETHUSDSUSDABUDiversified Staked Ethereum IndexBUSDASUSD价格ABU价格
先把通胀从5%调整到1%,再销毁eosio.saving账户里3400万枚的EOS,EOS的“堰塞湖”这次真的没了.
1900/1/1 0:00:00头条bZx闪电贷再次遭受攻击,DeFi生态中锁定资产价值大幅下降以太坊爱好者、Ethhub创始人EricConner在Twitter上表示,bZx闪电贷FlashLoan攻击疑似再次出现.
1900/1/1 0:00:00编者按:本文来自量化踢马河,Odaily星球日报经授权转载。自从央行数字货币的概念兴起以来,有近80%的中央银行都正在以某种形式开发中央银行数字货币.
1900/1/1 0:00:00邓可爱:第一个问题,咱们先聊聊最近发生的事情吧,Fcoin资金漏洞高达7000-13000BTC之间,各位嘉宾对FCoin怎么看?夜猫:FCoin步子迈得太大,使得内部管理混乱,然后出了大问题.
1900/1/1 0:00:00编者按:本文来自中本小葱,Odaily星球日报经授权发布。根据加密货币分析公司IntoTheBlock的数据,随着以太坊现货和衍生品市场出现爆炸性增长,有43%的ETH地址在盈利.
1900/1/1 0:00:00最近有读者问我波卡这个项目如何。最近也有很多关于波卡这个项目的资讯,主网很有可能在今年上线,但也大概率是在6月之后;有媒体分析波卡上线的目标价位是135美元.
1900/1/1 0:00:00