木星链 木星链
Ctrl+D收藏木星链

MKR: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发起有关添加ETH-B Vault类型的投票:金色财经报道,据官方博客消息,Maker Foundation智能合约团队已将一项执行投票纳入投票系统。如果该执行建议通过,新的ETH-B Vault类型将被添加至Maker协议中,并且ETH-B将添加稳定费、债务上限、清算率等参数。此外,ETH-B将使用ETH作为抵押。[2020/10/17]

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

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

MakerDAO代币的价格和每日活跃地址数之间存在看涨背离:加密分析公司Santiment的数据显示,MakerDAO代币的价格表现和每日活跃地址数之间存在背离,这通常会导致价格飙升。Santiment称,当山寨币开始升温时,MKR是一项值得密切关注的稳定资产,接下来可以观察这种背离在未来几天、几周内能否持续。(Cointelegraph)[2020/5/20]

细节

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

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

V神盘点以太坊2020年进步,包括PoS测试网及MakerDAO等:V神在推文中列出以太坊在2017年没有、但是在2020年拥有的东西: Uniswap;http://Tornado.cash;Status;MakerDAO;ZK Rollups(如Loopring),吞吐量超过2000 TPS;PoS测试网;叔块率< 10%,区块Gas上限为1000万;Gitcoin赠款。[2020/3/28]

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

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

声音 | MakerDAO中国区负责人:GUSD和WIT都面临中心化托管风险:据Moneyness研究院消息,MakerDAO中国区负责人潘超表示,无论从监管层面还是市值方面,目前的稳定币规模都对任何一个经济体没有太大影响,其是否能超越 USDT 30亿美金的市值都是一个很大的问号。GUSD的实现方式仍然是中心化的法币托管,通过以太坊上发行 1:1 的ERC20 代币。WIT通过公司托管离岸人民币形式实现稳定币的发行,但是 Owner 和 CEO 的权限高度集中,并且没有多重签名和离线私钥的保护,安全性和透明性十分薄弱。[2018/9/19]

简单来说,两个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==

标签:MKRSLATSLALATmkr币什么时候发行的TranslatixLESLARVERSEethylacrylate

芝麻开门交易所热门资讯
IPC:QIPC上线币客交易所

尊敬的BITKER用户:BITKER将于2019年4月18日18点正式开启QIPC/USDT交易对。什么是QIPC?QIPC通过点对点计算机过程在区块链上工作,用于以分布式和分散的方式保护网络.

1900/1/1 0:00:00
TEA:FOne部分币种退市公告

项目方及社区用户:FOne部分币种因流动性低下,平台将于2019年5月22号下线相关交易对,同时关闭充值通道,提现通道将在2019年6月20号关闭.

1900/1/1 0:00:00
BTC:从模式到共振:万变的资金盘,不变的庞氏局

百年之前的原版「庞氏局」中,一年左右的时间里,四万多名波士顿市民变成庞兹的投资者,其中大部分是怀抱发财梦想的穷人,庞兹共收到约1500万美元的小额投资,平均每人「投资」几百美元.

1900/1/1 0:00:00
AID:MAID上线币客交易所

尊敬的BITKER用户:BITKER将于2019年4月18日17点正式开放:?MAID/USDT?MAID/BTC?MAID/ETH交易对.

1900/1/1 0:00:00
比特币:BTC大涨都有哪些可能原因?

是资金盘锁仓带来的利好吗?是共识大会魔咒再次显现吗?是华尔街大资金入场了吗?或许你也像我一样对近期比特币价格的暴涨感到开心又困惑.

1900/1/1 0:00:00
AERGO:Aergo区块链落地与政府企业合作全面分析-附韩国企业解释说明

在经历了2017年底的大牛和2018年的北极熊市后,区块链领域的人们开始越发的关注项目的落地性,逐渐有更多的人理性的看待区块链项目,而不是像曾经一窝蜂的扎堆进投机的浪潮.

1900/1/1 0:00:00