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

SharkTeam
摘要:本次攻击原因很可能是现任管理员(0x0eba)密钥被盗取,SharkTeam提醒您类似授权的关键函数应该更多的使用多签技术,避免单点攻击风险。

    北京时间8月12日,DAO Maker 遭到黑客攻击,大量用户充值的 USDC 被转出并换成约 2261 个以太坊,损失超过 700 万美元。
    
    SharkTeam第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。
    一、事件分析
    通过查看攻击者交易情况发现攻击者共发动了18次攻击对5252名用户攻击。
    
    DAOMaker Exploiter 1:
    0xd8428836ed2a36bd67cd5b157b50813b30208f50
    DAOMaker Exploiter 2:
    0xef9427bf15783fb8e6885f9b5f5da1fba66ef931
    攻击合约XXX:
    0x1c93290202424902a5e708b95f4ba23a3f2f3cee
    DAO Maker 钱包地址:
    0x41B856701BB8c24CEcE2Af10651BfAfEbb57cf49
    DAO Maker 部署者地址:
    0x054e71D5f096a0761dba7dBe5cEC5E2Bf898971c
    DAO Maker 管理员地址:
    0x0eba461d9829c4e464a68d4857350476cfb6f559
    我们以其中的一次攻击进行分析,其他的都是一样的攻击方式。
    
    通过交易记录发现,DAOMaker Exploiter 1(0xd842)使用攻击合约XXX(0x1c93)的h()函数发起交易,将350名用户的USDC通过钱包地址(0x41B8)转给攻击合约XXX后转给DAOMaker Exploiter 1(0xd842),这350名受害者地址以数组的形式传入交易的inputdata。
    
    
    对受害者合约(0x4188)的0x50b158e4(withdrawFromUser)函数反编译结果如下:
    
    
    可以看到只有msg.sender即:攻击合约XXX(0x1c93)拥有权限方可转账成功。查看历史交易可以发现:122天前合约部署人(0x054e)给现任管理员(0x0eba)授权;
    
    
    而后,一天前现任管理员(0x0eba)创建攻击合约XXX(0x1c93)。
    
    现任管理员(0x0eba)给攻击合约XXX(0x1c93)授权。
    
    随后DAOMaker Exploiter 1(0xd842)调用攻击合约XXX(0x1c93)发起攻击获得大量USDC,将其转换为ETH后转账给DAOMaker Exploiter 2(0xef94)。可以确定至少在一天之前DAOMaker Exploiter 1(0xd842)和现任管理员(0x0eba)是同一个人在操作!!!
    (1)攻击者获得现任管理员(0x0eba)的控制权;
    (2)?管理员(0x0eba)创建了攻击合约XXX(0x1c93)并对其授权;
    (3)DAOMaker Exploiter 1(0xd842)调用攻击合约XXX(0x1c93)获利。
    因此,本次攻击原因很可能是现任管理员(0x0eba)密钥被盗取,SharkTeam提醒您类似授权的关键函数应该更多的使用多签技术,避免单点攻击风险。
    二、安全建议
    SharkTeam提醒您,在涉足区块链项目时请提高警惕,选择更稳定、更安全,且经过完备多轮审计的公链和项目,切不可将您的资产置于风险之中,沦为黑客的提款机。
    而作为项目方,智能合约安全关系用户的财产安全,至关重要!区块链项目开发者应与专业的安全审计公司合作,进行多轮审计,避免合约中的状态和计算错误,为用户的数字资产安全和项目本身安全提供保障。