http://www.7klian.com

PeckShield:bZx协议再遭黑客“二连击”背后的技能命门

进攻者但愿将手里的 6,000 ETH 通过 Synthetix exchangeEtherForSynths() 接口全部换成 sUSD。而 Synthetix 这边也没有足额的 sUSD 来促成这笔生意业务,只互换了个中的 3,518 枚 ETH,并将剩余的 2,482 枚 ETH 返还给进攻者,进攻者得到了 943,837 枚 sUSD。

从进攻流程上来看,这一次与上次恰好相反,但整体上的套利手段照旧一致的,基础原因主要是由于平台间共享活动性过小以及价值机制设计缺陷导致的。

第一步:闪贷获取可用资产

这两步调也是正常的 DEX 币币互换的进程,,在这两个批次操纵之后 sUSD 对 ETH 的价值疯涨到了 0.00899,是市场价的 2.5 倍。

第四步:抵押借钱

到此为止,进攻者手里已经拥有的 sUSD 总量为 1,099,841 枚,占总刊行量的  19.7%。

第二步:拉升 sUSD
3)进攻者手上还持有 2,378 枚 ETH。
bZx 合约有一个 flashBorrowToken() 接口,答允挪用者可以“零本钱”从 bZx 平台上借出资产参加 DeFi 勾当,之后在完成这一笔生意业务的时候送还这部门资产。且挪用者在借出资产的同时,可以指定资产的吸收方地点。 

第五步:闪贷还款

本文的初志是但愿通过阐明此裂痕的一些进攻细节让各人可以或许更直观的相识此次进攻事件,并但愿可以引起更深入的接头。我们相信,这些接头将对 DeFi 社区的完善和成长是十分有益的,出格是项目方在开拓下一代的 DeFi 类产物时,可以有助于设计出更安详,更靠得住的活动性共享模子。
首先,我们先容一下本日进攻者的最佳副角:sUSD,sUSD 是由 Synthetix 项目方刊行的不变币,其币价正常环境下与 1 美元持平,总刊行量为 5,563,037 枚(统计于 2020年02月18日)。

本次进攻者向 bZx 平台借出 7,500 ETH,并指定进攻者的合约(此前已经陈设)为资产吸收方地点,这部门是根基的借贷成果,此处不做进一步表明。
02月18日,bZx 再次遭遇了雷同的进攻,这一次的进攻从技能道理与上一次差异,此次黑客是通过哄骗 Oracle 价值对 bZx 合约举办了“蒙骗”。

3)平台自身对付价值也该当设立止水阀机制。

第三步:吸纳更多筹码

到此为止,系统的账本信息如下:

由于各项目由差异团队开拓,对各自产物的设计与实现领略有限,集成的产物很大概在与第三方平台交互的进程中呈现安详问题,进而腹背受敌。PeckShield 在此发起,DeFi 项目方在上线之前,该当尽大概寻找对 DeFi 各环节产物设计有深入研究的团队做一次完整的安详审计,以制止潜在存在的安详隐患。

1)当引入第三方 Token 的时候,需要考查第三方 Token 的安详性,有没有大概被片面市场哄骗,从而引起价值颠簸;
最终进攻者手中持有的 2,378 ETH 部门为其赢利,合计 $665,840(当前 ETH 价值$280);而 bZx 平台欠债为 2,868 ETH(6,796 – 1,099,841/280),即 $803,040。

当前系统中的账本数据如下:

当这一步操纵事后,如下表中所示系统资产漫衍:

1)bZx 平台对进攻者借出的 6,796 ETH;
进攻者操作从 bZx 借到的 6,796 枚 ETH 以及手中剩余的资产一起还给之前从 bZx 借出来的 7,500 ETH,然退却场分开,完成闪贷操纵。 

进攻者将手里拥有的 1,099,841 枚 sUSD 通过 bZx 的 borrowTokenFromDeposit() 接口全部抵押到 bZx 合约之中,凭据 sUSD/ETH 正常价值的话,bZx 该当借给进攻者 3,928 ETH,可是 bZx 从 Oracle Kyber 这边获取的价值偏高,使得借出了 6,796 枚 ETH,多借了 2,868 ETH。

PeckShield 团队在上一篇文章《PeckShield:硬核技能理会,bZx协议遭黑客裂痕进攻始末》中阐明白 bZx 于02月15日遭到黑客一次可组合伙产活动性进攻,那是由于 bZx 合约对抵押品状态判定不完善导致的。
总结
2)DeFi 平台自身该当有价值容错与检讨机制,利用第三方 Oracle 获取价值的时候,对他方的数据有尽大概多的验证;

完成整个闪电贷流程之后,当前资产环境:

这一次的进攻事件中,我们能看出 DeFi 产物在设计进程中几个明明的问题点:

通过第一步闪贷得到 ETH 后,进攻者分两批共 900 ETH 通过 KyberNetwork DEX 调换成 sUSD。个中第一次 利用 540 ETH 调换,(KyberNetwork 内部查询获得 KyberUniswap 的价值是最优的)进攻者获得 92,419 枚 sUSD;第二批分 18 次,每次 20 ETH 调换,(KyberNetwork 查询之后确认 Kyber-sUSD 的价值是最符合的),进攻者得到 63,584 枚 sUSD,总共得到了 156,003 枚 sUSD。 

在这一步之后,使得 sUSD 价值被举高了 1.5 倍,进攻者手里的资产照旧正常与 KyberNetwork 交互,并没有实质性的进攻产生。然而,KybrNetwork 内部通过 Uniswap 完成 sUSD 与 ETH 转换,这使得那些将 Uniswap 作为 sUSD/ETH Oracle 的其它平台(好比说 bZx)误认为当前 sUSD 价值简直有这么高,这才触发了后头的进攻事件。此时,系统的资产如下:

裂痕的进攻细节如下:
此进攻事件产生在北京时间 2020-02-18 11:18:58(块高度#9504627 )。进攻者的生意业务信息可以在 etherscan 上查到。此进攻进程可以分为以下五个步调:
从第一次 bZx 被进攻损失 1,271 枚 ETH,这一次又损失 2,378 枚,且这两次进攻之间只相差了 3 天时间,可见 DeFi 出格项目标安详问题很是严峻。

2)bZx 平台持有 1,099,841 枚 sUSD;

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读