详解DeFi协议bZx二次被黑:攻击手法是怎样的,如何防御?_ETH: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,但是实际上大盘的价格不会拉到这么多

Cosmos Hub将在下次升级中实施流动性质押模块:5月5日消息,Cosmos Hub在推特上表示:“提案#790已获得批准,Cosmos社区支持在Hub上实施流动性质押模块(Liquid Staking Module),LSM带来了即时流动性质押,无需等待解绑期,该模块将集成到近期的未来升级中。

Cosmos Hub对该功能进一步解释道:“用户将能够直接对他们已经质押的Atom进行流动性质押。为了减轻流动性质押风险,LSM引入了治理控制参数。可以流动质押的ATOM总量将有一个初始上限。上限将设定为所有质押ATOM的25%,并且可以通过治理进行更改。作为一项额外的安全功能,想要从流动质押提供商处获得委托的验证者将需要自行绑定一定数量的ATOM。”[2023/5/5 14:44:00]

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

AI 艺术家Claire Silver将于3月21日在卢浮宫展示NFT系列作品:金色财经报道,AI艺术家Claire Silver将于3月21日在巴黎卢浮宫博物馆首次展示她的NFT新系列作品“我能告诉你一个秘密吗”,据悉,该系列是一个“用人工智能创造的100个摄影后作品的自传系列”。展览将由Superchief画廊促成,该画廊是纽约和洛杉矶的实体画廊空间。除了新系列首次亮相外,一件名为“Lovein the 4th Turning”的单件NFT艺术品也将在卢浮宫展出。[2023/3/8 12:48:36]

归还dYdX中的借贷

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

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

细节剖析

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

Twitter开始申请进入美国支付业务的监管许可:金色财经报道,Watcher.Guru发推表示,Twitter开始申请进入美国支付业务的监管许可。[2023/1/31 11:37:26]

0x762881b07feb63c436dee38edd4ff1f7a74c33091e534af56c9f7d49b5ecac15

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

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

Tether合并资产价值略高于664亿美元,商票敞口下降58%:金色财经消息,会计师事务所BDO Italia对Tether的资产完成了审计,并对其前一季度业绩出具独立证明信息。审计发现,Tether持有的合并资产价值略高于664亿美元。合并负债总额接近662亿美元,其中近99%与数字货币有关。

Tether此前曾表示,将在2022年8月底之前减少其商业票据持有量。审计报告显示,商业票据敞口从上一季度的200亿美元降至85亿美元,下降了58% 。

Tether的首席技术官Paolo Ardoino在Twitter上称,公司打算继续减持商业票据,在10月底将持有量降至零。他表示,“Tether将继续得到其储备透明度的支持,且(储备)一直是稳定的主要来源,这让我们能为全球经济打造一种工具。”(btctimes)[2022/8/30 12:57:34]

1、赛前准备

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

全球最大建站工具WordPress添加加密捐赠插件:6月1日消息,全球最大建站工具WordPress已添加Depay开源插件,允许网站接受加密货币P2P捐赠,并提供将收到的加密货币兑换成其他Token。据悉,该插件由瑞士Web3支付初创公司DePay提供,可免费安装。(beincrypto)[2022/6/1 3:55:21]

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

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

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

水星链

[0:46ms0-1:492ms