黑客获利超700万美元 Op链上Exactly Protocol遭黑客攻击事件分析
2023年8月18日,据Beosin-Eagle Eye态势感知平台消息, Optimism链的DeFi借贷协议Exactly Protocol遭受黑客攻击,黑客获利超700万美元。
攻击发生之后,Exactly Protocol在社交媒体上表示,正在尝试与攻击者沟通,以归还被盗资产,已向警方提交报告。
三天之后的8月21日,Exactly Protocol发文表示协议现已解除,用户可以执行所有操作,也没有发生任何清算。为了明确起见,黑客攻击只影响到使用外围合约(DebtManager)的用户。没有使用该合约的用户没有任何损失,协议仍在正常运行。
Beosin安全团队第一时间对本次事件进行了分析,结果如下。
事件相关信息
●攻击交易
0x3d6367de5c191204b44b8a5cf975f257472087a9aadc59b5d744ffdef33a520e
0x1526acfb7062090bd5fed1b3821d1691c87f6c4fb294f56b5b921f0edf0cfad6
0xe8999fb57684856d637504f1f0082b69a3f7b34dd4e7597bea376c9466813585
●攻击者地址
0x3747dbbcb5c07786a4c59883e473a2e38f571af9
●攻击合约
0x6dd61c69415c8ecab3fefd80d079435ead1a5b4d
0x995a24c99ea2fd6c87421d516216d9bdc7fa72b4
●被攻击合约
0x16748cb753a68329ca2117a7647aa590317ebf41
漏洞分析
漏洞合约中的多个Market地址参数可被操控。 攻击者通过传入恶意的Market合约地址,成功绕过permit检查,执行了恶意的deposit函数,窃取了用户的抵押品USDC并清算用户资产,最终实现了攻击者的盈利目的。
攻击流程
我们以0x3d6367…这笔交易为例
攻击准 备阶段:
1.攻击者创建了多个恶意Market合约
攻击阶段
1.攻击者调用漏洞合约的leverage函数(杠杠函数)传入伪造的market合约地址,由于market地址未校验合法性,permit检查被绕过并将_msgSender更改为受害者地址,这里为步骤3窃取受害者资产做了准备。
2.leverage函数会继续调用恶意market合约中的deposit函数,进而执行攻击者的恶意代码
3.deposit函数中的恶意代码会先创建一个V3 恶意token/USDC的池子,然后再重入进漏洞合约的crossDeleverage函数。由于marketIn和marketOut同样可控,导致crossDeleverage函数计算的V3池子最终为攻击者创建的V3池子。
4.此时由于_msgSender已经修改为了受害者,crossDeleverage函数进一步调用攻击者创建的V3池子的swap函数用作闪电贷,并在回调函数uniswapV3callback中将受害者的资金转入至V3池子中。
5.攻击者移除流动性将受害者资金从V3池子中窃取出来。
6.由于受害者抵押资金被转走,满足清算条件,攻击者进一步清算了受害者的头寸而获得了更多的收益。
资金追踪
截止发文时,被盗资金已通过Optimism bridge和Across Protoco跨链至以太坊。
总结
针对本次事件,Beosin安全团队建议:
建议用作凭证代币的合约地址需要填加白名单功能,以免被恶意操控。 目前,Beosin已对Optimism链上多个项目诸如DIPX等进行过安全审计,因此Beosin建议项目上线前,选择专业的安全审计公司进行全面的安全审计,规避安全风险。