USDC:权利的游戏 :DAO Maker 被黑分析

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

攻击对象

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

攻击者地址1:

0xd8428836ed2a36bd67cd5b157b50813b30208f50

攻击者地址2:

0xef9427bf15783fb8e6885f9b5f5da1fba66ef931

攻击合约:

0x1c93290202424902a5e708b95f4ba23a3f2f3cee

Celsius律师声称用户放弃了对其加密的合法权利:7月19日消息,在北京时间7月19日凌晨举办的针对Celsius的首次法庭听证会上,Celsius代理人Kirkland律师事务所的律师表示,Celsius在100多个国家的170万注册用户放弃了他们存入赚取和借入账户的加密货币的所有权。此外,Kirkland律所的律师详细介绍了拥有Earn和Borrow账户的零售用户如何根据其服务条款(ToS)将其代币的所有权转让给该公司。因此,Celsius可以随心所欲地“使用、出售、质押和再抵押这些代币”。(cointelegraph)[2022/7/19 2:22:43]

DAOMaker受害合约:

0x41B856701BB8c24CEcE2Af10651BfAfEbb57cf49

数字权利倡导组织:加密税收规则修正案从根本上误解了加密货币的运作方式:金色财经报道,数字权利倡导组织“为未来而战”今天表示,不会支持参议员Mark Warner、Rob Portman及Kyrsten Sinema制定的加密税收规则修正案。据该组织称,拟议的修正案得到了“彻底的反对”,作为该法案的可能解决方案,该修正案“从根本上误解了加密货币和权力下放的运作方式”。该组织称,原始条款和Portman修正案从根本上误解了去中心化技术是去中心化的。他们所制定的法律完全行不通,要求这个生态系统中的许多人产生他们从未拥有也无法访问的数据。该组织声称,拜登政府和该修正案的民主党支持者“都没有在去中心化技术方面做足功课”。[2021/8/7 1:39:57]

DAOMaker受害合约deployer:0x054e71D5f096a0761dba7dBe5cEC5E2Bf898971c

Blockstream首席战略官:比特币给予人们持有金钱的权利:Blockstream首席战略官Samson Mow发推表示:美国宪法第二修正案给了美国人持有武器的权利,比特币赋予世界上每个人持有金钱的权利。[2020/12/22 16:05:19]

DAOMaker受害合约admin:0x0eba461d9829c4e464a68d4857350476cfb6f559

攻击细节

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

动态 | 希腊法院被控侵犯了被指控的Btc-e运营商的权利:据news.bitcoin消息,希腊最高法院的法官被指控侵犯了Alexander Vinnik的权利。他的律师Zoe Konstantopoulou周一告诉法庭,希腊最高法院的法官“公然违反了俄罗斯国民的权利”。自去年7月以来,所谓的Btc-e运营商一直在希腊被拘留。据报道,Vinnik被引渡到法国的上诉听证会已被推迟到11月29日。据称经营前加密货币交易所Btc-e的Alexander Vinnik被美国指控通过交易所40至90亿美元。[2018/11/20]

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

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

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

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

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

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

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

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

TxHash:

0xa1b4fceb671bb70ce154a69c2f4bd6928c11d98cbcfbbff6e5cdab9961bf0e6d

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

TxHash:?

0x773613398f08ddce2cc9dcb6501adf4f5f159b4de4e9e2774a559bb1c588c1b8

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

TxHash:?

0x2fba930502d27f9c9a2f2b9337a0149534dda7527029645752b2a6507ca6b0d6

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

总结

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

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

链链资讯

[0:31ms0-3:844ms