宇宙链 宇宙链
Ctrl+D收藏宇宙链

MakerDAO治理合约升级背后的安全风波

作者:

时间:1900/1/1 0:00:00

北京时间2019年05月07日,区块链安全公司Zeppelin对以太坊上的DeFi明星项目MakerDAO发出安全预警,宣称其治理合约存在安全漏洞,希望已锁仓参与投票的用户尽快解锁MKR提并出。MakerDAO的开发者Maker公司亦确认了漏洞存在,并上线了新的治理合约,并宣称漏洞已修复。

该安全威胁曝出后,PeckShield全程追踪了MKR代币的转移情况,并多次向社区发出预警,呼吁MKR代币持有者立即转移旧合约的MKR代币。截止目前,绝大多数的MKR代币已经完成了转移,旧治理合约中尚有2,463个MKR代币待转移。

05月07日当天,经PeckShield独立研究发现,确认了该漏洞的存在,具体而言:由于该治理合约实现的投票机制存在某种缺陷,允许投票给尚不存在的slate。等用户投票后,攻击者可以恶意调用free()退出,达到减掉有效提案的合法票数,并同时锁死投票人的MKR代币。

MakerDAO联创Rune时隔一个半月再次购买MKR:7月16日消息,据链上分析师余烬监测,MakerDAO创始人Rune时隔一个半月再次购买MKR。其1小时前将500万枚DAI转至0x0f8地址,通过0x0f8地址花费62万DAI买入620枚MKR,均价1000美元。随后又将200万USDC转入Coinbase。[2023/7/16 10:58:19]

次日05月08日,PeckShield紧急和Maker公司同步了漏洞细节,05月10日凌晨,MakerDAO公开了新版合约。Zeppelin和PeckShield也各自独立完成了对其新合约的审计,确定新版本修复了该漏洞。

在此我们公布漏洞细节与攻击手法,也希望有引用此第三方库合约的其它DApp能尽快修复。

Maker为实体资产开启投票,将引入地产、贸易等企业:Maker开启新投票,将陆续引入实体经济中地产、贸易、债券等企业,投票通过后将直接为企业开通专属MCD,提供DAI的额度。陆续引入RWA的具体企业名单为:New Silver - Real estate、ShuttleOne - Trade finance、Arca - Government bonds、Harbor - Trade finance、ConsolFreight - Trade finance、Wiv - Tokenized Wine index fund、Paperchain - Tokenized music streaming invoices、Paxos Gold - Tokenized Gold。[2020/8/18]

细节

MakerDAO发起降低基本费率及提高WBTC和USDC债务上限的新执行投票:金色财经报道,据官方消息,7月3日,Maker基金会临时治理协调员将一系列执行投票纳入投票系统。具体包括:1.添加多个Oracle喂价;2.将基本费率从0.25%降低到0%;3.将USDC-A稳定费从1%提高至4%;4.将USDC-A债务上限从20提升到4000万;5.将WBTC-A稳定费从1%提高到2%;6.将WBTC-A债务上限从1000万提高到2000万。[2020/7/4]

在MakerDAO的设计里,用户是可以通过投票来参与其治理机制,详情可参照DAO的FAQ。

以下是关于itchyDAO的细节,用户可以通过lock/free来将手上的MKR锁定并投票或是取消投票:

育碧及MakerDAO等支持区块链游戏联盟:金色财经报道,区块链游戏联盟(BGA)于3月30日宣布任命Sébastien Borget为总裁。此外,育碧(Ubisoft)、AMD、Animoca Brands和MakerDAO等公司在2020年成为其赞助商。[2020/3/31]

在lock锁定MKR之后,可以对一个或多个提案(address数组)进行投票:

注意到这里有两个vote函数,两者的传参不一样,而vote(addressyays)最终亦会调用vote(bytes32slate),其大致逻辑如下图所示:

简单来说,两个vote殊途同归,最后调用addWeight将锁住的票投入对应提案:

可惜的是,由于合约设计上失误,让攻击者有机会透过一系列动作,来恶意操控投票结果,甚致让锁定的MKR无法取出。

这里我们假设有一个从未投过票的黑客打算开始攻击:

1、调用lock()锁仓MKR,此时deposits会存入锁住的额度。

2、此时黑客可以线下预先算好要攻击的提案并预先计算好哈希值,拿来做为步骤3的传参,因为slate其实只是address数组的sha3。

这里要注意挑选的攻击目标组合必须还不存在于slates中(否则攻击便会失败),黑客亦可以自己提出一个新提案来加入组合计算,

如此便可以确定这个组合必定不存在。

3、调用vote(bytes32slate),因为slate其实只是address数组的sha3,黑客可以线下预先算好要攻击的提案后传入。

这时因为votes还未赋值,所以subWeight()会直接返回。接下来黑客传入的sha3(slate)会存入votes,之后调用addWeight()。从上方的代码我们可以看到,addWeight()是透过slates取得提案数组,此时slates获取到的一样是未赋值的初始数组,所以for循环不会执行

4、调用etch()将目标提案数组传入。注意etch()与两个vote()函数都是public,所以外部可以随意调用。这时slates就会存入对应的提案数组。

5、调用free()解除锁仓。这时会分成以下两步:

deposits=sub(deposits,wad),解锁黑客在1.的锁仓

subWeight(wad,votes)

从对应提案中扣掉黑客的票数,然而从头到尾其实攻击者都没有真正为它们投过票。

从上面的分析我们了解,黑客能透过这种攻击造成以下可能影响:

一、恶意操控投票结果

二、因为黑客预先扣掉部份票数,导致真正的投票者有可能无法解除锁仓

时间轴

时间

事件

2019.05.07

PeckShield复查并确认了漏洞存在

2019.05.08

PeckShield与Maker基金会讨论并确认了漏洞细节

2019.05.09

Maker基金会公布新版DSChief合约源码,PeckShield披露了漏洞相关细则

*文章为作者独立观点,不代表BSCEC立场

转载此文章须经作者同意,并请附上出处及本页链接。原文链接https://mp.weixin.qq.com/s?__biz=MzU3MTU2NTU1MA==

标签:MAKEMakerMKRDAOmakerdao官网Rainmaker Gamesmkr币怎么挖United DAO

火币APP下载热门资讯
Intel 再曝僵尸负载漏洞:直接获取密码、2011 年后电脑都受影响

美国时间5月14日,安全研究人员在英特尔芯片中发现了一种新的漏洞,如果利用这种漏洞,可以直接从处理器中窃取敏感信息.

1900/1/1 0:00:00
SEC和FINRA向经纪和交易商抛出加密橄榄枝?

美国两大金融监管机构——美国证券交易委员会和美国金融业监管局将会在6月27日召开一场涉及加密货币的会议,期间将和传统经纪商和交易商讨论加密货币问题.

1900/1/1 0:00:00
猎聘报告:仅次于电竞 区块链行业平均年薪为26.02万元

近日,猎聘发布《2019年中国电竞行业中高端人才吸引力报告》。根据猎聘大数据显示,2018年1月-2019年4月电竞行业中高端人才平均年薪为29.02万元,远高于全行业平均年薪(20.22万元),比后者高出8.8万元,位居新兴热门领域.

1900/1/1 0:00:00
万卉:有人在Bitstamp挂了5000个BTC的卖单|Fun twitter

2019年伊始,金色财经推出全新栏目:Funtwitter。推特是海外加密世界意见领袖们发表言论的重要场所。金色财经将为您收集每日加密世界中的海外意见领袖与知名媒体在推特上的有趣推文。我们不生产观点,我们只是观点的搬运工.

1900/1/1 0:00:00
上币公告丨RPZ上线币客BITKER交易所公告

RPZ上线币客BITKER交易所公告尊敬的BITKER用戶:经RPZ运营团队申请,BITKER审核通过,RPZ即将在10月上线币客BTC,USDT交易区.

1900/1/1 0:00:00
深度解读以太坊2.0第二阶段:如何转移你的钱

金色财经比特币5月20讯本文作者是ConsenSys研究员威尔·维拉纽瓦,他此前曾担任以太坊及ERC20代币支付公司BountiesNetwork联合创始人兼首席科技官.

1900/1/1 0:00:00