被薅了 APE 空投漏洞简析_YAC:imtoken里的钱怎么提现

北京时间2022年3月17日,我们的系统监控到涉及APECoin的可疑交易,根据twitter用户WillSheehan的报告,套利机器人通过闪电贷薅羊毛,拿到6W多APECoin。

我们经过分析后,发现这和APECoin的空投机制存在漏洞有关。具体来说,APECoin决定能否空投取决于某一个用户是否持有BYACNFT的瞬时状态,而这个瞬时状态攻击者是可以通过借入闪电贷然后redeem获得BYACNFT来操纵的。攻击者首先通过闪电贷借入BYACToken,然后redeem获得BYACNFT。然后使用这一些NFT来claim空投的APE,最后将BYACNFTmint获得BYACToken用来返还闪电贷。我们认为这个模式同基于闪电贷的价格操纵攻击非常类似。

接下来,我们使用一个攻击交易(https://versatile.blocksecteam.com/tx/eth/0xeb8c3bebed11e2e4fcd30cbfc2fb3c55c4ca166003c7f7d319e78eaab9747098)来简述整个过程。

StepI:攻击准备

攻击者购买了编号1060的BYACNFT并且转移给攻击合约。这个NFT是攻击者花了106ETH在公开市场购买的。

StepII:借入闪电贷并且redeem成BYACNFT

攻击者通过闪电贷借入大量的BYACToken。在这个过程中,攻击者通过redeemBYACtoken获得了5个BYACNFT。

StepIII:通过BYACNFT领取空投奖励

在这个过程中,攻击者使用了6个NFT来领取空投。1060是其购买,其余5个是在上一步获得。通过空投,攻击者共计获得60,564APEtokens奖励。

StepIV:mintBYACNFT获得BYACToken

攻击者需要归还借出的BYACToken。因此它将获得BYACNFTmint获得BYACToken。这个过程中,他还将其自己的编号为1060NFT也进行了mint。这是因为需要额外的BYACToken来支付闪电贷的手续费。然后将还完手续费后的BYACToken卖出获得14ETH。

获利

攻击者获得60,564APEtoken,价值50W美金。其攻击成本为1060NFT减去售卖BYACToken得到的14ETH。

Lessons

我们认为问题根源在于APE的空投只考虑瞬时状态。而这个假定是非常脆弱的,很容易被攻击者操控。如果攻击者操控状态的成本小于获得的APE空投的奖励,那么就会创造一个实际的攻击机会。

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

金宝趣谈

[0:46ms0-6:731ms