8月18日,Exactly protocol遭遇黑客攻击,攻击者已获利约1204万美元。
SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。
攻击者地址:
0x3747dbbcb5c07786a4c59883e473a2e38f571af9
0x417179df13ba3ed138b0a58eaa0c3813430a20e0
0xe4f34a72d7c18b6f666d6ca53fbc3790bc9da042
攻击合约:
0x6dd61c69415c8ecab3fefd80d079435ead1a5b4d
被攻击合约:
0x675d410dcf6f343219aae8d1dde0bfab46f52106
攻击交易:
0x3d6367de5c191204b44b8a5cf975f257472087a9aadc59b5d744ffdef33a520e
0x1526acfb7062090bd5fed1b3821d1691c87f6c4fb294f56b5b921f0edf0cfad6
0xe8999fb57684856d637504f1f0082b69a3f7b34dd4e7597bea376c9466813585
攻击流程:
(1)攻击者(0x417179df)先通过攻击合约(0x6dd61c69)创建了多个恶意市场代币合约和多个uniswapPool合约。
(2)随后调用被攻击合约(0x675d410d)的leverage函数并传入一个恶意市场代币地址。
(3)在leverage函数中通过deposit函数到pool合约中添加USDC和恶意市场代币的流动性并重入到被攻击合约(0x675d410d)的crossDeleverage函数
(4)在crossDeleverage函数中被攻击合约(0x675d410d)会使用USDC到pool合约中兑换恶意市场代币。
(5)函数调用完成后,攻击合约(0x6dd61c69)移除pool中的流动性,随后提出兑换而来的USDC代币获利。
(6) 多次循环上面的操作,每次攻击都会更换被攻击用户地址和恶意市场代币地址。
(7) 然后将获得的USDC发送给攻击者(0xe4f34a72)。
(8)多次执行同样的操作获利
本次攻击利用了DebtManager(0x675d410d)合约中的漏洞,其中的leverage函数未校验传入market参数是否为可信的市场合约,导致在permit函数修饰器中可将状态变量_msgSender修改为攻击者任意的传参地址。
最后在与pool进行兑换时会使用用户的exaUSDC余额来抵消付给pool合约的USDC数量。
针对本次攻击事件,我们在开发过程中应遵循以下注意事项:
(1)在涉及到有关外部地址传参和调用的情况下,应严格校验传参地址是否为可信地址。
(2)项目上线前,需要向第三方专业的审计团队进行智能合约审计。
SharkTeam的愿景是全面保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立长期合作关系。
官网:https://www.sharkteam.org
Twitter:https://twitter.com/sharkteamorg
Discord:https://discord.gg/jGH9xXCjDZ
Telegram:https://t.me/sharkteamorg
来源:金色财经