7月3日,AzukiDAO遭到攻击,攻击者获利约6.9万美元。
SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。
攻击者地址:
0x85D231C204B82915c909A05847CCa8557164c75e
0x8eadc7cc0a77594e3fa999e80e1ccb7f4e1c04e0
被攻击合约:
0x8189AFBE7b0e81daE735EF027cd31371b3974FeB
攻击交易:
0x6233c9315dd3b6a6fcc7d653f4dca6c263e684a76b4ad3d93595e3b8e8714d34
攻击流程:
(1)攻击者(0x85D231C2)调用被攻击合约(0x8189AFBE)的claim函数,通过签名验证后,提取了31250个Bean Token
(2)随后攻击者(0x85D231C2)持续调用被攻击合约(0x8189AFBE)的claim函数,依然提取出了31250个Bean Token。
(3)一直持续上述操作,最后将提取出的6250000个Bean Token在uniswap中兑换成eth后获利。
(4)循环上述操作,最后获利36个eth。
本次攻击的根本原因是合约中未能正确验证签名的有效性,导致出现重复提取。通过对多笔claim函数交易的分析,发现每笔交易攻击者传入的签名都是相同的。
对被攻击合约(0x8189AFBE)的源码进行分析,发现合约记录了已提取签名,但并没有对签名进行验证。
只要在传参不变的情况下,在签名时限结束前,可以达成多次提取,造成攻击者利用一次签名进行了多次代币提取操作。
针对本次攻击事件,我们在开发过程中应遵循以下注意事项:
(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
来源:金色财经