4

权利的游戏 —— DAO Maker 被黑分析

 2 years ago
source link: https://learnblockchain.cn/article/3297
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

权利的游戏 —— DAO Maker 被黑分析

权利的游戏 —— DAO Maker 被黑分析

本次攻击可能源于DAO Maker 受害合约的管理员私钥泄露。

2021 年 08 月 12 日,据慢雾区消息,加密孵化机构 DAO Maker 疑似遭受黑客攻击,导致合约大量 USDC 被转出。慢雾安全团队第一时间介入分析,并将分析结果分享如下。

在本次攻击中,攻击者部署并开源了一个攻击合约 (0x1c) 用于快速批量的从 DAO Maker 受害合约 (0x41) 中窃取资金。

攻击者地址 1

0xd8428836ed2a36bd67cd5b157b50813b30208f50

攻击者地址 2

0xef9427bf15783fb8e6885f9b5f5da1fba66ef931

攻击合约

0x1c93290202424902a5e708b95f4ba23a3f2f3cee

DAO Maker 受害合约

0x41B856701BB8c24CEcE2Af10651BfAfEbb57cf49

DAO Maker 受害合约 deployer:0x054e71D5f096a0761dba7dBe5cEC5E2Bf898971c

DAO Maker 受害合约 admin:0x0eba461d9829c4e464a68d4857350476cfb6f559

攻击细节

本次攻击与往常攻击不同的是:DAO Maker 受害合约 (0x41) 未开源,而攻击合约 (0x1c) 却开源了。

528740e41894068287205e89fa040017.png

从上图开源的攻击合约以及链上记录我们可以看出:

  1. 黑客调用攻击合约 (0x1c) 的 h 函数,h 函数会循环调用 f 函数,f 函数通过 DAO Maker 受害合约的 0x4b4f892a 函数获取普通用户在受害合约 (0x41) 中的 USDC 存款数量。
  2. 函数 h 接着调用 DAO Maker 受害合约 (0x41) 的withdrawFromUser(0x50b158e4) 函数,传入用户存款的用户地址、USDC 地址与需要提款的数量。
  3. 随后 DAO Maker 受害合约 (0x41) 将合约中的 USDC 转移至攻击合约中 (0x1c)。

通过以上行为分析我们可以发现:攻击合约 (0x1c) 调用了受害合约 (0x41) 的 withdrawFromUser 函数,受害合约 (0x41) 就将合约管理的资金直接转给攻击合约 (0x1c) 。我们直接反编译受害合约 (0x41) 查看 withdrawFromUser 函数进行简单分析:ef2f365ce5458bb375f6dbcbb11b2dfc.png

通过反编译的代码我们可以发现,此函数是有进行权限检查的,只有 DAO contracts 才能调用此函数转移用户的资金。但攻击合约 (0x1c) 明显不是 DAO 合约,因此其 DAO 合约必然是被攻击者替换过的。

通过链上分析我们可以清楚的看到:

  1. 受害合约部署者 (0x05) 在部署受害合约 (0x41) 后于 UTC 4 月 12 日 08:33:45 将0x0eba461d9829c4e464a68d4857350476cfb6f559地址设置为了管理员角色:

Tx Hash:

0xa1b4fceb671bb70ce154a69c2f4bd6928c11d98cbcfbbff6e5cdab9961bf0e6d

582e764606cc3be6f92f22927f74260a.png
2. 随后受害合约部署者 (0x05) 通过调用 revokeRole 函数放弃了受害合约 (0x41) 管理权限:

Tx Hash :

0x773613398f08ddce2cc9dcb6501adf4f5f159b4de4e9e2774a559bb1c588c1b8

8e76e686edca6c05e4894afa529ecc67.png

  1. 而管理员则在 UTC 8 月 12 日 01:27:39 将 DAO 合约设置为了攻击合约 (0x1c) :

Tx Hash:

0x2fba930502d27f9c9a2f2b9337a0149534dda7527029645752b2a6507ca6b0d6

c629598448db5298035c9c7900cae131.png

因此攻击者才得以借助此攻击合约 (0x1c) 将受害合约 (0x41) 中用户的资金盗走。目前被盗资金被兑换成 ETH 转移至攻击者地址 2 (0xef)。

本次攻击可能源于 DAO Maker 受害合约的管理员私钥泄漏。攻击者窃取私钥后将受害合约的 DAO 合约替换为了攻击合约,攻击者通过替换后的合约转走了合约中的用户资金。而由于合约部署者在设置完合约管理员后就放弃的合约管理权限,因此目前项目方可能还无法有效的取回合约控制权。

本文首发于:https://mp.weixin.qq.com/s/N-afjgJD3R3JhlcrFxx12A

  • 发表于 15小时前
  • 阅读 ( 90 )
  • 学分 ( 0 )
  • 分类:资讯

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK