APE 空投漏洞简析

This article is not available in the current language yet. Showing the original version.
北京时间2022年3月17日,我们的系统监控到涉及APE Coin的可疑交易,根据twitter用户Will Sheehan的报告,套利机器人通过闪电贷薅羊毛,拿到6W多APE Coin(每个价值8美元)。我们经过分析后,发现这和APE Coin的空投机制存在漏洞有关。具体来说,APE Coin

北京时间2022年3月17日,我们的系统监控到涉及APE Coin的可疑交易,根据twitter用户Will Sheehan的报告,套利机器人通过闪电贷薅羊毛,拿到6W多APE Coin(每个价值8美元)。

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

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

Step I: 攻击准备

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

Step II: 借入闪电贷并且redeem成BYAC NFT

攻击者通过闪电贷借入大量的BYAC Token。在这个过程中,攻击者通过redeem BYAC token获得了5个BYAC NFT(编号 7594,8214,9915,8167,4755)。

Step III:通过BYAC NFT领取空投奖励

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

Step IV: mint BYAC NFT获得BYAC Token

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

获利

攻击者获得60,564 APE token,价值50W美金。其攻击成本为1060 NFT(106ETH)减去售卖BYAC Token得到的14ETH。

Lessons

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

Share to:

Author: BlockSec

Opinions belong to the column author and do not represent PANews.

This content is not investment advice.

Image source: BlockSec. If there is any infringement, please contact the author for removal.

Follow PANews official accounts, navigate bull and bear markets together