PancakeBunny 被黑简析

慢雾:PancakeBunny 被黑简析

据慢雾区情报,币安智能链上 DeFi 收益聚合器 PancakeBunny 项目遭遇闪电贷攻击,慢雾安全团队第一时间介入分析,并将结果以简讯的形式分享,供大家参考:

1. 攻击者先发起一笔交易,使用 0.5 个 WBNB 与约 189 个 USDT 在 PancakeSwap 中添加流动性并获取对应的 LP,随后将 LP 抵押至 PancakeBunny 项目的 VaultFlipToFlip 合约中。

2. 在 LP 抵押完成后,攻击者再次发起另一笔交易,在这笔交易中攻击者先从 PancakeSwap 的多个流动性池子中闪电贷借出巨量的 WBNB 代币,并从 Fortube 项目的闪电贷模块借出一定数量的 USDT 代币。随后使用借来的全部 USDT 代币与 部分 WBNB 代币在 PancakeSwap 的 WBNB-USDT 池子添加流动性,并把获得的 LP 留在 WBNB-USDT 池子中。

3. 由于在步骤 1 攻击者已经在 VaultFlipToFlip 合约中进行了抵押,因此攻击者在添加完流动性后直接调用 VaultFlipToFlip 合约的 getReward 函数来获取 BUNNY 代币奖励并取回先前抵押的流动性。

4. 在进行 getReward 操作时,其会调用 BunnyMinterV2 合约的 mintForV2 函数来为调用者铸造 BUNNY 代币奖励。

5. 在 mintForV2 操作中,其会先将一定量 (performanceFee) 的 LP 转至 WBNB-USDT 池子中移除流动性,但由于在步骤 2 中攻击者把大量的 LP 留在了池子中,因此 BunnyMinterV2 合约将会收到大量的 WBNB 代币 与 USDT 代币。

6. 在完成移除流动性后会调用 zapBSC 合约的 zapInToken 函数分别把步骤 5 中收到的 WBNB 与 USDT 代币转入 zapBSC 合约中。

7. 而在 zapInToken 操作中,其会在 PancakeSwap 的 WBNB-USDT 池子中把转入的 USDT 兑换成 WBNB。随后再将合约中半数 WBNB 在 PancakeSwap 的 WBNB-BUNNY 池子中兑换成 BUNNY 代币,并将得到的 BUNNY 代币与剩余的 WBNB 代币在 WBNB-BUNNY 池子中添加流动性获得 LP,并将此 LP 转至 mintForV2 合约中。而由于步骤 5 中接收到的非预期的大量的 WBNB,并且进行 WBNB 兑换成 BUNNY 代币的操作,因此 WBNB-BUNNY 池子中的 WBNB 数量会大量增加。

8. 在完成 zapInToken 操作后会计算 BunnyMinterV2 合约当前收到的 WBNB-BUNNY LP 数量,并将其返回给 mintForV2。随后将会调用 PriceCalculatorBSCV1 合约的 valueOfAsset 函数来计算这些 LP 的价值,这里计算价值将会以 BNB 结算 (即单个 LP 价值多少个 BNB)。

9. 在 valueOfAsset 计算中,其使用了 WBNB-BUNNY 池子中 WBNB 实时的数量乘 2 再除以 WBNB-BUNNY LP 总数量来计算单个 LP 的价值 (valueInBNB)。但经过步骤 7,我们可以发现 WBNB-BUNNY 池子中的 WBNB 非预期的数量大量变多了,这就导致了在计算单个 LP 的价值会使得其相对 BNB 的价格变得非常高。

10. 随后在 mintForV2 中,合约会以在步骤 9 中计算出的 LP 价值来通过 amountBunnyToMint 函数计算需要给攻击者铸造多少 BUNNY 代币。但由于价格计算方式的缺陷导致最终 LP 的价格被攻击者恶意的操控抬高了,这就导致了 BunnyMinterV2 合约最终给攻击者铸造了大量的 BUNNY 代币 (约 697 万枚)。

11. 在拿到 BUNNY 代币后,攻击者将其分批卖出成 WBNB 与 USDT 以归还闪电贷。完成整个攻击后拿钱走人。

总结:

这是一次典型的利用闪电贷操作价格的攻击,其关键点在于 WBNB-BUNNY LP 的价格计算存在缺陷,而 BunnyMinterV2 合约铸造的 BUNNY 数量依赖于此存在缺陷的 LP 价格计算方式,最终导致攻击者利用闪电贷操控了 WBNB-BUNNY 池子从而拉高了 LP 的价格,使得 BunnyMinterV2 合约铸造了大量的 BUNNY 代币给攻击者。慢雾安全团队建议,在涉及到此类 LP 价格计算时可以使用可信的延时喂价预言机进行计算或者参考此前 Alpha Finance 团队。

24小时热点

热点专题

Gem和Genie功能大对比

2022年4月25日,OpenSea官方发推宣布收购NFT交 ...

2397889

TopHolder 头号藏家

Genie 就是一个 NFT 市场的交易聚合器

Web3 中的「聚合器」是一个非常重要的组件,例如 1inc ...

2363077

嗨艺购

一个pi币现在值多少人民币?pi币2024年可以交易吗?

近年来,加密货币市场迅速发展,各种新型数字资产层出不穷。其中 ...

1625055

Alameda Research

USDT是什么币?新手如何购买和交易?

USDT是什么币?新手如何购买和交易?USDT是什么?USD ...

1301292

Cosmos Art

2024年pi币多少钱一个?介绍pi币历年价格

Pi币是一种新兴的数字货币,它的概念于2019年由一位斯坦福 ...

1287487

Alameda Research

CORE未来能涨到多少钱?core2024大约能涨到多少钱?

在数字货币市场中,CORE 作为一种加密货币,在过去的一段时 ...

878479

BitKeep钱包

欧科集团设立1000万元疫情防治专项基金 联合中华慈善总会共同支援一线防护工作

这个春节,新型冠状病毒疫情牵动着大家的心。1月26日0—24 ...

832338

TokenInsight

举报:PAXG币 (PAX Gold)涉嫌违法?

PAXG币(PAX Gold)是一种基于以太坊区块链网络创建 ...

780914

NewsBTC

什么是Polygon(Matic)网络?

由于网络拥堵仍然是以太坊区块链的一个问题,像Polygon这 ...

774002

树图链

ZT交易所介绍

ZT交易所介绍 ZT是为全球用户提供最优质数字资 ...

759409

ZT GLOBAL 交易所