12月9日Augur白皮书作者、独立开发者Micah Zoltu在Medium发表章,称发现MakerDAO的漏洞,认为攻击者仅需15秒动用40000枚MKR(约2000万美元)就可以盗取Maker DAO的所有抵押资产,包括DAI、SAI以及来自Compound、Uniswap以及其它集成Maker系统的大量资产(超过3.4亿美元)。而且,Maker在发布Maker v2之前就已经意识到了这个漏洞。Micah Zoltu还陈,他之前向Maker提醒这个攻击场景,但Maker基金会没有采取措施仍然上线了Maker v2。文章发表后,Maker基金会回应称这仅是治理漏洞,不过Maker基金会已发布了紧急公告,称正在发起治理规则提案,修复这一问题。
具体怎么回事,金色财经编译了Micah Zoltu文章以及MakerDao最新回应,一文读懂Maker DAO漏洞事件。
太长不读版:
你的资金并不安全。
摘要
拥有约40000 MKR(约2000万美元)的任何人都可以窃取Maker DAO中的所有抵押品,包括DAI和SAI,以及来自Compound,Uniswap和其他Maker集成系统的大量资产(超过340,000,000 USD)。
Maker DAO v2(又名Multi-Collateral DAI,又名McDAI)原本应该采取防御措施(紧急停机和治理延迟)启动,以防止敌对的MKR持有者窃取所有抵押品,并可能在此过程中窃取大量与Maker相关的Uniswap、Compound和其他系统。事实相反,他们决定不这样做。
银行
Maker DAO,目前,在其v1和v2版本中,已经锁定了价值3.4亿美元的ETH。与https://uniswap.exchange或https://augur.net不同,它也是一个“受监管”的系统,这意味着一些富豪可以控制系统的行为。
设计
监管系统可以调用各种各样的内部功能,这些功能允许监管者做任何他们想做的事情。监管是一个相当简单的“领导者”系统,您可以在控制该系统的合约上下注购买MKR,并向拥有最高下注MKR的合约授予控制权。由于当前的行政合约已投入了约80,000 MKR,因此您几乎可以随心所欲地做任何事情,Maker合约的金额约为80,000 MKR,约合4,100万美元。为了减少恶意行为的威胁,该系统有一种机制,使其在选择新的执行合约后,在采取任何行动之前都有一个延迟。在此期间,任何拥有足够数量MKR的人都可以触发整个系统的全球解决方案,从而在新的执行合约出现任何问题之前有效地关闭它。这意味着,如果一个小偷出现并试图在自己的计划中窃取所有抵押品的执行合约中投票,即使他们拥有的股份比其他执行合约更多,他们也必须等待这一延迟,并希望没有人在此期间触发了防御机制。
疏忽
存在的问题是,Maker基金会已确定此治理延迟的适当值为0秒。没错,防御者有0秒的时间来防御一个富有但恶意的政党发起的攻击。
精妙之处
鉴于以上,攻击者可以做以下事情:
1、通过任何可能的方式获得80,000 MKR。
2、创建一份执行合同,该合同经编程可将所有抵押品从Maker转移给你。
3、立即对合同进行表决。
4、立即激活合同。
5、带上价值3.4亿美元的ETH消失(不要再为你的MKR烦恼,此后将一文不值)。
这是令人难以置信的利润(8倍的ROI),但是执行起来却很昂贵。幸运的是,我们只需耐心就可以将攻击成本降低到50%!
还记得上面我们描述的当前投票系统的工作方式吗?即拥有最多投票权的执行合同是拥有全部控制权的合同吗?每当提议进行管理表决时,MKR股权都会有一段时间从旧的行政合同迁移到新的。这绝不会一次全部发生,通常随着时间的推移会随着个人向前移动选票而发生。在某个时间点上,将80,000个积极参与的MKR分配给两个执行合同,每个合同中约有40,000 MKR。一个好的脚本可以轻松地对交易进行计时,以使它在MKR在两个合同之间最佳分配时正确着陆,并在当时执行上述攻击,仅花费40,000 MKR(约合2000万美元)。
收银机
如果窃取3.4亿美元对您来说还不够,那么您也可以在攻击执行过程中为自己造一个四千万美元的DAI。在抢劫Maker的同一笔交易中,您可以将该DAI移交给Uniswap并窃取DAI:ETH对中可用的所有ETH流动资金。要从不幸的银行顾客的口袋中获得一些额外的零钱,您还可以借出四千万DAI,并借入所有可用的借贷资金(您永远不会偿还贷款,只保留借入的资产)。如果您迅速采取行动,您甚至可以在铸造所有DAI之后立即在半分散交易所(如IDEX,Paradex,RadarRelay等)上兑现。
人群
但是,等等,还有更多!以太坊是基于约束性协议的系统!这意味着一个人可以创建一个智能合约,其中多个互不信任的人可以在一组严格的规则下串通。规则可能是这样的:
如果该合同收取40,000 MKR,那么任何人都可以触发该合同,将立即抢劫Maker。成功抢劫后,战利品将在MKR贡献者之间平均分配。如果抢劫失败,参与者可以撤回MKR。任何人都可以随时撤回其MKR。
这个非常简单的合约是为该合约做出MKR的每个人之间的具有约束力的协议,并且不需要任何人像传统抢劫一样互相信任。没有人可以逃脱所有的掠夺,没有人可以窃取任何其他参与者的贡献,除了执行约定的抢劫之外,没有人可以将贡献的MKR用于其他任何事情。
有人可能会争辩,任何攻击者都必须将自己的存在传达给众包,而Maker Foundation可以简单地打破其“我们不参与治理”的规则,以将基金会的所有MKR投入到攻击中来阻止攻击投票,因此现在费用为400,000,000 MKR,而不是40,000 MKR。尽管Maker Foundation确实可以阻止这种情况的发生,但并不能保证他们一定会看到它的到来。例如,攻击者可能在其他地方拥有资本,并且他们可以在不进行交换的情况下使用其获取MKR。攻击者也可能是MKR持有者,他们知道其他MKR持有者具有一定的道德缺陷,可以私下进行协调.
即使具有约束力的协议合同是公共知识,也可以以混淆众包的方式进行设计。例如,您可以让感兴趣的每个人都向中央服务提供商提交预签名的交易(无需完全信任他们),然后中央服务提供商将等待传播这些交易,直到足够的MKR“准备动员”为止。在这种情况下,要么Maker Foundation介入以集中控制系统而不知道是否有人在做贡献,要么他们什么都不做,冒着随时可能发动攻击的风险,无法及时做出反应。
内部人攻击
如果Maker基金会愿意的话,他们现在就可以用这种方式攻击Maker DAO系统。他们持有的MKR数量超过了所需的80000枚。更糟糕的是,a16z也持有足以攻击Maker系统的MKR数量。还有其他几个拥有足够数量来执行这种攻击的MKR持有者,我不知道他们的身份。除此之外,还有不少人可能需要合谋才能执行这样的攻击。
让人害怕的是,这并不是DeFi,而是CeFi,尽管不能说它是一家能让某一个人能偷走你所有钱的银行,但这家银行或者任何一个它的大股东,或者它的一群小股东可以在任意时间偷走你所有的钱。
攻击带来的后果
因此,如果有人执行这样的攻击,Maker用户会发生什么呢?首先,每个拥有CDP/金库的人都会被伤害。攻击者的目的就是盗取所有的抵押品,其带来的连锁反应就是,DAI变得100%抵押不足,其价格很可能会归零。之后,MKR的价值也可能会归零,因为整个系统基本上完全失败了,而且在这种失败之后它也不太可能会恢复了。很可能以太坊也会因此而受伤,因为这将是以太坊生态系统的又一次大失败。但我认为以太坊仍然会复苏,因为它仍是一个好的平台,但这将提醒人们,“在好地基上人们也能建设出坏建筑”。
Marker DAO的辩护
我已经向Maker提醒了这个攻击场景,但他们明确表示,这不值得他们放弃现有的治理管控来抵御这种攻击。
他们的辩护理由如下(我有改述,如果你想要第一手描述,请与他们联系)并附有我的反驳:
1、攻击漏洞已经存在相当长时间了,但目前为止一切还好。
Heartbleed(OpenSSL攻击漏洞)存在10年后才被发现。Maker的源代码是出了名的难以理解,以太坊开发社区的很大一部分人对此都有很多的抱怨。我之前曾亲自告诉他们,我没有审计Maker的合约,因为读它们的代码实在太难了。但我最终还是深入阅读Maker v2了,因为人们假想它应该是安全的,不像Maker v1被人们认为是不安全的,尽管我并没有意识到它有多不安全。仅仅因为还没有人攻击,并不意味着它们将来不会被攻击。当漏洞变得更广为人知时,这一点更为如此。
2、攻击代价对任何人来说都太昂贵了,只有少数人才能执行。
参见上面的“群体”部分。还要注意的是,它只需要一个人来攻击,因此“太贵了,只有少数人拥有这种可能”并不能保证系统的安全。
3、攻击者或会泄露他们的攻击。
这种情况发生的前提,当攻击来自一大批共谋的MKR持有者,当Maker收到可能有人准备攻击提示时愿意防御。
4、Maker会对攻击者采取法律行动。
这基本上是在打脸DeFi。以太坊生态系统中的很多人公开表达过,他们努力保护自己免受全权政府的侵害。宣称“你的钱是安全的,因为和你一样躲避政府侵害的那些人将保护你”,根本不会让人放心。
此外,它还假定攻击者不是匿名的(见下一条)。
5、在以太坊上很难匿名。
是的,在以太坊上匿名是有点棘手。但尽管如此,The DAO的攻击者是谁至今还没人知道,中本聪是谁也是个迷。许多非常富有的ETH持有者至今是谁也没人知道。对能带来大规模收益的攻击来说,很难并不是一个好的辩护理由。
6、这是一个已知的风险,但还有一些可能更糟的未知风险。
我强烈反对这种风险评估方法。有一个已知的风险,通过它攻击系统非常有利可图,然后拿它和未知影响和未知风险进行比较。这种思维像这样:“没有任何攻击漏洞值得我们放弃治理控制。”
披露
Maker在Maker v2发布之前就已经意识到了这个问题,而且很有可能从一开始就知道。尽管如此,他们还是选择不解决这个漏洞(要解决它很容易)。正因为如此,让我不发表此文以及寄希望于没有攻击者能发现Maker漏洞,并不是我的责任,因为理解Maker治理模型的人很容易发现这个漏洞。
最新进展:
MakerDAO中国区负责人潘超12月10日上午表示,MakerDAO并未出现安全漏洞,所有资金安全,原文作者指出的问题是所有权益系统都存在的治理挑战,作为Maker的开发团队,该治理挑战是已知可控的,并且通过有计划的一系列工具箱权衡解决。潘超指出,DAO是一个复杂系统,最重要的是权衡,单线思维下的设计是不稳定的,现行的Maker系统相对是最安全的。
同时,Maker基金会官方博客发布文章称,12月9日已发布新的治理规则提案,提案通过后,延迟时间将从0增加到24小时。
并解释走出改变的原因:自MCD启动以来,延迟时间设置为0,这使得社区能够立即采取行动,减少技术错误、预言机故障或异常情况,如市场恐慌或经济攻击。由于这些事件的可能性在MCD启动后开始降低,现在就快到审查GSM关于制定最佳延迟量讨论的时候了。由于基金会收到一篇博文的通知,该博文详细介绍了一系列可能导致利用治理系统的事件,因此该版本现在已经升级。此前,社区曾考虑过该攻击的可能性,但这并不是一个紧迫的问题。然而,由于来自上述博客的潜在宣传,利用此exploit的可能性增加了。