比原链价格 - BTM币比原链行情,比原链今日价格,BTM币最新价格

煎饼兔闪光崩溃最完整的技术细则剖析

买卖1:

https://bscscan.com/tx/0x88fcffc3256faac76cde4bbd0df6ea3603b1438a5a0409b2e2b91e7c2ba3371a

在第一笔买卖中,攻击者做了两件事:

① BNB转换为USD,BNB转换为USD。

② 将泰达币 bnb flip 放入兔子池。

攻击者将flip存入资金池,以便在稍后调用vaultfliptoflip合约中的draw()或getreward()函数时,资金池将抛出一个兔子令牌。

① zap所做的是用一对中的另一个令牌替换提供的令牌的一半,并向相应的pancakeswap池提供两个令牌。这也可以通过用burny的DAPP前端来达成。

② 将泰达币 bnb flip储存在游泳池中。

买卖2:

https://bscscan.com/tx/0x897c2de73dd55d7701e1b69ffb3a17b0f4801ced88b0c75fe1551c5fcce6a979

在完成第一笔买卖并将泰达币 bnb flip 存入兔子池后,攻击者进行了第二笔买卖,这也是大部分人最关心的买卖。

下面,将第二个事务中所有令牌的转移分为几个部分

① 攻击者从7个不一样的pancakeswap流动性池中借入232万BNB,从forTube借入296万USD。

然后,攻击者攻击6035泰达币 bnb#39;池提供了7700亿英镑和296万USD的流动性,获得了144000个LP代币。

② 攻击者将从flash贷款中获得的232万BNB兑换为pancakeswap V1池中的383万USD。

因为V1池中BNB和泰达币的储量远小于V2池中BNB和泰达币的储量,V1池的价格更容易被操纵。美国国债取代英国国债后,英国国债价格大幅下跌。

③ 如上所述,攻击者在中买卖了一个;在中,泰达币 bnb flip 保存到burny池。目前,攻击者可以调用getrward()函数来强制转换burny。

调用vaultfliptoflip 合约中的GetWard()函数时,会生成很多令牌传输记录,如屏幕截图所示。

网络情人节,certik的安全技术团队发现硬Binance全智能链的去中心化的金融收入聚合器pancake Bunny(Bunny)遭到flash loan的攻击,致使令牌flash崩溃。

共有114631个BNB和697245个Bunny在这次事件中丧生,按现在的价格计算,损失约为4200万USD;

依据certik安全团队的调查,因为该协议用pancakeswap AMM计算资产价格,黑客恶意借助flash loan操纵AMM池价格,并借助Bunny在投币时的计算问题成功完成攻击。

在这次攻击中,攻击者共获得了8笔闪电贷款。其中7笔闪贷来自pancakeswap流动性池的BNB,另一笔来自forTube银行的泰达币。

在本文中,certik安全专家添加了一个地址标签(如下图所示),以使令牌流更明确。

攻击者地址:https://bscscan.com/address/0xa0acc61547f6bd066f7c9663c17a312b6ad7e187

攻击者用的合同地址:https://bscscan.com/address/0xcc598232a75fb1b361510bce4ca39d7bc39cf498

上图中该功能的详细说明如下:

❷ burnyminterv2从2亿USD的资金池中提取流动性,从资金池中提取296万USD和7744亿USD。

将泰达币替换为BNB。在zapbsc合同中用V1 pancakeswap路由器,而不是v2。

因为V1池的价格被操纵(参见步骤2),攻击者可以用231万BNB替换296万泰达币。

然后,BNB的一半(115.6万)被burny替换,BNB的另一半(115.6万)和获得的burny被添加到BNB burny池中。

目前,很多的bnb被添加到bnb burny池中,这增加了bnb的数目(reserve0)。

这将用于在计算稍后要浇铸的burny数时操纵valueinbnb 变量。

Zapbsc合同地址https://bscscan.com/address/0xf4c17e321a8c566d21cf8a9f090ef38f727913d5#code

❹ 交换通过去除标签上的流动性而获得的7700亿英镑的一半❹ 将另一半与burny配对,以提供bnb burny 池中的流动性。

注意标记❸, ❸, 与❹ 发生在的 BurnyInterv2 合同的中,用于v2 函数的调用。

Bunnyminderv2合同地址:https://bscscan.com/address/0x819eea71d3f93bb604816f1797d4828c90219b5d#code

生成的所有LP令牌❺ 从❸ 与❹ 标签被送到小兔子的煎饼池。这是bunnyminterv2合同中mintforv2 函数中这行代码的结果

IBEP20(小兔子)。安全转移(小兔子池,小兔子山);;

如标记所示❺, 合同继续实行,铸造了700万只兔子(按以前的兔子价格计算,价值可达10亿USD左右)。

那样,是哪些原因让合同里选了这么多兔子?那如何解决?

在bunnyminerv2的合同中,要铸造的兔子的数目与变量VALUEINB 有关,该变量由“pricecalculator”计算。Valueofasset(bunny)BNB,bunnybnbamount函数。

在函数“valueofasset”中,valueinbnb的计算办法是:’valueinbnb=amount。Mul(保留0)。Mul(2)。Div(ipancakepair(资产)。Totalsupply())`

由于bnb burny池中有很多bnb(如中所述)❸ 与❹), 变量reserve0是一个很大的值,这使得valueinbnb 很大,因此它最后将增加burnys铸造的数目。

④ 在收到700万只兔子后,攻击者将pancakeswap中的兔子更改为BNB bunny V1池和V2池。

⑤ 最后,攻击者向forTube和pancakeswap的七个流动资金池偿还了闪电贷款,并将69.7万只兔子和11.4万个BNB转移到了攻击者的地址。

这种攻击有效是什么原因之一是zapbsc 合同(https://bscscan.com/address/0xf4c17e321a8c566d21cf8a9f090ef38f727913d5#code )大家用pancakeswap V1流动性池通过V1 pancakeswap路由器交换代币。

很多去中心化的金融项目没办法从pancakeswap V1转换到V2,由于它们在合同中将pancakeswap路由器和池地址写为V1地址。

因为V1流动性池已被放弃,其池中的代币储备很低,这使得攻击者更容易操纵代币价格。

在现在的加密世界中,这种闪电贷款攻击和恶意价格操纵将不会是最后一次。

Certik建议去中心化的金融项目将其pancakeswap集成从V1迁移到v2。

同时,大家还可以借助时间加权平均价格(twap)来防止价格异常波动带来的损失,从而预防黑客借助flash loan攻击价格预言家。

迄今为止,certik已经进行了700多项审计,保护了300多亿USD的数字资产和软件系统免受安全损失。

版权保护: 本文由 比原链价格 原创,转载请保留链接: http://www.tenpinbowlingjobs.com/baike/132.html

相关阅读