北京时间2023年6月14日,HashFlow被黑客攻击,攻击者获利约60万美元。
SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。
一、事件分析
攻击者地址:
0xBDf38B7475Ff810325AA39e988fb80E0aA007E84
攻击合约:
0xDDb19a1Bd22C53dac894EE4E2FBfdB0A06769216
被攻击合约:
0x79cdFd7Bc46D577b95ed92bcdc8abAba1844Af0c
攻击交易:
0xdedda493272b6b35660b9cc9070d2ea32ee61279b821184ff837e0a5752f4042
0xb08f6d3fc70b95223cfffc2c905d9c0467a589e5f652cd193e5c00b4ad329b99
0x08b5f35076beb363a7206b8f9b4a6460f42aa9f998b561582fb4e4cdd6f05dce
(1)攻击者(0xBDf38B74)部署攻击合约(0xDDb19a1B)后,调用攻击合约(0xDDb19a1B)的Wooooo函数。
(2)攻击合约(0xDDb19a1B)调用被攻击合约(0x79cdFd7B)的0x0031b016函数。
(3)函数中直接将用户的USDT转移到了攻击合约中。
二、漏洞分析
被攻击合约(0x79cdFd7B)为hashflow在去年五月份就已经弃用的合约,并未开源,经过反编译可以看到合约中将代币从from转移到了to地址。经过分析,很有可能是因为用户在去年五月份之前使用该合约时对该合约进行了大额度的授权,而在合约弃用后,这些授权并没有被回收,并可能由于合约弃用后导致限制逻辑出现了一定的问题,导致攻击者可以调用弃用合约的函数来转出用户资产。
三、后续进展
攻击者(0xBDf38B74)在完成攻击后,开源了攻击合约并留下信息“Before use recover, please revoke first. Your funds are not safe.”,提示用户在将钱转走之前,撤销对被攻击合约(0x79cdFd7B)的授权。
攻击者留下两个函数,一个是将资金全部提走,另一个是将资产留下十分之一作为对攻击者的奖金。目前用户已经开始陆续将资金提取。
四、安全建议
本次事件发生原因是由于被攻击合约(0x79cdFd7B)曾经接受过大量用户的授权,并在弃用后授权没有被回收,导致用户资产受损。针对本次攻击事件,我们在开发过程中应遵循以下注意事项:
(1)项目方应严格校验合约在弃用后可能出现的逻辑问题。
(2)用于应及时检查自己账户对不同协议合约的授权,应及时取消不再交互的合约或已升级合约的授权。
(3)合约升级前,应及时与专业的第三方审计团队进行合作,保障安全。
About Us
SharkTeam的愿景是全面保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立长期合作关系。
Twitter:https://twitter.com/sharkteamorg
Discord:https://discord.gg/jGH9xXCjDZ
Telegram:https://t.me/sharkteamorg