慢雾:详解DeFi协议bZx两次被黑始末_ETH:BZX

本文作者:yudan@慢雾安全团队前言

今早,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,但是实际上大盘的价格不会拉到这么多用从Compound借来的112个BTC来在UniSwap中卖掉,由于第三步中bZx中的5倍杠杆已经把价格拉高,所以这个时候出售ETH肯定是赚的,然后卖了6871个ETH归还dYdX中的借贷第二次攻击与之前稍有不同,但核心都在于控制预言机价格,并通过操纵预言机价格获利。注:下文中出现的WETH是ETH的token化代币,可统一认为是ETH。与ETH之间的兑换比例是1:1细节剖析

慢雾:利用者通过执行恶意提案控制了Tornado.Cash的治理:金色财经报道,SlowMist发布Tornado.Cash治理漏洞解析。 5月20日,Tornado.Cash遭受了治理攻击,利用者通过执行恶意提案控制了Tornado.Cash的治理。5月13日,利用者发起了20提案,并在提案中说明20提案是对16提案的补充,具有相同的执行逻辑。但实际上,提案合约多了一个自毁逻辑,其创建者是通过create2创建的,具有自毁功能,所以在与提案合约自毁后,利用者仍可以部署不同的以与以前相同的方式将字节码发送到相同的地址。不幸的是,社区没有看到拟议合约中的犯规行为,许多用户投票支持该提案。

在5月18日,利用者通过创建具有多个交易的新地址,反复将0代币锁定在治理中。利用提案合约可以销毁并重新部署新逻辑的特性,利用者在5月20日7:18(UTC)销毁了提案执行合约,并在同一地址部署了一个恶意合约,其逻辑是修改用户在治理中锁定的代币数量。

攻击者修改完提案合约后,于5月20日7:25(UTC)执行恶意提案合约。该提案的执行是通过 Delegatecall 执行的,因此,该提案的执行导致治理合约中由开发者控制的地址的代币锁定量被修改为 10,000。提案执行完成后,攻击者从治理库中解锁了TORN代币。金库中的TORN代币储备已经耗尽,同时利用者控制了治理。[2023/5/21 15:17:00]

本次发生攻击的交易哈希为:0x762881b07feb63c436dee38edd4ff1f7a74c33091e534af56c9f7d49b5ecac15通过etherscan上的分析,我们看到这笔交易中发生了大量的token转账。

慢雾:LendHub疑似被攻击损失近600万美金,1100枚ETH已转移到Tornado Cash:金色财经报道,据慢雾区情报,HECO生态跨链借贷平台LendHub疑似被攻击,主要黑客获利地址为0x9d01..ab03。黑客于1月12日从Tornado.Cash接收100ETH后,将部分资金跨链到Heco链展开攻击后获利,后使用多个平台(如TransitSwap、Multichain、Uniswap、Curve和OptimismBridge)跨链或兑换被盗资金。截至目前,黑客已分11笔共转1,100ETH到Tornado.Cash。被攻击的具体原因尚待分析,慢雾安全团队将持续跟进此事件。[2023/1/13 11:10:43]

慢雾:去中心化期权协议Acutus的ACOWriter合约存在外部调用风险:据慢雾区消息,2022年3月29日,Acutus的ACOWriter合约遭受攻击,其中_sellACOTokens函数中外部调用用到的_exchange和exchangeData参数均为外部可控,攻击者可以通过此漏洞进行任意外部调用。目前攻击者利用该手法已经盗取了部分授权过该合约的用户的资产约72.6万美金。慢雾安全团队提醒使用过该合约的用户请迅速取消对该合约的授权以规避资产被盗风险。[2022/3/29 14:25:07]

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

声音 | 慢雾:Dapp、交易所等攻击事件造成损失已近41亿美金:慢雾数据显示Dapp、交易所等攻击事件造成的损失已达4098587697.68美金,半月增加近3亿美金。据2月28日报道,慢雾区上线“被黑档案库(SlowMist Hacked)”,目前各类攻击事件共造成约 3824082630.12 美金的损失。[2019/3/13]

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

声音 | 慢雾:ETC 51%双花攻击所得的所有ETC已归还完毕:据慢雾区消息,ETC 51%攻击后续:继Gate.io宣称攻击者归还了价值10万美金的ETC后,另一家被成功攻击的交易所Yobit近日也宣称收到了攻击者归还的122735 枚 ETC。根据慢雾威胁情报系统的深度关联分析发现:攻击者于UTC时间2019年1月10日11点多完成了攻击所获的所有ETC的归还工作,至此,持续近一周的 ETC 51% 阴云已散。[2019/1/16]

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:0ms0-1:92ms