区块链新闻
-
臭臭!体味可能让你丧失参赛资格?
你是否曾想过,扑克桌上的“异味问题”竟然会成为赛事总监的一大困扰? 根据EV官网报导 (evpk1.com),近日锦标赛赛事总监 Matt Savage 分享了一个令全球赛事总监头疼的难题——如何应对选手身上的体味问题。 这...
-
全球化与合规双驱动:BYDFi正式加入韩国CODEVASP联盟
BYDFi加密货币交易所于2024年11月27日完成了里程碑式的合规突破—正式入驻韩国CODEVASP联盟。此举不仅大大提升了BYDFi在韩国市场的合规可信度,也展现了平台在国际化加密货币交易所合规领域上的持续努力。与此同时...
-
Candy Club推出奖励全新范式,开启区块链游戏新时代
奖励加密游戏玩家的新范式——Candy Gold Candy Club是全球首家接受超过83种加密货币的社交加密游戏平台,近期上线新版本推出Candy Gold, 是一个可持续的ingame奖励计划,旨在奖励加密项目和gamefi工会,NFT社区...
区块链技术
-
韩国国家银行(NH Bank)首次推出三星支持的区块链ID...
由韩国科技巨头三星支持的一个主要的区块链识别项目正在推广用于首次商业用途。 韩国的NongHyup(NH)银行已经引入了一个基于区块链的移动ID系统,该系统是在由大型本地公司(包括三星电子和LGUplus)建...
-
Block.One的基于EOS的社交网络语音Beta测试发布引...
Block.one的Facebook要求提供大量个人数据以启用Voice版 比隐私警报更令人关注的是使用数据收集债务和帮助执法–WeissCryptoRatings 最近,EOS推出了其社交网络“block.one的Facebook”语音测试版。...
-
巴西中央银行将推出基于QR的非加密“近乎即时”支付...
巴西中央银行将启动一个新的支付系统,据称它将提供近乎即时的资金转账。Cointelegraph报道说,新的支付系统定于11月发布。 新系统称为PIX,是巴西即时付款计划的缩写。该平台将允许在10秒内通过手...
慢雾:PancakeBunny 被黑简析
发布时间:2021/05/21 区块链金融 浏览:309
区块链经济网最新消息,据慢雾区情报,币安智能链上 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 团队。