BlockSec:技术简析 APE 空投闪电贷攻击过程
BlockSec
2022-03-18 14:40
订阅此专栏
收藏此文章
套利机器人通过闪电贷薅羊毛,拿到 6万 多 APE 代币。


原文标题:《APE 空投漏洞简析》

撰文:BlockSec


北京时间 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 用来返还闪电贷。我们认为这个模式同基于闪电贷的价格操纵攻击非常类似(合约通过一个资产的瞬时价格来对另外一个资产进行定价,而这个瞬时价格可以被操控)。

接下来,我们使用一个攻击交易来简述整个过程。

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 空投的奖励,那么就会创造一个实际的攻击机会。


【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

BlockSec
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开