BlockSec:技术简析 APE 空投闪电贷攻击过程

互联网 阅读 546 2022-03-18 14:40:00
套利机器人通过闪电贷薅羊毛,拿到 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 空投的奖励,那么就会创造一个实际的攻击机会。

免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:【潜在空投】Yat保姆级教程 下一篇:以太坊 PoS 合并临近,有哪些准备工作和注意事项?

您可能感兴趣