DAO:DAO Maker被盗事件分析

8月12日,根据DAO Maker电报群用户反馈,该项目疑似遭到黑客攻击,价值700万美元的USDC被黑客提取至未知地址。团队经过分析后,发现该事件的起因是私钥泄露或者内部人士所为。

通过我们的交易分析系统(https://tx.blocksecteam.com)我们发现,攻击的过程非常简单。攻击交易的hash是:

0x26aa86261c834e837f6be93b2d589724ed5ae644bc8f4b8af2207e6bd70828f9

涉及到的地址:

0x41b856701bb8c24cece2af10651bfafebb57cf49: 受害者钱包

dYdX DAO运营实体:运营资金充足,正与多家银行商谈合作:1月17日消息,dYdX DAO运营实体dYdX Operations Trust(DOT)发布首次运营内容更新,称自去年12月18日启动以来,DOT已将收到的22.5万枚DYDX兑换为303075枚USDC以满足预算要求,并已经发布了一个Gantt图,概述在3月初交付社区草稿的时间表,此外也正在与多家银行积极商讨加入DOT。随后DOT将通过月度报告向社区更新银行支持、DAO草案等方面的进展。

据介绍,DOT主要负责发布dYdX DAO草案、为社区提供启动新的子DAO(subDAO)指南,从而促进由社区管理的dYdX DAO成长;开设法定银行账户以管理服务提供商的费用;创建和管理可以作为dYdX DAO标准的通信渠道等,使命是实现社区运营的dYdX DAO的发展,目前subDAO已获6个月的运营资金。

此前金色财经报道,dYdX DAO发布短期路线,计划于2023年Q2发布V4主网。[2023/1/17 11:16:24]

0x1c93290202424902a5e708b95f4ba23a3f2f3cee: XXX,攻击者合约

大学生全球线上马拉松THUBA DAO Summer Hack进入评审阶段:9月13日消息,大学生全球线上马拉松THUBA DAO Summer Hack已于9月12日在全球开发者激励平台DoraHacks.io上关闭报名通道,共吸引来自包括纽约大学、香港中文大学、清华大学、越南河内公立大学在内的全球60支大学生团队提交项目,共同角逐6万美金总奖金池。

本次活动由THUBA DAO— 清华大学学生区块链协会(THUBA)发起的去中心化自治组织主办,面向全球所有大学生开发者,旨在培养下一代Web3领导者。[2022/9/13 13:26:38]

0x0eba461d9829c4e464a68d4857350476cfb6f559:中间人

ENS DAO通过EP4提案,将创建基础工作组并制定相关规则:12月20日消息,ENSDAO通过了EP4提案,将创建基础工作组并制定工作组相关规则。基础工作组将用于管理与DAO相关的工作,而无需将DAO的每项举措或决定都作为提案通过。据悉,ENSDAO将设立以下4个基础工作组:1.元治理:为ENSDAO和工作组的管理和运营提供治理监督和支持;2.ENS生态系统:持续开发和改进ENS协议和生态系统,重点关注与ENS相关的所有技术问题;3.社区:支持作为ENS用户的个人和组织,重点关注非技术问题;4.公共物品:将ENS放大为公共物品并资助ENS生态系统内的公共物品,更广泛地在web3中。[2021/12/20 7:50:38]

0x054e71d5f096a0761dba7dbe5cec5e2bf898971c:受害合约创建者(也是攻击者)

MakerDAO有关添加AAVE等为Dai抵押品的提案将进入执行投票:MakerDAO发微博称,有关添加AAVE等为Dai抵押品的提案已经通过,将进入执行投票。此前报道,12月8日,MakerDAO将一项新的治理民意调查纳入投票系统,是否添加AAVE、Uniswap DAI-ETH LP Token和Uniswap USDC-ETH LP Token作为Dai抵押品。[2020/12/11 14:56:06]

攻击者XXX (0x1c93290202424902a5e708b95f4ba23a3f2f3cee)调用受害者钱包合约(0x41b856701bb8c24cece2af10651bfafebb57cf49)的函数查询用户余额,然后调用withdrawFromUser将钱转到自己的账户。攻击完成。由于转账的操作是一个特权操作,因此通常需要对调用者的身份做校验。我们通过分析发现,攻击者确实具有相应的权限来将受害者钱包中的余额转出。

这里的问题就变成为什么攻击者能具有相应的权限?通过进一步分析我们发现另外一笔交易。这一笔交易将攻击者赋予具有转账的权限。交易trace如下:

0x2fba930502d27f9c9a2f2b9337a0149534dda7527029645752b2a6507ca6b0d6

0x0eba461d9829c4e464a68d4857350476cfb6f559调用受害者合约的grantRole函数将攻击者0x1c93赋予具有转账的权限。但是能调用grantRole赋予其他账户权限,那么0x0eba4必须具有admin的权限。那么他的admin权限是谁授予的呢?

继续追踪,我们发现它的admin权限是由另外一笔交易完成的。

0x054e71d5f096a0761dba7dbe5cec5e2bf898971c账户将0x0eba461d9829c4e464a68d4857350476cfb6f559账户设置成受害合约的admin。

然而我们发现,受害合约是由0x054e71d5f096a0761dba7dbe5cec5e2bf898971c创建的。

总结一下,整个的流程是:

那问题就来了,为什么部署受害者合约的0x054e最后间接赋予了攻击者能转账的特殊权限呢?这里有两个可能性。第一个0x054e是内鬼,第二个就是私钥泄露。

另外一个有趣的点就是攻击者的合约是开源的,代码简单易懂,可以作为学习合约开发的启蒙教程。

但是受害者的合约代码是不开源的。这有点匪夷所思。不开源的钱包也有人敢用?

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

[0:46ms0-0:973ms