北京时间2019年05月07日,区块链安全公司Zeppelin对以太坊上的DeFi明星项目MakerDAO发出安全预警,宣称其治理合约存在安全漏洞,希望已锁仓参与投票的用户尽快解锁MKR提并出。MakerDAO的开发者Maker公司亦确认了漏洞存在,并上线了新的治理合约,并宣称漏洞已修复。
该安全威胁曝出后,PeckShield全程追踪了MKR代币的转移情况,并多次向社区发出预警,呼吁MKR代币持有者立即转移旧合约的MKR代币。截止目前,绝大多数的MKR代币已经完成了转移,旧治理合约中尚有2,463个MKR代币待转移。
05月07日当天,经PeckShield独立研究发现,确认了该漏洞的存在,具体而言:由于该治理合约实现的投票机制存在某种缺陷,允许投票给尚不存在的slate。等用户投票后,攻击者可以恶意调用free()退出,达到减掉有效提案的合法票数,并同时锁死投票人的MKR代币。
MakerDAO发起紧急提案,提议变更USDC等资产相关参数以减轻协议风险:3月11日消息,MakerDAO治理社区发起紧急提案,提议变更USDC相关资产风险和治理参数,将UNIV2USDCETH-A、UNIV2DAIUSDC-A、GUNIV3DAIUSDC1-A以及GUNIV3DAIUSDC2-A等USDC相关LP作为抵押品的债务上限降至0。
此外,提案还要求更改PSM-USDC-A、PSM-GUSD-A等锚定稳定模块的部分参数以减轻协议风险。[2023/3/11 12:57:22]
次日05月08日,PeckShield紧急和Maker公司同步了漏洞细节,05月10日凌晨,MakerDAO公开了新版合约。Zeppelin和PeckShield也各自独立完成了对其新合约的审计,确定新版本修复了该漏洞。
流动性协议Tokemak将引入投票托管代币accTOKE治理模型:金色财经消息,流动性协议Tokemak在最新一次的社区电话会议中表示,将引入投票托管代币accTOKE治理模型,以推动协议控制资产(PCA)的发展。另外,Tokemak会在2022年年末支持跨链或Layer2。[2022/6/5 4:02:58]
在此我们公布漏洞细节与攻击手法,也希望有引用此第三方库合约的其它DApp能尽快修复。
细节
在MakerDAO的设计里,用户是可以通过投票来参与其治理机制,详情可参照DAO的FAQ。
以下是关于itchyDAO的细节,用户可以通过lock/free来将手上的MKR锁定并投票或是取消投票:
动态 | Maker DAO项目正在进行投票以大幅降低稳定费:Maker DAO项目正在进行一项投票,以大幅降低稳定费。投票将于本周三结束,届时将可在5.5%至13.5%之间选择稳定费用。周五MKR持有人将举行一次行政投票,以批准更广泛的治理投票所选择的稳定费。稳定费旨在减少DAI稳定币的波动性,并继续进行MRK去中心化金融系统,而不会引起清算或提款。(Cryptovest)[2019/10/22]
在lock锁定MKR之后,可以对一个或多个提案(address数组)进行投票:
注意到这里有两个vote函数,两者的传参不一样,而vote(addressyays)最终亦会调用vote(bytes32slate),其大致逻辑如下图所示:
动态 | 抵押在Maker DAO的ETH达到200万枚 价值约2.34亿美元:加密货币研究员Kevin Rooke近日发推称,自2018年11月以来,Maker在其平台上的销售额增长了28%,该抵押品用于创造和维持稳定币DAI的价格。虽然DAI与美元挂钩,但它没有美元来支持它。相反,它将大量的以太坊锁定在智能合约中。它现在拥有高达200万(约2.34亿美元)的ETH。按照目前的增长速度,一年后将达到约4080万ETH,占整个以太坊供应的近40%。[2019/2/13]
简单来说,两个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==
币价跌到你能够承受的最低价位时,就果断卖出,减少损失。有些人把止损也叫做“割肉”,但是止损和割肉也是有区别的,相对来说选择止损的投资者基本上都有自己后期的操作策略,会选择在适当的点位及时卖掉,降.
近日BNB连创新高,自5月10日以来,BNB不断上涨突破新高,25美元是BNB此前历史最高价位,于2018年1月创下;2019年5月19日,BNB创下近期新高29.8368美元.
尽管投资于仍处于萌芽状态的加密货币市场存在风险,但一位首席安全科学家认为,加密货币仍然「绝对是一件好事」——他们只是有一些工作要做.
美国时间5月14日,安全研究人员在英特尔芯片中发现了一种新的漏洞,如果利用这种漏洞,可以直接从处理器中窃取敏感信息.
文|嚯嚯 截至21日12时,经历小幅回调后,比特币价格依然坚挺,现报7922美元,相比去年年底3155美元的阶段性底部,涨幅达150%.
尊敬的BITKER用户:“ZCO交易大赛”活动已经于2019年4月28日23:59:59圆满结束,感谢用户的大力支持,所有奖励都已经发放至您的个人账户,敬请查收,感谢您的支持与参与.