LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 闪电贷对DeFi 安全性的影响,为什么闪电攻击将成为新常态

闪电贷对DeFi 安全性的影响,为什么闪电攻击将成为新常态

2020-06-27 Dew_x 来源:区块链网络

【蜻蜓资本研究】

短期贷款被人们关注,是今年2月有两个黑客使用闪电贷款攻击保证金交易协议bZx,首先是 35 万美元的攻击,然后是60万美元的山寨攻击。

总之,这些攻击是巨大的。 在每次攻击中,攻击者只用一分钟立即借到了数十万美元的ETH,通过一系列易受攻击的链上协议将其程序化化,盗取了数十万美元的资产,然后再偿还了他们的大量ETH贷款。所有这一切都是瞬间发生的,也就是说,在以太坊交易中发生的

我们不知道这些攻击者是谁或他们来自哪里。对两者一无所知,数十万美元却消失了,没有留下任何痕迹

在这些攻击之后,我一直在思考大量有关快速借贷及其对DeFi安全性的影响。我认为这值得进行思考。

简而言之:我认为闪电贷款是一个巨大的安全威胁。但是,快速贷款并没有消失,我们需要仔细考虑它们对未来DeFi安全的影响。

什么是闪电贷款?

闪电贷款的概念最初由智能合约的创建者Max Wolff 在2018年提出。Marble推销自己为“智能合约银行”,其产品是一种简单而又出色的DeFi创新:通过零风险贷款智能合约。

贷款如何具有零风险?

传统的贷方承担两种形式的风险。首先是违约风险:如果借款人的钱用光了,那显然很糟糕。但是,贷方面临的第二个风险是流动性不足风险:如果贷方在错误的时间借出了太多资产,或者没有及时偿还贷款,贷方会缺乏流动性,无法履行自己的义务。

短期贷款减轻了这两种风险。闪电贷款基本上是这样工作的:我将为您提供一笔您想要的单笔交易金额的钱。但是,在这笔交易结束之前,您必须至少付给我我借给您的钱。如果您无法执行此操作,我会自动回滚您的交易!(是的,智能合约可以做到这一点。)

简而言之,您的快速贷款是原子性的:如果您不偿还贷款,那么整个事情就会恢复原状,就好像贷款从未发生过一样。

像这样的东西只能存在于区块链上。例如,您无法在BitMEX上进行快速贷款。这是因为智能合约平台一次只处理一次交易,因此交易中发生的所有事情都作为批处理操作串行执行。您可以将其视为事务执行期间的“冻结时间”。另一方面,集中式交易所可能会出现竞争状况,以致您的订单无法履行。在区块链上,您可以确保所有代码都在下一行之后运行。

因此,让我们考虑一下这里的经济学。传统的放款人有两方面的补偿:他们承担的风险(违约风险和流动性风险),以及他们借出的资本的机会成本(例如,如果我可以在其他地方获得2%的利息) ,借款人必须向我支付高于无风险2%的费用)。

短期贷款是不同的。即时贷款实际上没有风险,也没有机会成本!这是因为借款人在他们的紧急贷款期间“冻结了时间”,因此在其他人的眼中,该系统的资本从未处于危险之中,也不会受到负担,因此它无法在其他地方赚取利息(即,它没有机会成本)。

从某种意义上讲,这意味着成为闪电贷款机构没有成本。这是非常违反直觉的。那么,均衡状态下的快速贷款成本应该是多少?

基本上,快速贷款应该是免费的。或更恰当的做法是,支付足够少的费用,以分摊包括额外3行代码以使资产具有闪存吸引力的成本。

闪存贷款不能收取利息传统意义上的,因为贷款是活动的零时间(APR任何* 0 = 0)。当然,如果闪速贷方收取更高的利率,它们很快就会被其他利率较低的闪速借贷池所竞争。

瞬间贷款使资本成为真正的商品。竞逐低谷不可避免地导致零费用或微不足道的象征性费用。dYdX当前收取Flash借贷费用0。另一方面,AAVE收取速动贷款本金的0.09%。我怀疑这是不可持续的,确实,他们社区中的一些人呼吁将费用削减至0。(请注意,我们看到的攻击都没有使用AAVE作为其闪存借贷池。)

闪电贷款有什么用?

短期贷款最初是在它们主要用于套利的前提下销售的。Marble公告声称:

“通过快速借贷,交易者可以从银行借款,在一个DEX上购买代币,以更高的价格在另一DEX上出售代币,然后偿还银行,并在一次交易中全部套利。”

的确如此,就数量而言,到目前为止,我们已经看到的大多数闪电贷款都已用于这种套利。

但是交易量很小。自成立以来,AAVE的借贷额仅为1万美元。与DeFi的套利和清算市场相比,这是微不足道的。

这是因为大多数套利活动是由运行复杂机器人的竞争套利人执行的。他们从事Gas,拍卖,并使用gas代币来优化交易费用。这是一个竞争激烈的市场-这些家伙很高兴在资产负债表上保留一些代币以优化其收益。

另一方面,借入AAVE大约需要花费8万加元的Gas,并收取本金的0.09%,这是支付套利交易者以微薄利润竞争的高昂价格。实际上,在大多数AAVE套利中,借款人最终向借贷池支付的费用比带回家的要多。

从长远来看,套利者不太可能使用紧急贷款,除非在特殊情况下。

但是,快速借贷在DeFi中还有其他更引人注目的用例。一个例子是为贷款再融资。例如,假设我有一个Maker Vault(CDP),其中锁定了100美元的ETH,我从中借了40 DAI的贷款,因此我的净头寸为60美元,减去我的债务。现在说我想重新融资以提高利率。通常,我需要回购40 DAI才能关闭CDP,这需要一些前期资金。取而代之的是,我可以借40美元的DAI,结清100美元的CDP,将60美元的未锁定ETH存入Compound,通过Uniswap将其余的40美元的ETH转换回DAI,并用来偿还Flash贷款。繁荣,零资本再融资。

太神奇了!这是金钱乐高玩具在工作中的一个很好的例子。1x.**实际上建立了一个保证金交易汇总,该集合使用快速贷款使这种事情自动化。但是bZx攻击者向我们展示了它们不仅是娱乐和游戏,还可以像速贷一样酷。

闪电攻击对安全性有重大影响

我越来越多地相信,闪电贷款真正释放的是闪电攻击 -由闪电贷款资助的资本密集型攻击。在的bZx黑客攻击中,我们第一次看到了这一点,我怀疑那只是开始

闪电贷款对攻击者特别有吸引力的主要原因有两个。

许多攻击需要大量的前期资金(例如oracle操作攻击)。如果您以1,000万美元的ETH获得正的ROI,那可能不是套利。

短期贷款可以最大程度地减少攻击者的留痕。如果我有一个如何用1000万美元的以太币操纵甲骨文的想法,即使我拥有那么多的以太币,我可能也不想用自己的资金来冒险。我的以太坊会受到污染,交易所可能会拒绝我的存款,这将很难洗钱。有风险!但是,如果我以一千万美元的价格贷款,那么谁在乎呢?都有好处。这并不是因为dYdX的抵押池会被污染,因为那是我贷款的来源-dYdX的污染只是在消失。

您可能不喜欢交易所黑名单已成为当今区块链安全模型的一部分。这是非常柔软和集中的。但这是一个重要的现实,通知了这些攻击背后的演算。

比特币白皮书中,中本聪(Satoshi)宣称,比特币不受攻击是安全的,因为:

“ [攻击者]应该发现,遵守规则[...]比破坏自己财富的制度和有效性更有利可图。”

有了快速贷款,攻击者不再需要在游戏中拥有任何保护。闪购贷款从根本上改变了攻击者的风险。

请记住,快速贷款可以累积!受制于手续费限额,您可以在一次交易中(实际上超过5000万美元)汇总每个快速可借贷池,并将所有资本迅猛地降低到一个易受打击的合同中。这是一个耗资5000万美元的攻城锤,现在只要有人赚钱,任何人都可以猛击任何链上的彩陶罐。太恐怖了

如果DeFi堆栈像它声称的那样安全,那么所有这些都不应该成为问题,哪种协议针对富鲸不是安全的?您可能会说,没有考虑到这仅仅是过失。

但是我们承认以太坊本身可以遭受不到51 万美元/小时 **的51%攻击。那不是很多钱!如果以太坊自己的安全模型基本上是围绕资本约束构建的,为什么我们如此迅速地嘲笑可以成功以1000万美元被攻击的DeFi应用程序?

那么如何减轻闪电攻击呢?

说我是DeFi协议,我想避免受到闪存攻击。自然问题可能是-我可以检测与我互动的用户是否正在使用快速借贷?

简单的答案是:不。

EVM不允许您从任何其他合同中读取存储。因此,如果您想知道另一个合同中发生了什么,它就是告诉您的。因此,如果您想知道是否正在使用紧急贷款合同,则必须直接询问合同。如今,许多贷款协议都无法响应此类查询(而且一般来说,也没有办法强制执行快速贷方)。另外,即使您尝试检查,使用代理合同或通过跨Flash贷款池进行链接也很容易将任何此类查询误导。一般来说,根本无法判断储户是否正在使用速贷。

一秒钟。如果有人用一千万美元敲开您合同的前门,就无法判断这是否是他们自己的钱。

那么,我们有什么真正的选择可以防止闪存攻击?我们可以考虑几种方法。

说服闪存借贷池停止提供此服务。

认真地说,试图让贷款池停止提供快速贷款就像试图阻止噪声污染一样,提供快速贷款符合每个协议的个人利益,并且出于合理的原因,他们的用户希望使用此功能。因此,我们可以放心地将其消除。短期贷款不会消失。

强制关键事务跨越两个区块。

请记住,快速贷款使您可以在单笔 交易的范围内借入资本。如果您需要跨两个区块进行资本密集型交易,那么用户必须拿出至少两个区块的贷款,以克服任何闪存攻击。(注意:要使其正常工作,用户必须将其价值锁定在两个区块之间,以防止他们偿还贷款。如果您没有正确地考虑设计,则用户可能会在两个区块中遭受攻击。 )

显然,这是在陡峭的用户体验权衡下进行的:这意味着事务将不再是同步的。对于用户而言,它很烂,这是一个很难忍受的子弹。

许多开发人员对异步智能合约操作感到懊恼,例如与第2层进行交互或以太坊2.0中的跨分片通信。具有讽刺意味的是,异步实际上使这些系统免受闪存攻击,因为您不能在单个原子事务中遍历分片或第2层。这意味着不会对ETH 2.0分片或第二层上的DEX进行闪存攻击。

要求提供链上证明,以证明用户的先前余额并未因快速贷款而改变。

如果可以通过某种方法来检测用户的实际余额是多少,即在他们借出贷款之前他们的余额是多少,我们就可以战胜Flash攻击。

无法在EVM中本地执行此操作,但是您可以对其进行修改。这就是您要做的事情:在用户与您的协议进行交互之前,您需要提供Merkle证明,他们有足够的余额来抵押当前使用的资本。您需要在每个区块中跟踪每个用户的情况。

这类型的作品。当然,这存在一些棘手的问题:在链上验证这些链上证明非常昂贵,并且没有任何用户在他们的正确想法中愿意生成它们并为整件事支付汽手续费。另外,出于完全正当的理由,用户可能在同一区块中更早更改了余额。因此,尽管从理论上讲它有一些优点,但这不是一个实际的解决方案。

我提出的这三个解决方案中没有一个特别有希望。我坚信,没有针对闪存攻击的良好通用防御措施。

但是有两个特定的应用程序确实具有针对Flash攻击的特定缓解措施:基于市场的价格预言和治理令牌。

对于Uniswap或OasisDEX这样的基于市场的价格甲骨文,闪存攻击使其成为了可能,因此您在任何情况下都不能使用当前的中间市场价格作为甲骨文。攻击者在一次交易中移动中间市场价格并制造闪存崩溃,从而破坏了价格预言,这是孩子的玩法。

最好的解决方案是通过TWAP或VWAP使用最后X个块的加权平均值。Uniswap v2将在本地提供此功能。还有Polaris,一种通用的方法,可为DeFi协议提供移动平均值。具有讽刺意味的是,这款北极星也是由最初创造者马克斯·沃尔夫(Max Wolff)建造的。

链上治理通常由治理令牌持有者之间的硬币加权投票决定。但是,如果这些管理令牌位于快速借贷池中,那么任何攻击者都可以从他们想要的任何结果中挖出一大堆硬币和砸钱。

当然,大多数治理协议都要求在投票期间锁定这些代币,以击败闪存攻击。但是某些形式的投票不需要这样做,例如碳票或Maker的执行合同。如今,随着闪存攻击的出现,这些投票形式应该完全被破坏了。

理想情况下,如果根本不可以借用管理令牌,那就太好了。但这不取决于您作为发行人,而是取决于市场。因此,所有治理操作都应要求锁定以防止闪存攻击。Compound的新COMP令牌通过对所有协议投票进行时间加权来进一步发展,甚至削弱了针对其治理令牌的定期贷款攻击。

更广泛地说,所有治理令牌必须具有时间锁。时间锁要求所有治理决策必须等待一段时间才能生效(对于化合物的时间锁,这是2天)。这使系统可以从任何意外的管理攻击中恢复。尽管MKR尚未大量借用,但MakerDAO最近因易受此类攻击而被号召。它最近实施了24小时时间锁定,以关闭此攻击媒介。

从长远来看,这一切意味着什么?

我相信bZx攻击改变了一切。

这将不是最后的闪存攻击。第二次bZx攻击是第一个模仿者,我怀疑它将在未来几个月内掀起一波攻击。现在,来自世界最偏远地区的成千上万的聪明少年正在嘲笑所有这些DeFi乐高积木,并在显微镜下对其进行检查,试图发现他们是否有办法进行闪光攻击。如果他们设法利用漏洞,那么他们也可以赚几十万美元,这在世界上大多数地区都是可以改变生活的。

有人声称闪存攻击不会改变任何东西,因为如果攻击者的资本充足,这些攻击总是可能的。这既正确又令人难以置信。大多数鲸鱼都不知道如何**智能合约,大多数聪明的攻击者也没有数百万美元的资产。现在,任何人都可以租一枚价值5000万美元的破坏球。这改变了从现在开始需要建造每座建筑物的方式

在bZx黑客攻击之后,被Flash攻击击中就像在DAO黑客攻击后被重新进入一样令人尴尬

最后,这些事件使我想到了加密技术中的一个古老概念:矿工可提取的价值。矿工可提取的价值是矿工可以从区块链系统中提取的总价值。这包括大宗的奖励和费用,但也包括更多价值提取形式,例如对交易进行重新排序或将流氓交易插入大宗交易。

从根本上讲,您应该将所有这些闪存攻击都视为在内存池中赚钱的单笔交易。例如,第二次bZx攻击在一次交易中产生了64.5万美元的ETH利润。如果您是矿工,并且即将开始开采新区块,请想象一下查看先前区块的交易并对自己说:“等等,那是什么?当最后一个区块中包含$ 645K的利润时,我为什么要尝试以$ 500的价格开采一个新区块?”

相反,延长链条,它会在你的兴趣回去,并试图改写历史,使得您是 闪存,而不是攻击者。想想看:诚实地开采以太坊区块,仅此一项交易就价值超过4个小时!

这与拥有一个包含正常块奖励的1000倍的特殊超级块是同构的-正如您所期望的那样,这种超级块的合理结果应该是矿工争相孤立链的尖端并窃取该块的矿工为自己。

在平衡状态下,所有闪电攻击最终应由矿工提取。(请注意,他们还应该最终窃取所有链上套利和清算。)具有讽刺意味的是,这将阻止闪存攻击,因为攻击者无法利用这些漏洞的发现来获利。也许最终,矿工将开始通过私人渠道征集攻击代码,并向潜在的攻击者支付发现者的费用。从技术上讲,这可以使用零知识证明不信任地完成。

但这一切现在都是科幻小说。矿工显然今天没有这样做。

他们为什么不呢?

大量原因。很难,需要大量工作,EVM很难模拟,很冒险,会有一些漏洞会导致资金损失或孤立的区块,这会引起轩然大波,流氓采矿池可能会遇到PR危机,被冠以“以太坊的敌人”的烙印。目前,矿工在业务,研发和孤立区块上的损失要比尝试这样做所获得的收益更多。

今天是真的。

这不会永远是真的。

这为以太坊提供了另一个动力,以加速并过渡到以太坊2.0。以太坊上的DeFi总是很有趣,但绝对不可撤销。DeFi在PoW链上不稳定,因为所有高价值交易都会受到矿工的重新分配(也称为时间匪徒攻击)。

为了使这些系统能够大规模运行,您需要确定性-矿工无法重写已确认的区块。这将防止以前的块中的事务被重新使用。另外,如果DeFi协议存在于单独的以太坊2.0分片上,它们将不会受到闪存攻击。

据我估计,闪存攻击给我们带来了一个小而有用的提醒,那就是现在还处于初期。我们仍然没有可持续的架构来构建未来的金融系统。

目前,快速贷款将是新的常态。也许从长远来看,以太坊上的所有资产都可用于紧急贷款:交易所持有的所有抵押品,Uniswap中的所有抵押品,也许是ERC-20本身。

谁知道呢—只要写几行代码而已

https://medum .com/dragonfly-research/flash-loans-why-flash-attacks-will-be-the-new-normal-5144e23ac75a

—-

编译者/作者:Dew_x

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...