DAO:权利的游戏 —— DAOMaker被黑分析

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

攻击对象

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

攻击者地址1:

0xd8428836ed2a36bd67cd5b157b50813b30208f50

攻击者地址2:

0xef9427bf15783fb8e6885f9b5f5da1fba66ef931

攻击合约:

0x1c93290202424902a5e708b95f4ba23a3f2f3cee

ConsenSys新服务条款:保留在需要时预扣税款的权利:5月18日消息,1inch联合创始人AntonBukov发推表示,区块链软件技术公司ConsenSys于4月份更新服务条款,其中4.3Taxes一项表示旗下产品“根据适用法律的要求,各方将负责确定并支付所有税款和其他政府费用和收费...我们保留在需要时预扣税款的权利。”[2023/5/18 15:10:04]

DAOMaker受害合约:

0x41B856701BB8c24CEcE2Af10651BfAfEbb57cf49

DAOMaker受害合约deployer:0x054e71D5f096a0761dba7dBe5cEC5E2Bf898971c

DAOMaker受害合约admin:0x0eba461d9829c4e464a68d4857350476cfb6f559

印度央行官员:加密货币可能导致部分经济“美元化”,有违国家主权利益:5月15日消息,据PTI报道,印度央行(RBI)高级官员告诉议会小组,加密货币可能导致部分经济“美元化”,这将违反国家的主权利益。

报道还称,印度央行的高级官员,包括央行行长Shaktikanta Das,向由前财政国务部长Jayant Sinha担任主席的议会财政常务委员会进行了简报,明确表达了他们对加密货币的担忧,并表示这些对金融系统的稳定构成了挑战。

该小组的一名成员援引印度央行官员的话称:“这将严重削弱印度央行决定货币政策和监管该国货币体系的能力。”

央行官员指出,加密货币有潜力在国内和跨境金融交易成为一种交换媒介并替换卢比,这些货币“可以替代货币体系的一部分,也会削弱印度央行调节系统中的流动资金的能力”。(Livemint)[2022/5/16 3:17:42]

攻击细节

美国SEC主席:证券法规给予SEC监管加密货币的权利:美国证券交易委员会主席根斯勒称,证券法规给予SEC监管加密货币的权利。(金十)[2021/9/22 0:15:11]

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

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

1.黑客调用攻击合约(0x1c)的h函数,h函数会循环调用f函数,f函数通过DAOMaker受害合约的0x4b4f892a函数获取普通用户在受害合约(0x41)中的USDC存款数量。

动态 | 影视权利维护公司Fintage House宣布接受加密货币服务:据Cryptonewsreview消息,影视权利维护和金融服务公司Fintage House宣布,将接受加密货币服务。Fintage House已与社交娱乐平台TaTaTu达成协议,接受加密货币TTU Tokens,用于电影和电视权利交易。[2018/11/13]

2.函数h接着调用DAOMaker受害合约(0x41)的withdrawFromUser(0x50b158e4)函数,传入用户存款的用户地址、USDC地址与需要提款的数量。

3.随后DAOMaker受害合约(0x41)将合约中的USDC转移至攻击合约中(0x1c)。

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

独家 | 智能合约权利集中在一人手中还是去中心化吗:近期有部分智能合约具有“上帝账户”的话题在网上被热炒,引起用户的广泛关注。降维安全(www.johnwick.io)站在第三方的角度对此热点事件进行了分析。

1、事件起因:7月9日,Bancor去中心化交易所Token被盗,平台方为了追回被盗资产,利用管理员权限锁定了被盗资产,从而引发了平台方管理员权限过高的讨论。部分安全公司对此行为进行声讨,认为高权限账户完全背离了区块链去中心化的核心思想,对众多用户资产安全造成了严重的安全威胁。

2、降维安全认为:

1)抛开业务谈安全是没有意义的。比如:有些项目方在升级智能合约时,确实需要通过新的智能合约高权限账户为旧合约的用户进行空投,在升级完成后再将此账户禁用。要开展此类业务就无法离开高权限账户。

2)权限应与业务发展相匹配。随着业务发展,初期的高权限账户应该逐步降低权限,做到真正的去中心化,以保证用户的资产安全、树立项目方良好的商誉。高权限账户有些的确是业务需求,完成相应需求后,应该关闭此账户权限。

降维安全仅从7月1日开始至今审计过的近200份智能合约中,已为合作交易所拦截拥有此类权限的智能合约18个,其中17个已经在降维安全的协助下进行整改。大部分项目方还是积极的配合了整改工作,将用户的资产安全放在了第一位。[2018/7/19]

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

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

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

TxHash:

0xa1b4fceb671bb70ce154a69c2f4bd6928c11d98cbcfbbff6e5cdab9961bf0e6d

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

TxHash:

0x773613398f08ddce2cc9dcb6501adf4f5f159b4de4e9e2774a559bb1c588c1b8

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

TxHash:

0x2fba930502d27f9c9a2f2b9337a0149534dda7527029645752b2a6507ca6b0d6

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

总结

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

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

地球链

[0:15ms0-1:533ms