您的位置 首页 Defi-NFT

技术简析 DAO Maker 被盗 700 万美元攻击细节

BlockSec 认为,攻击事件的起因可能是私钥泄露或者内部人士所为。

撰文:BlockSec

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

攻击过程

通过我们的交易 分析系统 我们发现,攻击的过程非常简单。攻击交易的 hash 是:

0x26aa86261c834e837f6be93b2d589724ed5ae644bc8f4b8af2207e6bd70828f9

涉及到的地址:

  • 0x41b856701bb8c24cece2af10651bfafebb57cf49: 受害者钱包
  • 0x1c93290202424902a5e708b95f4ba23a3f2f3cee: XXX,攻击者合约
  • 0x0eba461d9829c4e464a68d4857350476cfb6f559:中间人
  • 0x054e71d5f096a0761dba7dbe5cec5e2bf898971c:受害合约创建者(也是攻击者)

技术简析 DAO Maker 被盗 700 万美元攻击细节

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

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

0x2fba930502d27f9c9a2f2b9337a0149534dda7527029645752b2a6507ca6b0d6

技术简析 DAO Maker 被盗 700 万美元攻击细节

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

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

0x41b856701bb8c24cece2af10651bfafebb57cf49

技术简析 DAO Maker 被盗 700 万美元攻击细节

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

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

技术简析 DAO Maker 被盗 700 万美元攻击细节

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

技术简析 DAO Maker 被盗 700 万美元攻击细节

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

其他

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

技术简析 DAO Maker 被盗 700 万美元攻击细节

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

最后

最近区块链安全接连出现大的安全事件,包括  [虚拟印钞机] Popsicle Finance 双花攻击分析 和 [阿喀琉斯之踵] Poly Network 攻击关键步骤深度解析,损失都在几百万美金到数亿美金之间。项目方如何提高安全意识,保护好代码安全和资产安全,正是 blocksec 团队希望和社区一起能解决的问题。只有把安全做好,DeFi 的生态才能更健康有序发展。

热门文章

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注