详解DeFi协议bZx二次被黑:攻击手法是怎样的,如何防御?

作者:yudan@慢雾安全团队

编者注:原标题为《详解DeFi协议bZx二次被黑》

前言

2月18日早,bZx疑似遭遇第二次攻击,不同的是本次的对象是ETH/sUSD交易对,但也许有人会有疑问,sUSD不是对标USD的稳定币吗?这都能被攻击?攻击手法具体是怎样的?带着这样的疑问,针对此次事件,慢雾安全团队接下来将复盘这两次攻击过程。

在第一次攻击中,攻击者结合Flashloan和Compound中的贷款,对bZx实施攻击,主要分成以下几步:

从dYdX借了10000个ETH

到Compound用5500ETH借了112个BTC准备抛售

到bZx中用1300个ETH开5倍杠杆做空,换了51.345576个BTC,而这里换取的BTC是通过KyberNetwork来获取价格的,然而KyberNetwork最终还是调用Uniswap来获取价格,5倍杠杆开完后兑换回来的51个BTC实际上是拉高了UniSwap中BTC/ETH的价格,换取价格是1/109,但是实际上大盘的价格不会拉到这么多

今日恐慌与贪婪指数为63,贪婪程度上升:金色财经报道,今日恐慌与贪婪指数为63(昨日为58),贪婪程度较昨日大幅下降上升,等级仍为贪婪。

注:恐慌指数阈值为0-100,包含指标:波动性(25%)+市场交易量(25%)+社交媒体热度(15%)+市场调查(15%)+比特币在整个市场中的比例(10%)+谷歌热词分析(10%)。[2023/4/19 14:12:49]

用从Compound借来的112个BTC来在UniSwap中卖掉,由于第三步中bZx中的5倍杠杆已经把价格拉高,所以这个时候出售ETH肯定是赚的,然后卖了6871个ETH

归还dYdX中的借贷

第二次攻击与之前稍有不同,但核心都在于控制预言机价格,并通过操纵预言机价格获利。

注:下文中出现的WETH是ETH的token化代币,可统一认为是ETH。与ETH之间的兑换比例是1:1

细节剖析

Chainlink Labs与普华永道德国建立战略合作业务关系,以加速企业区块链的采用:3月22日消息,Chainlink Labs宣布与普华永道德国建立战略合作业务关系,以加速企业区块链的采用。Chainlink Labs将为与普华永道德国合作的公司提供开发智能合约和运营节点基础设施的专业知识,普华永道将其技术专长和监管理解作为杠杆,帮助客户开发合规且安全的智能合约并运营基础设施,企业将被协助开发利用Chainlink中间件功能的定制区块链解决方案。[2023/3/22 13:19:48]

本次发生攻击的交易哈希为:

0x762881b07feb63c436dee38edd4ff1f7a74c33091e534af56c9f7d49b5ecac15

通过etherscan上的分析,我们看到这笔交易中发生了大量的token转账。

SBF称其1亿美元推特股份不知所踪,部分或已被Alameda出售:11月30日消息,自马斯克否认FTX前首席执行官Sam Bankman-Fried(SBF)持有1亿美元推特股份,SBF首次回答有关他所持推特股份的问题,SBF表示,他一直打算将其之前所持的1亿美元推特股份(推特被收购前)中的至少一部分转到马斯克领导的新私人控股公司,但他不确定Alameda Research此前拥有的推特股份是否完成了向新推特公司的转移。SBF指出,至少部分推特股份可能在推特私有化之前已经出售,但他无法证实。

SBF当时表示,他有兴趣将股份转入这家私有化公司,马斯克当时对SBF表示“欢迎转入”。[2022/11/30 21:11:52]

这么多转账交易中,攻击者一共购买了20次sUSD,最终获利离场,那么攻击者具体是怎么操作的呢?我们使用区块浏览器bloxy.info来做进一步分析。

1、赛前准备

和第一次一样,首先攻击者需要从Flashloan借入一定的金额开始本次的攻击,第一次攻击是从?dYdX?借入10000ETH,这次,攻击者选择从bZx本身支持的Flashloan下手,借入7500个ETH。

SBF:相信针对DeFi的监管即将到来:金色财经报道,FTX首席执行官Sam Bankman-Fried与ShapeShift首席执行官Eric Voorhees在Bankless主持的播客中分享了与监管政策有关话题。SBF表示,赞成加强对 stablecoin 的监管和审查。这主要针对stablecoin 的审计,以确定其由法定或任何其他资产支持。?谈到 DeFi 法规时,SBF澄清说,这不是是否的问题,而是何时的问题。他相信监管即将到来,无论业界是否赞成。

对此,ShapeShift创始人Eric Voorhees对此进行了反驳,Voorhees表达了他对法规某些方面的担忧。其中包括对 DeFi 行业缺乏权力下放的担忧。Voorhees认为,DeFi 本质上是透明的。此外,它不仅仅是传统金融,监管机构也应该承认这一点。[2022/10/30 11:56:53]

俄罗斯对硬件加密钱包的需求增加,因受货币制裁影响:金色财经报道,由于外国对俄罗斯制裁加入货币相关内容,旨在安全存储加密资产的硬件钱包在俄罗斯出现了数倍的增长。据俄媒《Vedomosti》报道,俄罗斯加密用户在2022年3月至4月期间寻求购买的硬件钱包数量是以往的八倍。(Bitcoin.com)[2022/7/7 1:57:01]

2、发球

在完成从bZx的借入之后,攻击者开始通过Kyber进行sUSD的买入操作,第一次使用了540个ETH购买了92,419.7个sUSD,这个操作令WETH/sUSD的价格瞬间拉低,捧高了sUSD的价格。这次的交易兑换的比例大概为1:170,而Kyber最终是通过UniSwap来进行兑换的,所以此时Uniswap的WETH/sUSD处于低位,反过来,sUSD/WETH升高。

在完成第一次的540个ETH的兑换之后,攻击者再次在Kyber进行18次小额度的兑换,每次使用20个ETH兑换sUSD,从etherscan我们能够看到,每一次的兑换回来的sUSD金额在不断减少。

这表明sUSD/WETH的价格被进一步拉升,这加剧了Uniswap中sUSD/WETH的价格,此时价格已经达到顶峰了,大概是1:157。

在完成以上两步操作之后,攻击者已经完成狩猎前的准备,随时可以开始攻击。

3、一杆进洞

在完成对sUSD/WETH的拉升后,攻击者此时需要采集大量的sUSD,为后续兑换WETH做准备。为了达成这个目的,攻击者向Synthetix发起sUSD的购买,通过向Synthetix发送6000ETH购买sUSD,直接把Synthetix中的sUSD买空,Synthetix合约返还2482个ETH给攻击者。

完成了上面的操作后,攻击者直接对bZx发动总攻,直接用之前操作得来的一共1,099,841个sUSD向bZx兑换WETH,此时由于bZx兑换还是要去查询Uniswap的sUSD/WETH的价格,而这个价格已经被攻击者人为拉得很高了,此时兑换,就能通过1,099,841个sUSD换取大量的WETH,此次交易一共用1,099,841个sUSD换取了6792个WETH,此时攻击已经完成。

4、归还借贷

完成了对bZx的攻击之后,将7500ETH归还给bZx,完成闪电贷流程,从bZx来,再回到bZx去,还使bZx遭受了损失。

赛后复盘

通过分析攻击者的攻击手法,我们统计下攻击者在攻击过程中的支出和收入情况。

收入

7500=>bZx闪电贷+2482=>Synthetix返还+6792=>使用sUSD在bZX兑换WETH=16774ETH

支出

540+(20*18)=>拉高sUSD/WETH价格+6000=>买空sUSD+7500=>归还bZx闪电贷=14400ETH

总的收益为:16774-14400=2374ETH

防御建议

两次攻击的主要原因还是因为Uniswap的价格的剧烈变化最终导致资产的损失,这本该是正常的市场行为,但是通过恶意操纵市场,攻击者可通过多种方式压低价格,使项目方造成损失。针对这种通过操纵市场进行获利的攻击,慢雾安全团队给出如下建议:

项目方在使用预言机获取外部价格的时候,应设置保险机制,每一次在进行代币兑换时,都应保存当前交易对的兑换价格,并与上一次保存的兑换价格进行对比,如果波动过大,应及时暂停交易。防止市场被恶意操纵,带来损失。

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

银河链

DOT2020:非营利组织恋上比特币?

微软接受比特币。没有人在乎。为什么?因为如果你想要人们放弃他们的比特币,你最好有一个很好的理由。微软和其他接受BTC的公司目前还没有这样的理由.

[0:31ms0-2:379ms