By:慢雾安全团队
据慢雾区消息,2021年07月17日,DeFi收益聚合器PancakeBunny在Polygon上的版本遭受闪电贷攻击,慢雾安全团队第一时间介入分析,并将结果分享如下。
值得注意的是本次攻击与5月20日PancakeBunny在币安智能链上的版本遭受的闪电贷攻击类似。此前慢雾安全团队也进行了简要分析,具体可查看:代币闪崩,差点归零-PancakeBunny被黑简析。
攻击细节分析
首先攻击者从AAVE中闪电贷借出大量的USDC、USDT、WETH代币,并将借来的USDC与USDT代币转入SushiSwap中添加流动性以获得SLP。
随后攻击者进行了本次攻击最为关键的操作:将添加流动性获得的LP的一小部分抵押至VaultSushiFlipToFlip合约中,为获得polyBUNNY代币奖励做准备。而其余大部分LP都抵押到MiniChefV2中,并将存款收益地址指定为VaultSushiFlipToFlip合约。
接下来为了减少攻击成本,使用借来的100,000个WETH代币,在QuickSwap中将其兑换成WMATIC代币(在后面的分析将会说明为何这样会减少攻击成本)
随后攻击者调用了VaultSushiFlipToFlip合约的withdrawAll函数,以获取抵押的SLP与polyBUNNY代币奖励。我们切入此函数进行具体分析:
英国央行:需要加强加密货币市场和活动的监管和执法:金色财经报道,英国央行表示,需要加强加密货币市场和活动的监管和执法。由于缺乏监管,金融机构和投资者应该对加密资产采取“特别谨慎的态度”。(金十)[2022/12/13 21:42:16]
在上图代码第162行与163行,分别通过balanceOf函数与principalOf函数获取攻击者抵押凭证换算成用户通过VaultSushiFlipToFlip合约在MiniChefV2中抵押的SLP数量以及用户在VaultSushiFlipToFlip合约中抵押时记录的SLP数量。理论上这两个数量不应相差太多,但通过分析balanceOf函数我们发现:其是通过balance函数获取VaultSushiFlipToFlip合约在MiniChefV2中抵押的SLP数量与用户持有的凭证占比相乘得到amount的。
由于攻击者已提前将大量的SLP未通过VaultSushiFlipToFlip合约直接在MiniChefV2合约中抵押并将受益地址指给VaultSushiFlipToFlip合约,因此balance函数将会获取到一个比预期大得多的值,而攻击者的凭证占比却又是正常的,最后导致赋给amount的是个比预期大得多的值。这就直接导致了在上图代码第176行计算出的performanceFee参数是个非预期的巨大值。
俄罗斯央行:数字卢布的推出需要满足一定条件且不能加速通胀:11月17日消息,俄罗斯联邦中央银行(CBR)主席Elvira Nabiullina在国家杜马(议会下院)的一个重要的金融市场委员会会议上表示,在最终推出CBDC之前,该银行可能会对数字卢布进行一年多的测试。监管机构负责人坚持认为,数字卢布项目只有在满足某些标准的情况下才会实现。第一个要求是,数字货币必须能够以一比一的比例与其他两种形式的俄罗斯法定货币,即现金和银行货币自由兑换。在回答有关引入该币的风险问题时,Elvira Nabiullina强调,此事涉及货币流通,金融当局需要非常谨慎。央行高层进一步解释说,数字卢布的原型可能会在明年年初推出,然后再进行至少12个月的试验,看看CBDC如何运作。该行长还表示,数字卢布成功的另一个关键条件是确保它不会加速通货膨胀。(News bitcoin)[2021/11/17 21:58:03]
随后将此异常的performanceFee参数传入mintForV2函数中参与铸造polyBUNNY代币奖励的计算,我们切入此函数进行分析:
我们可以发现其通过调用mintFor函数进行具体的逻辑处理,首先在上图代码第205行将SLP发送给Pair合约,为后续移除流动性做准备。由于shouldMarketBuy函数最终价格比较计算为false,因此将通过if逻辑调用_zapAssets函数。我们切入_zapAssets函数继续分析:
英国央行:不会就CBDC设计原则与技术供应商进行谈判:金色财经报道,关于设计未来的央行数字货币(CBDC)时什么可能和什么不可能,英国央行(BoE)表示不会让任何技术提供商告诉他们该怎么做。英国央行高级金融技术专家Simon Scorer强调,如果英国央行继续开发数字货币,将不会就设计原则与技术供应商进行谈判。Scorer表示,我们不会让技术选择决定设计。相反,我们要做的是决定CBDC需要什么功能,我们的设计原则是什么,然后我们会选择最合适的技术。[2020/5/13]
在_zapAssets函数,由于asset为SLP因此将通过elseif逻辑先通过调用SushiSwapRouter合约的removeLiquidity函数进行移除流动性,随后通过_tokenToAsset函数将移除流动性获得USDC与USDT代币分别在QuickSwap中兑换成polyBUNNY与WETH代币并在QuickSwap中添加流动性。接下来我们对_tokenToAsset函数进行分析:
通过简单分析我们可以发现,其将通过if逻辑直接调用zapPolygon合约的zapInToken函数,这里不再赘述判断条件的分析。接下来跟进zapInToken函数分析:
同样通过对判断条件的简单分析,我们可以指定其将通过上图代码第133行进入else逻辑,接下来调用_swapTokenForMATIC函数通过下图代码第221行if逻辑设定的代币兑换路径“USDC->WETH->WMATIC",USDT代币的兑换路径同样如此。
由于在此之前,攻击者已经使用借来的100,000个WETH代币在QuickSwap中通过“WETH->WMATIC”将其兑换成大量的WMATIC代币,所以上述通过“USDC/USDT->WETH->WMATIC”路径兑换到的WMATIC代币变得很少,因此接下来通过_swapMATICToFlip函数将WMATIC代币兑换成的WETH与polyBUNNY代币就会较少,导致最后转给BUNNY_POOL的LP会较少,达到减少消耗攻击者付出的SLP目的,最终减少了一部分攻击成本。
接下来我们再看mintFor函数,在完成上述一系列操作后,将通过amountBunnyToMint函数计算需要铸造的polyBUNNY代币数量,而通过下图我们可以看出参与计算的contributionInETH参数来自于priceCalculator合约的valueOfAsset函数,但valueOfAsset函数接收的参数却是我们先前所说的_performanceFee参数,这是一个非预期的巨大值。
我们可以对valueOfAsset函数进行简单的分析:
由于asset是SLP,因此将通过上图代码第155行调用_getPairPrice函数,通过对此函数进行分析我们可以发现,参与价格获取的途径都为可信的预言机,因此攻击者无法直接操控预言机进行攻击。但由于参与计算的amount即_performanceFee是个非预期的巨大值,因此最终通过乘法计算得出的valueInETH与valueInUSD都是非预期的巨大值。
随后会将获得的非预期的contributionInETH参数传入amountBunnyToMint函数进行铸币数量计算。
而这里的priceOfETH与priceOfBunny都取自可信的ChainLink与官方自行喂价的预言机,因此最终经过乘法计算后,得到的铸币数量mintBunny是个非预期的巨大值。导致最终攻击者获得了大量的polyBUNNY代币奖励。
攻击流程
1.攻击者在AAVE闪电贷借出USDT/USDC/WETH代币,并在SushiSwap中添加流动性获得SLP。
2.将大部分的SLP转入MiniChefV2中并将受益地址指定给VaultSushiFlipToFlip合约,小部分抵押到VaultSushiFlipToFlip合约中。
3.由于攻击者的大部分抵押到MiniChefV2中的SLP受益地址指定给VaultSushiFlipToFlip合约,导致VaultSushiFlipToFlip获取到错误的balanceOf造成performanceFee变成一个非预期的巨大值。
4.最终铸造polyBUNNY代币奖励使用了此非预期的performanceFee参数,导致额外铸造了大量的polyBUNNY代币给攻击者。
5.最后攻击者抛售polyBUNNY代币,归还闪电贷,获利走人。
总结
****
此次攻击与第一次不同的点在于:并非是预言机被操控导致铸币数量错误,而是VaultSushiFlipToFlip合约获取在MiniChefV2中抵押的抵押品数量时,错误地获取了攻击者未通过VaultSushiFlipToFlip抵押的抵押品数量,导致参数铸币的参数异常。最终铸造出额外的polyBUNNY代币。
****
参考交易链接:
https://polygonscan.com/tx/0x25e5d9ea359be7fc50358d18c2b6d429d27620fe665a99ba7ad0ea460e50ae55
往期回顾
科普|加密货币,你中招了吗?(上)
假币的换脸戏法——技术拆解THORChain跨链系统“假充值”漏洞
强扭的瓜不甜——SafeDollar被黑分析
“不可思议”的被黑之旅——ImpossibleFinance被黑分析
走过最长的路,竟是自己的套路——Alchemix事件分析
慢雾导航
慢雾科技官网
https://www.slowmist.com/
慢雾区官网
https://slowmist.io/
慢雾GitHub
https://github.com/slowmist
Telegram
https://t.me/slowmistteam
https://twitter.com/@slowmist_team
Medium
https://medium.com/@slowmist
币乎
https://bihu.com/people/586104
知识星球
https://t.zsxq.com/Q3zNvvF
火星号
http://t.cn/AiRkv4Gz
链闻号
https://www.chainnews.com/u/958260692213.htm
免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。
本文来源于非小号媒体平台:
慢雾科技
现已在非小号资讯平台发布68篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/10171120.html
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
巨鲸的资金涌向哪里,哪里就是热点!
Gate.io“芝麻金融”双币宝理财服务现已推出BTC/USDT、ETH/USDT双币投资理财产品,BTC专区新品持仓期限2-18天,挂钩参考价格为28000-36000美元.
7月16日消息,央行发布《中国数字人民币的研发进展》白皮书。白皮书介绍,加密货币特别是全球性稳定币发展迅速,据不完全统计,目前有影响力的加密货币已达1万余种,总市值超1.3万亿美元.
近整个币圈都经历了一些不好消息的冲击和打压,包括矿场关停,银行对数字货币交易的管控等等,反映在币价上就是最近币价大幅下跌,包括BTC和ETH,FIL也不可避免的受到影响.
尊敬的LOEx用户:LOEx国际站上线NFTT,并开放NFTT/USDT交易对具体时间如下:充提币:7月24日10:00交易对:7月25日10:00注:未到充值开放时间请勿提前充值.
亲爱的CoinW用户: 币赢CoinW将于2021年7月15日19:00在DeFi专区上线FEAR,开通FEAR/USDT交易对.
热点解读——杜嘉班纳参与NFT盛宴,推出其首个NFT系列作品意大利奢侈时尚品牌Dolce&Gabbana将在基于Polygon的数字市场UNXD上推出其首个NFT系列作品.