Eralend遭受攻击损失340万美元,黑客会选择返还资金吗?

Beosin
Beosin 机构得得号

Jul 27, 2023 Beosin是总部位于新加坡的全球知名区块链安全公司,为区块链生态提供代码安全审计,安全风险监控、预警与阻断,虚拟资产被盗追回,KYT/AML等“一站式”安全产品+服务,已为全球2000多个区块链企业服务,保护客户资产5000多亿美元。

摘要: 2023年7月25日,据区块链安全审计公司Beosin旗下Beosin EagleEye平台监测显示,ZkSync链上Eralend借贷协议遭受攻击,损失约340 万美元。

EraLend是一种去中心化借贷协议,旨在最大限度地提高资本效率,同时最大限度地降低与外部流动性和预言机依赖相关的风险。关于本次事件,Beosin安全团队将分析结果分享如下。
事件相关信息
●攻击交易0x7ac4da1ea1b0903dfabda56f713ea5e4a960a3fc34467a844d037f86ee8bfe980x99efebacb3edaa3ac34f7ef462fd8eed85b46be281bd1329abfb215a494ab0ef●攻击者地址0xf1D076c9Be4533086f967e14EE6aFf204D5ECE7a●攻击合约0xC5c668DcD437b901DFE877DC99329Ac2ba3380350x7d8772DCe73cDA0332bc47451aB868Ac98F335F0●被攻击合约

0x1181D7BE04D80A8aE096641Ee1A87f7D557c6aeb

 

漏洞分析本次攻击主要漏洞是价格预言只读重入,导致EraLend项目的ctoken合约借贷价值计算和清算价值计算不一致,借贷的数量高于偿还的数量,使得攻击者可以在借贷并清算后获利。攻击者重复利用多个合约进行上述操作,获得了大量的USDC。

攻击流程


以0x7ac4da1ea....这笔交易为例
攻击准备阶段:
第一步,攻击者通过OKX和MEXC提取约1.68个ETH作为部署攻击合约和发送交易的GAS费用。

第二步,攻击者通过闪电贷借入1408万枚USDC和7566枚ETH,将其质押到0x621425合约中,获得0.29个LP代币为攻击做准备。

 攻击阶段:

1. 攻击者调用SyncSwap(0x8011)合约的burn函数,将自己获得的LP销毁,并换回添加的流动性,但在burn函数中,将会回调_callback地址的特定函数(206行代码),并且回调后才会更新流动性储备信息。

 

2. 于是当burn函数回调至攻击者的恶意合约后,执行了攻击者预先在特定函数中的恶意代码,该恶意代码重入进ctoken(0x1181)合约的抵押LP函数(repayBorrow),和借贷函数(borrow)去质押LP并借贷USDC,但此时SyncSwap合约的储备信息并未更新,并且ctoken借贷数量计算是依赖于SyncSwap的储备量,所以导致这里攻击者借贷USDC数量是按照取回流动性前的储备来计算,借贷出了372,644枚USDC。

 

 

3. 重入结束之后,SyncSwap储备量更新,攻击者归还借款,此时计算数量是使用的更新之后的储备量,导致能使用低于借贷数量的代币进行偿还,可以看到,攻击者归还了269,585枚USDC,而获利103,059枚USDC。

 


 

4. 攻击者利用多个合约,重复上述操作。


 

5. 归还闪电贷,并将攻击获利资金转给攻击者地址。

 

资金追踪


截止发文时,Beosin KYT/AML追踪发现被盗资金已经通过Orbiter,1inch等多种跨链桥服务转移到其他链上。7月27日的上午,zkSync生态借贷协议EraLend在社交媒体上发布致黑客的一封信,建议黑客将90%的资金返还,保留被盗资金的10%作为白帽赏金,截止发稿时,黑客目前还没有任何归还行动。

总结


针对本次事件,Beosin安全团队建议:
1.在依赖SyncSwap项目实时储备量作价格计算时应考虑只读重入场景,防止相关函数在同一笔交易中价格计算不一致的情况发生。
2.  项目上线前,建议选择专业的安全审计公司进 行全面的安全审计,规避安全风险。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 Beosin 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信