02月15日,bZx 团队在官方电报群上收到公告,称有黑客对 bZx 协议展开了漏洞反击,且已停止除了借贷外的其他功能。对于反击细节,bZx 官方并没展开详尽透露。
PeckShield 安全性人员主动第一时间 bZx 反击事件,找到这起事件是针对 DeFi 项目间分享可人组流动性的设计展开反击,尤其在有杠杆交易及借贷功能的 DeFi 项目里,该问题不会更容易被利用。漏洞的反击细节如下:此反击事件再次发生在北京时间 2020-02-15 09:38:57(块高度#9484688)。攻击者 的transaction 信息可以在 etherscan 上查出。
此反击过程可以分成以下五个步骤:第一步:闪贷提供可用资金攻击者通过在部署的合约中调用了 dYdX 闪贷功能买入了10,000个 ETH。这部分是未知的dYdX 的基本借贷功能,我们不做到更进一步说明。
当第一步操作者过后,如下表中攻击者资产,此时并没收益:第二步:黑市 WBTC 现货通过第一步闪贷取得 ETH 后,攻击者将其中的 5,500 ETH 现金 Compound 作为抵押品,贷出112 WBTC。这也是长时间的 Compound 借贷操作者,贷出的 WBTC 将在第四步中被挤兑。在此步骤操作者后,我们可以看见关于攻击者掌控的资产再次发生了转变,但此时依然没受益:第三步:杠杆拉盘 WBTC 价格利用 bZx 的杠杆交易功能,做空 ETH 售予大量 WBTC。
具体步骤是:攻击者现金1,300 ETH 并调用 bZx 杠杆交易功能,即模块 mintWithEther(),在内部不会之后调用模块 marginTradeFromDeposit()。接下来,攻击者将从 bZx 5倍杠杆取得的5,637.62个ETH,通过 KyberSwap 外币成 51.345576 WBTC。请注意,此处做空 ETH 是借给的5倍。
本次交易造成将 WETH / WBTC 的兑换率提升到109.8 ,约是长时间兑换率(~38.5 WETH / WBTC)的3倍。为了已完成此交易,KyberSwap 基本上不会查找其储备金并寻找最优惠的汇率,最后只有 Uniswap 能获取这样的流通性,因此这个交易从本质上推展了 Uniswap 中 WBTC 价格上涨了3倍。应当留意的是,这步操作者在合约内部构建有个安全检查逻辑,但是实质上在交易之后并没检验锁住仓值。也就是说,当反击再次发生时,此检查没落成,我们在后面不会有一节详尽讲解此合约中的问题。
在这一步之后,我们注意到关于黑客掌控的资产有以下转变。不过,在这一步之后依然没利润。
第四步:挤兑 WBTC 现货在 Uniswap 中 WBTC 价格攀升后(价格为61.4 WETH / WBTC),攻击者将第二步中通过 Compound 借的112 WBTC 全部卖给 Uniswap 并归还了适当的 WETH。这次交易攻击者总计取得6,871.41个 ETH 的净额作为报酬。在这一步之后,可以看见攻击者早已取得不少利润。
第五步:闪贷偿还攻击者从挤兑的 112 WBTC 中取得的6,871.41 个ETH,将闪贷的 10,000个 ETH偿还债务给 dYdX,从而已完成闪贷偿还。在这一步之后,我们新的计算出来了以下资产下文。结果显示,攻击者通过此次反击取得71 ETH,再加这两个锁仓:Compound(+5,500weth/-112WBTC)和bZx(-4,337WETH/+51WBTC)。
bZx 锁仓正处于债权人状态,Compound 的锁仓是有利可图的。似乎,在反击之后,网卓新闻网,攻击者就开始偿还债务 Compoud 债务(112BTC)以归还抵押的5,500 个WETH。由于 bZx 锁仓早已正处于债权人状态,攻击者也仍然感兴趣了。
本文来源:半岛平台-www.mysuggester.com