PeckShield 团队在上一篇文章《PeckShield:硬核技术解析,bZx协议遭黑客漏洞攻击始末》中分析了 bZx 于02月15日遭到黑客一次可组合资产流动性攻击,那是由于 bZx 合约对抵押品状态判断不完善导致的。
02月18日,bZx 再次遭遇了类似的攻击,这一次的攻击从技术原理与上一次不同,此次黑客是通过操纵 Oracle 价格对 bZx 合约进行了“蒙”。
从攻击流程上来看,这一次与上次刚好相反,但整体上的套利手段还是一致的,根本原因主要是由于平台间共享流动性过小以及价格机制设计缺陷导致的。
Figure: Five Exploitation Steps With Oracle Manipulation
本文的初衷是希望通过分析此漏洞的一些攻击细节让大家能够更直观的了解此次攻击事件,并希望可以引起更深入的讨论。我们相信,这些讨论将对 DeFi 社区的完善和发展是十分有益的,特别是项目方在开发下一代的 DeFi 类产品时,可以有助于设计出更安全,更可靠的流动性共享模型。
以太坊推送服务EPNS与交易、借贷平台bZx达成合作:官方消息,以太坊推送服务EPNS与交易、借贷平台bZx达成合作,EPNS推送服务将改善bZx用户体验。[2021/5/5 21:25:10]
漏洞的攻击细节如下:
此攻击事件发生在北京时间 2020-02-18 11:18:58(块高度#9504627 )。攻击者的交易信息可以在 etherscan 上查到。此攻击过程可以分为以下五个步骤:
第一步:闪贷获取可用资产
bZx 合约有一个 flashBorrowToken() 接口,允许调用者可以“零成本”从 bZx 平台上借出资产参与 DeFi 活动,之后在完成这一笔交易的时候偿还这部分资产。且调用者在借出资产的同时,可以指定资产的接收方地址。
Figure1: Flashloan Borrowing From bZx
本次攻击者向 bZx 平台借出 7,500 ETH,并指定攻击者的合约(此前已经部署)为资产接收方地址,这部分是基本的借贷功能,此处不做进一步解释。
DeFi借贷协议bZx官方宣布重启Fulcrum平台:9月3日,bZx平台官方公布联合创始人Kyle Kistner文章宣布,bZx贷款和保证金交易平台Fulcrum已重新启动。2月初,由于bZx遭遇攻击,Fulcrum宣布关闭进行维护。FulcrumKyle Kistner发文表示,在六个月的时间里,bZx团队进行了很多工作。包括接受了来自Peckshield的12周人工手动审核,以及Certik的7周审核。bZx团队从头开始重构、完善和改进协议。Fulcrum 2.0更简约且gas效率为之前的两倍以上。此前2月初消息,DeFi贷款协议bZx被曝漏洞遭遇两次攻击,导致ETH丢失,随后官方宣布关闭Fulcrum进行维护。[2020/9/3]
当这一步操作过后,如下表中所示系统资产分布:
第二步:拉升 sUSD
首先,我们介绍一下今天攻击者的最佳配角:sUSD,sUSD 是由 Synthetix 项目方发行的稳定币,其币价正常情况下与 1 美元持平,总发行量为 5,563,037 枚(统计于 2020年02月18日)。
去中心化借贷平台bZx代币BZRX已开始解锁:7月13日消息,去中心化借贷平台bZx代币BZRX已开始解锁,目前已在Uniswap上线,当前价格0.0021ETH。同时官方还宣布IDEX与Poloniex为合作交易平台。项目方此前在社群中表示,在Uniswap上的起始价格可能为0.0002ETH,据此计算,BZRX价格在Uniswap上已上涨10倍,目前价格稍有回落。[2020/7/13]
通过第一步闪贷获得 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。
bZx新预言机规划公布,最终将集成Chainlink、Band和Uniswap v2:曾受闪电贷攻击的去中心化贷款协议 bZx再次发文总结了发生在 2 月 17 日的攻击事件,并公开了对于调整集成的价格预言机的三步路线。第一阶段,bZx将采用Chainlink预言机作为bZx的参考价格,bZx认为目前Chainlink是目前市场中最佳的去中心化预言机解决方案;第二阶段,bZx将采用Chainlink和Band两个数据源,bZx认为Band的预言机地理位置更适合亚洲市场,这也能分散他们的预言机风险;第三阶段,bZx将采用Chainlink、Band和Uniswap v2作为预言机,将这三者的平均价格作为 bZx的参考价格,下一代的Uniswap的价格源将会提供以时间作为权重的价格数据,这也就意味着攻击和操纵会需要更多的成本和时间。(bzx.network)[2020/3/10]
Figure2: Pumping With Kyber (and Uniswap)
这两步骤也是正常的 DEX 币币交换的过程,在这两个批次操作之后 sUSD 对 ETH 的价格疯涨到了 0.00899,是市场价的 2.5 倍。
动态 | bZx将通过Oracle网络Chainlink使其价格来源多样化:以太坊交易平台bZx将通过Oracle网络Chainlink使其价格来源多样化。此前消息,去中心化金融(DeFi)贷款协议bZx被操纵导致价值35万美元的以太坊遭遇损失。文章评论称,Chainlink可以整合许多智能合约的价格信息。即使有如此多的价格反馈,仍有可能操纵市场,但要做到这一点,难度要大得多。(Trustnodes)[2020/2/17]
在这一步之后,使得 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。
Figure3:Hoarding From Synthetix
到此为止,攻击者手里已经拥有的 sUSD 总量为 1,099,841 枚,占总发行量的 19.7%。
当前系统中的账本数据如下:
第四步:抵押借款
攻击者将手里拥有的 1,099,841 枚 sUSD 通过 bZx 的 borrowTokenFromDeposit() 接口全部抵押到 bZx 合约之中,按照 sUSD/ETH 正常价格的话,bZx 应当借给攻击者 3,928 ETH,但是 bZx 从 Oracle Kyber 这边获取的价格偏高,使得借出了 6,796 枚 ETH,多借了 2,868 ETH。
Figure4: Collateralized Borrowing From bZx
到此为止,系统的账本信息如下:
第五步:闪贷还款
攻击者利用从 bZx 借到的 6,796 枚 ETH 以及手中剩余的资产一起还给之前从 bZx 借出来的 7,500 ETH,然后退场离开,完成闪贷操作。
Figure5: Repay The Flashloan To bZx
完成整个闪电贷流程之后,当前资产情况:
1)bZx 平台对攻击者借出的 6,796 ETH;
2)bZx 平台持有 1,099,841 枚 sUSD;
3)攻击者手上还持有 2,378 枚 ETH。
最终攻击者手中持有的 2,378 ETH 部分为其获利,合计 $665,840(当前 ETH 价格$280);而 bZx 平台负债为 2,868 ETH(6,796 - 1,099,841/280),即 $803,040。
总结
这一次的攻击事件中,我们能看出 DeFi 产品在设计过程中几个明显的问题点:
1)当引入第三方 Token 的时候,需要考察第三方 Token 的安全性,有没有可能被单方面市场操纵,从而引起价格波动;
2)DeFi 平台自身应当有价格容错与检验机制,使用第三方 Oracle 获取价格的时候,对他方的数据有尽可能多的验证;
3)平台自身对于价格也应当设立止水阀机制。
从第一次 bZx 被攻击损失 1,271 枚 ETH,这一次又损失 2,378 枚,且这两次攻击之间只相差了 3 天时间,可见 DeFi 特别项目的安全问题非常严峻。
由于各项目由不同团队开发,对各自产品的设计与实现理解有限,集成的产品很可能在与第三方平台交互的过程中出现安全问题,进而腹背受敌。PeckShield 在此建议,DeFi 项目方在上线之前,应当尽可能寻找对 DeFi 各环节产品设计有深入研究的团队做一次完整的安全审计,以避免潜在存在的安全隐患。
本文作者:yudan@慢雾安全团队前言今早,bZx 疑似遭遇第二次攻击,不同的是本次的对象是 ETH/sUSD 交易对,但也许有人会有疑问.
1900/1/1 0:00:00摘要时间:2020年2月17日10:00主持人:国盛区块链研究院院长 宋嘉吉主讲人:谷燕西(曾任华泰联合证券信息技术副总监.
1900/1/1 0:00:00世界上物价最贵的城市,不是苏黎世,不是东京也不是纽约。是遭遇恶性通货膨胀的委内瑞拉城市加拉加斯。委内瑞拉通货膨胀率一直在飙升现在,很难确切地说委内瑞拉现在的通货膨胀率有多高.
1900/1/1 0:00:00与传统金融漫长的发展史不同,新兴的数字货币正在迅速席卷全球,吸引了大量的投资者。在2020年减半利好的带动下,比特币价格一度突破万元,随后进入震荡,逐步走高的价格和行情的波动极大的推动了数字货币.
1900/1/1 0:00:002 月 24 日,波场创始人孙宇晨于本月公布收购消息的去中心化社交平台 Steem 社区内,包括见证人、开发人员和利益相关者共同撰写了一份声明.
1900/1/1 0:00:00行情数据显示,当前BTC报价9977美元,本周最高触及10500美元,创下2019年9月中旬以来新高.
1900/1/1 0:00:00