DAO Maker被盗事件分析_Terra:0x0.ai: AI Smart Contract

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

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

0x26aa86261c834e837f6be93b2d589724ed5ae644bc8f4b8af2207e6bd70828f9

涉及到的地址:

0x41b856701bb8c24cece2af10651bfafebb57cf49: 受害者钱包

美联邦法官允许Terraform Labs向FTX就做空Terra/Luna发出传票:金色财经报道,美国联邦法官John Dorsey允许Terraform Labs向FTX就做空Terra/Luna发出传票,Terraform 坚称 FTX 拥有与其针对SEC执法行动进行辩护的相关信息。 该公司辩称,其Terra/Luna代币的做空导致了2022年5月的崩盘,而FTX拥有信息和相关文件。

据报道,Dorsey 为Terraform Labs提供了特别许可,迫使目前已破产的交易平台FTX提供与Terraform论点相关的文件和信息。FTX 的律师(同时也是 FTX US 的代表)也同意了该命令,FTX 将提供所要求的记录,只要这些记录仅限于 Terraform 针对 SEC 案件的辩护。[2023/8/1 16:10:19]

0x1c93290202424902a5e708b95f4ba23a3f2f3cee: XXX,攻击者合约

dForce启动AMM测试网漏洞赏金计划,提供最高10万枚DF奖励:5月12日消息,DeFi协议dForce宣布推出其原生模块化DEX AMM的测试网漏洞赏金计划,并提供最高10万枚DF奖励。

此前消息,dForce于4月20日推出其原生模块化DEX的测试网,特点包括零费用基础池、较高的资本效率、流动性杠杆以及模块化流动性协议等。[2023/5/12 15:00:02]

0x0eba461d9829c4e464a68d4857350476cfb6f559:中间人

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

Play It Forward DAO宣布完成600万美元融资:1月3日消息,Play It Forward DAO (PIF DAO) 宣布完成600万美元私募融资,Signum Capital、Kyber Ventures、UOB Venture Management、Jump Capital、GBV、LD Capital、Great South Gate、Octava、975 Capital、Arcane Group、Tokocrypto、AU21、Double Peak Group、Faculty Group、NxGen、DWeb3 Capital、GSR 、SL2 Capital和Mintable等参投。联合创始人Cholo Maputol表示,,这笔资金将用于扩大DAO的奖学金计划,扩大其P2E面板平台,并为P2E游戏和基础设施项目的一些早期投资提供资金。(Cointelegraph)[2022/1/3 8:21:26]

dForce社区发起DIP015投票,提议调整USX和EUX铸造费用:11月7日消息,dForce社区发起DIP015投票,提议调整USX和EUX铸造费用。提案建议将以太坊、Arbitrium和BSC上dForce Lending的USX和EUR铸造费调整为每年1.5%。投票期限北京时间为11月7日18:00至11月10日18:00.

据介绍,USX和EUR是dForce上超额抵押稳定币,目前铸造费调整为每年13%,高于DAI和MIM。为了使铸造与市场保持一致,目前的收费水平过高,为采用设置了不必要的障碍。[2021/11/7 6:37:15]

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

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

0x2fba930502d27f9c9a2f2b9337a0149534dda7527029645752b2a6507ca6b0d6

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

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

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

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

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

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

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

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

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

金智博客

[0:0ms0-7:336ms