黑客获利超700万美元Op链上ExactlyProtocol遭黑客攻击事件分析
时间:2023-08-21 来源:区块链网络 作者:Beosin
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建议项目上线前,选择专业的安全审计公司进行全面的安全审计,规避安全风险。 查看更多 |