慢雾简析 PancakeBunny 被黑:由 WBNB-BUNNY LP 价格计算存在缺陷被攻击者利用所致

  • A+
所属分类:比特币行情
摘要

雍和比特币

雍和比特币

慢雾团队称,这是一次典的运用闪电贷操作价格的进犯,其要害点在于 WBNB-BUNNY LP 的价格核算存在缺点,而 BunnyMinterV2 合约铸造的 BUNNY 数量依靠于此存在缺点的 LP 价格核算方法,终究导致进犯者运用闪电贷控制了 WBNB-BUNNY 池子然后拉高了 LP 的价格,使得 BunnyMinterV2 合约铸造了很多的 BUNNY 代币给进犯者。

撰文:慢雾今天 6 点 35 分左右开端,币安智能链上 DeFi 收益聚合器 PancakeBunny 从 240 美元闪崩,一度跌破 2 美元,最高跌幅一度超 99%。对此 PancakeBunny 回应称,遭到来自外部人员的闪电贷进犯,共丢失 114,631 枚 BNB 和 697,245 枚 BUNNY,按其时价格核算约合 4200 万美元。简略来说,黑客运用 PancakeSwap 借入了很多 BNB,之后持续操作 USDT/BNB 以及 BUNNY/BNB 价格,然后取得很多 BUNNY 并进行兜售,导致 BUNNY 价格闪崩,终究黑客经过 PancakeSwap 换回 BNB。慢雾安全团队也对此次被黑事情进行了详细分析,详细如下:

  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 团队。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
头像

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:0   其中:访客  0   博主  0

    • 头像 以太坊平台 9

      不对整个区块链体系有任何干扰。区块链 +大数据解决方案就利用了大数据的整合能力,