最初闪电贷带给人们的惊喜,已经慢慢变成了恐惧,这种颠覆式创新,已经打开了DeFi的潘多拉魔盒。
本周,DeFi协议bZx连续遭遇两次攻击后,共计丢失了3571ETH(近90万美元)资产,而在昨日,由伦敦帝国理工学院学者Dominik Harz撰写的《窃取所有的Maker抵押物》一文,再次让人们绷紧了神经。
据悉,这篇文章讨论了如何通过闪电贷和Maker的治理缺陷来窃取价值数亿美金的抵押物,让人担心的是,其讨论的内容并不是危人耸听,而是为了提醒MakerDao官方做出防御措施。
Businessman with dominoes in the office
图片来自:tuchong.com
而对于潜在的攻击,MakerDao官方不得不在本周五进行一次紧急投票,以便将治理攻击的风险降到最低。
在一篇帖子中,MakerDao成员LongForWisdom写道:
“最后,我要求MKR持有者做两件事:”
当本周五(东部时间中午12点)投票开始后,请及时审查,并认真考虑投票以尽快激活GSM。至关重要的是,这需要尽快激活;
在周五之前投票赞成目前的hat提议。这是一份已通过的执行提案,它是在上周五前提出的。此提议的MKR越多,Maker协议就越不容易受到攻击。当前的hat提案可以在这里找到:https://vote.makerdao.com/executive-proposal/activate-the-savings-rate-spread-and-the-sai-and-dai-stability-fee-adjustments 129
而攻击方案的提出者Dominik Harz也提醒道:
“目前,由于流动性缺失,人们还无法使用闪电贷进行攻击。但是,如果闪电贷池的流动性变得足够高,攻击是完全可能发生的。而通过GSM引入延迟,可以防止闪电贷攻击。事实上,我更希望有一个特别小组24小时不间断地工作,来解决这个问题……他们所能做的最好的事情,就是在mempool中检测到闪电贷交易,并在攻击者之前尝试一笔交易,以防止攻击。
”
据悉,去年12月Micah Zoltu曾提出了Maker的治理缺陷,之后Maker官方尝试通过新的治理规则(将延迟时间从0增加到24小时)来应对这一问题,但最后的投票结果却是没有通过。
而随着闪电贷方案的出现,新的攻击策略也出现了,因为理论上它可以取消大量MKR代币的要求,以极低的成本(交易费用)完成攻击。
而研究者Dominik Harz等人在《去中心化金融的危机:攻击DeFi》这一论文中,提出了两种攻击方案:
由Micah Zoltu提出的Maker治理缺陷启发的攻击策略,而要在2个区块内秘密执行,这需要攻击者锁定约2750万美元的抵押品;
一种新的攻击策略,允许攻击者在两笔交易中积累Maker抵押品,这只需要预付几美元的gas费;
那这个所谓的治理缺陷是什么呢?
简单说,Maker的治理过程依赖于MKR代币,参与者拥有与其持有的MKR代币数量成比例的投票权。而通过执行投票,参与者可以选择一个执行合约,定义一套管理该系统的规则,也就是说,被选定的合约,是唯一允许操纵资金的实体,而如果是一个恶意的合约被选中,它可能会窃取所有作为抵押品锁定的资金。
而要保护执行投票,有两种防御机制:
治理安全模块(GSM),增加延迟时间(目前依旧为0);
紧急关闭机制,它允许一组持有足够数量MKR的参与者停止系统(此操作需要5万 MKR的恒定池);
讲完防御机制,再来谈攻击大致的思路:
恶意方可以在以下两个选项中进行选择,以积累治理攻击所需的资本。
1、众筹:众筹MKR代币可允许用户将其代币锁定在合约中,并对合约进行编程,以便在达到所需MKR代币数量时,将其所有资金投入恶意执行合约,这将允许多方在此类攻击中进行无需信任的合作,同时保持对其资金的控制,并确保他们参与攻击后得到回报。而众筹攻击存在的最大缺点是,这需要在参与者之间进行协调,而正义的MKR成员可能会警觉。
2、而随着闪电贷的引入,新的攻击方案也浮现了出来,闪电贷的运作方式如下:一方创建一个智能合约,该合约(i)接受贷款,(ii)执行一些操作,(iii)偿还贷款和利息。
有趣的是,如果在步骤(ii)行动执行失败或步骤(iii)贷款的支付无法完成,则EVM会将此贷款视为从未发生。因此,假设Aave等协议中有足够的可用流动性,攻击者可以在步骤(ii)中执行MKR治理攻击,如果成功,则在步骤(iii)中偿还闪电贷和利息。
由于闪电贷不需要抵押品,攻击者的资金锁定成本就大大降低了,假设这些DeFi池中有足够的可用流动性,攻击者甚至不需要锁定任何代币。
另外,研究者还发现,攻击者可能会结合众筹和闪电贷来进行攻击,而在可行性分析部分,他们还提到,目前全网持有MKR代币的账户大约有5000多个,总共涉及的代币数略高于27.2万MKR。
为了不引起注意,攻击者可能会把累计的代币分散在多个账户当中(例如100个,每个账户平均500MKR),这种方法的缺点之一是要求从这100个账户中进行投票,而投票应在尽可能短的时间内进行。
而对一个合约进行投票平均要花费69000 gas,这意味着用投票交易填满一个区块的一半,就可以允许72个合约以上的投票,根据当前以太坊gas价格计算,用交易填满半个区块仅需10美元,这意味着攻击者可以轻松地在两个区块内执行整个攻击。而在第二个区块中,攻击者可以完成对其恶意合约的投票,并执行合约中的攻击,对于其它人而言,这只留下了一个区块的时间(不到15秒)以供反应。
而关于攻击所需流动性的判断,研究者在论文中提到:
“截至2020年2月14日,Aave的流动性池中约有13670 ETH可用,并以每天约219.5 ETH的速度增长。如果我们估计可用流动性池会有类似的持续增长,那么这大概需要1663天才能执行治理攻击,而攻击者不需要拥有任何代币。然而,目前Aave的ETH增长率为每天5.18%,假设这一增长率持续下去,只需要66天,Aave的流动性就足够被攻击者利用。我们还注意到,如果观察到的DEX上的MKR的流动性增加,攻击者可以获得更好的汇率。因此,其需要借用的ETH就可以更少,从而缩短攻击发生的时间。”
在众筹策略下,攻击的利润就可以在出资人之间进行平分,而唯一的成本就是20美元的交易费用,而作为回报,攻击者可夺走MakerDAO当前434873 ETH的抵押品以及1.45亿DAI。
而在流动性池和闪电贷方案下,攻击者需要以0.35%的利率偿还攻击所需闪电贷的378940 ETH贷款,这笔利息相当于1326.29 ETH,此外还涉及两笔交易的gas费用,然后,在攻击结束时,攻击者将拥有约55933(434873-378940)ETH、50000 MKR以及1.45亿 DAI。
而为了防止攻击失败,攻击者可以设计攻击智能合约,以便在无利可图时将其还原,这使得攻击者从成本角度看基本是没有风险的。
此外,鉴于DeFi协议当前存在的无限制可组合性,金融传染的可能性分析就变得尤其重要。因此,研究者认为,假设以上两个缺陷被攻击者利用,就会导致危机蔓延到其它DeFi协议,从而可能引发去中心化金融的危机。
洒脱喜简评:所幸的是,由于当前相关DeFi协议池的流动性不足问题,这场危机并未发生,并且Maker可以通过治理安全模块(GSM)简单化解这场危机。但是,倘若研究者没有和Maker团队进行沟通,而是偷偷藏起来应用,那么这场危机将对DeFi生态以及以太坊造成非常严重的后果。创新固然重要,但对金融要有敬畏之心。最后,希望MKR持有者在投票开启后尽快激活GSM,以真正化解这场危机。
参考资料:
1、https://forum.makerdao.com/t/all-mkr-holders-on-friday-12pm-est-please-vote-for-the-gsm-to-be-activated/1303/15
2、https://arxiv.org/pdf/2002.08099.pdf
3、https://medium.com/@dominik.harz/stealing-all-of-makers-collateral-f940970605b1
声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。
简介:服务于区块链创新者
评论0条