PeckShield 团队在上一篇文章《PeckShield:软核技术解析,bZx协议遭到黑客漏洞反击始末》中分析了 bZx 于02月15日遭黑客一次可人组资产流动性反击,那是由于 bZx 合约对抵押品状态辨别不完备造成的。02月18日,bZx 再度遭遇了类似于的反击,这一次的反击从技术原理与上一次有所不同,此次黑客是通过操控 Oracle 价格对 bZx 合约展开了“欺骗”。从反击流程上来看,这一次与上次恰好忽略,但整体上的套利手段还是完全一致的,根本原因主要是由于平台间分享流动性过小以及价格机制设计缺失造成的。本文的想法是期望通过分析此漏洞的一些反击细节让大家需要更加直观的理解此次反击事件,并期望可以引发更加了解的辩论。
我们坚信,这些辩论将对 DeFi 社区的完备和发展是十分有益的,尤其是项目方在研发下一代的 DeFi 类产品时,可以有助设计出更安全性,更加可信的流动性分享模型。漏洞的反击细节如下:此反击事件再次发生在北京时间 2020-02-18 11:18:58(块高度#9504627 )。
攻击者的交易信息可以在 etherscan 上查出。此反击过程可以分成以下五个步骤:第一步:闪贷提供可用资产bZx 合约有一个 flashBorrowToken() 模块,容许调用者可以“零成本”从 bZx 平台上租用资产参予 DeFi 活动,网卓新闻网,之后在已完成这一笔交易的时候偿还债务这部分资产。且调用者在租用资产的同时,可以登录资产的接管方地址。本次攻击者向 bZx 平台租用 7,500 ETH,并登录攻击者的合约(此前早已部署)为资产接管方地址,这部分是基本的借贷功能,此处不做到更进一步说明。
当这一步操作者过后,如下表中右图系统资产产于:第二步:拉升 sUSD首先,我们讲解一下今天攻击者的最佳配角:sUSD,sUSD 是由 Synthetix 项目方发售的平稳币,其币价长时间情况下与 1 美元持平,总发行量为 5,563,037 枚(统计资料于 2020年02月18日)。通过第一步闪贷取得 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。
这两步骤也是长时间的 DEX 币币互相交换的过程,在这两个出厂操作者之后 sUSD 对 ETH 的价格疯涨到了 0.00899,是市场价的 2.5 倍。在这一步之后,使得 sUSD 价格被压低了 1.5 倍,攻击者手里的资产还是长时间与 KyberNetwork 交互,并没实质性的反击再次发生。然而,KybrNetwork 内部通过 Uniswap 已完成 sUSD 与 ETH 切换,这使得那些将 Uniswap 作为 sUSD/ETH Oracle 的其它平台(比如说 bZx)误以为当前 sUSD 价格的确有这么低,这才启动时了后面的反击事件。
此时,系统的资产如下:第三步:招揽更加多筹码攻击者期望将手里的 6,000 ETH 通过 Synthetix exchangeEtherForSynths() 模块全部替换成 sUSD。而 Synthetix 这边也没足额的 sUSD 来促使这笔交易,只互相交换了其中的 3,518 枚 ETH,并将剩下的 2,482 枚 ETH 归还给攻击者,攻击者取得了 943,837 枚 sUSD。到此为止,攻击者手里早已享有的 sUSD 总量为 1,099,841 枚,占到总发行量的 19.7%。
本文来源:333体育官网app下载-www.aqyzc.com