权限攻击:DAO Maker再次被黑事件分析

SharkTeam

    北京事件9月4日,NFT 赛马项目 DeRace 受到黑客攻击,在?DAO Maker?中进行持有者发行(SHO)时因 DAO Maker 合约被攻击,导致400万美元的损失。
    在此之前,北京时间8月12日,DAO Maker就已遭到类似黑客攻击,也是由于权限管理不当受到攻击,损失超过 700 万美元。累计已因为类似的权限管理不当问题,损失了超过1000万美元。
    
    SharkTeam第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。
    一、事件分析
    
    攻击者以相同的攻击手法进行多次攻击,以DeRace?Token (DERC)被攻击进行分析:
    
    通过对0x2fd602ed1f8cb6deaba9bedd560ffe772eb85940合约反编译发现,该合约只是起到代理的作用,只有一个fallback函数,将发送过来的函数调用通过delegatecall()的方式委托调用给地址为0xf17ca0e0f24a5fa27944275fa0cedec24fbf8ee2(Vesting.sol)的合约进行处理。
    
    同时发现其他的被攻击的erc20代币被攻击合约虽然地址不同,但是都是用的相同的智能合约来(字节码文件完全匹配)将发来的请求!。通过delegatecall()委托调用的方式给地址为0xf17ca0e0f24a5fa27944275fa0cedec24fbf8ee2(Vesting.sol)的合约进行处理。
    
    黑客通过发送函数签名为0x84304ad7(init)函数给0x2fd6(代理合约),在代理合约中直接通过delegatecall的方式进行委托调用0xf17c(Vesting.sol)init函数。在Vesting.sol合约的init函数中,似乎并没有对msg.sender的身份进行确权操作。因此,使得攻击者成为0x2fd6(代理合约)的owner,随之攻击者就通过0x2fd6(代理合约)委托调用0xf17c(Vesting.sol)合约的emergencyExit函数,进行紧急提款。
    
    本次收到攻击者的多种erc20代币都是部署了相同或类似的代理合约进行工作的,因此攻击者依次使用相同的攻击手法进行攻击,最后兑换成了 DAI,攻击者最终获利近 400 万美金。
    这已经是Dao Maker多次受到攻击,虽然声称经过了多家不同安全公司的审计工作,但是其安全状况使人担忧。
    二、安全建议
    SharkTeam提醒您,在涉足区块链项目时请提高警惕,选择更稳定、更安全,且经过完备多轮审计的公链和项目,切不可将您的资产置于风险之中,沦为黑客的提款机。
    而作为项目方,智能合约安全关系用户的财产安全,至关重要!区块链项目开发者应与专业的安全审计公司合作,进行多轮审计,避免合约中的状态和计算错误,为用户的数字资产安全和项目本身安全提供保障。