传统金融与去中心化金融的相遇:解读去中心化金融攻击的经济学

  • zellic
  • 发布于 2022-08-10 12:34
  • 阅读 7

本文探讨了去中心化金融(DeFi)中的经济漏洞,尤其是价格操控导致的经济攻击。通过分析多个案例,文章阐述了如何识别并避免这些经济缺陷,强调了对价格机制的信任可能带来的风险。

介绍

DeFi 开发者的生活:

  • 说声 gm。
  • 刷一下加密 Twitter,并对熊市表示沮丧。
  • 架构新的复杂的金融和治理系统。他们的稳健性至关重要,单个错误可能导致数千万或数亿美元的损失。

相当令人兴奋的事情!

这篇博客文章为读者提供了一个框架,以识别 DeFi 中致命的
经济缺陷。 我们将拆解一些 DeFi 中最大的经济攻击。我们将从经济角度对它们进行分析,而不是智能合约的角度。最后,我们将得出经济脆弱性如何被发现和避免的结论。

价格操纵,无效市场

价格操纵是金融系统中的一个经典而持续的问题。在传统金融 (TradFi) 中,市场操纵是非法的,频繁操纵常常会让你入狱。幸运的是,对于我们来说,DeFi 没有警察。为去中心化欢呼吧!

关键思想:每当我们交换资产时,我们是在某个价格下进行的。我们需要考虑这些价格是否反映有效市场。如果我们未能做到这一点,可能会出现危险的套利情况。攻击者可能会利用这种情况,通常以其他人的利益为代价。

示例 1 (TradFi):投机性货币攻击

你抛售一种目标货币让其价格下跌,然后从这一波动中获利。

每当我们在借出另一种资产时接受抵押品时,实际上是在进行资产的交换。我们依赖于抵押品和借出资产的价格。我们需要考虑这些价格是否可靠。如果它们不可靠,就可能存在潜在的漏洞:

  1. [设定] 逐步积累目标货币(但不要从其中央银行购买)。
  2. [设定] 卖空该货币(借入大量然后卖出)。在借入时,贷款人可能要求提供抵押品。用一种稳定且未受影响的货币作为抵押品。接收目标货币并立即按其当前、未被操纵的价格进行销售。
  3. [触发] 在市场上倾倒你手中大量的目标货币。目标货币的中央银行将会耗尽现金。然后,他们无法负担购买自己的货币以支撑其价格。因此,货币脱钩,触发销售狂潮,导致价格下跌。
  4. [关闭] 你在卖空这种货币,从而获利。这涉及用目标货币偿还贷款。现在目标货币的价格远低于借入时的价格。收回你的未受影响的抵押品。

实际上,你提供了稳健的抵押品,借入了有价值的东西,偿还了便宜的东西,并收回了未受影响的抵押品。在这里,借出资产的价值被操纵下调。

在步骤 2 中,贷款是在某个价格下发生的。该价格基于价格固定。这一价格固定是由中央银行人为设定的,并不一定反映有效的外汇市场。在某些条件下,比如脱钩,假设被打破。这就创造了一个漏洞机会。

1992 年,乔治·索罗斯攻击英镑,这就是一个真实生活中的例子。他因此交易获利丰厚。

示例 2 (DeFi):Harvest Finance 漏洞

DeFi 有可能重复在传统金融 (TradFi) 中,银行家和金融家所犯的许多相同错误。在这里,你创建了一个与股权定价相关的套利情境。

Harvest Finance 是一个允许用户存入和提取资金(例如,USDT)以换取 LP 股份代币的协议。这些 LP 代币使用户有权获得 LP 池的一部分。USDT 和 LP 代币之间的这种交换是在某个价格下进行的。如果这个价格没有反映 USDT 或 LP 池内资产的真实价值,就存在潜在的脆弱性。

2020 年 10 月,Harvest Finance↗ 被黑客攻击,损失为 $USD\ 33.8MM↗。在 Harvest 中,LP 股份在存款时是固定的。LP 始终有权获得以存款时计算的池份额,即使价格后来发生变化。因此,如果 LP 股份的价格在质押后发生变化,用户可以提取超出价值锁定的过大部分。

Harvest 使用了来自 Curve.fi↗ 的参考价格。通过影响 Curve 中的储备金额,可以操纵这一 Curve 特定的价格馈送。这反过来又影响了 Harvest 中 LP 股份的计算。如果我们在 Curve 上抬高 USDT 的价格,那么 Harvest 将过高估计 USDT,低估其 LP 股份。而与此同时,实际的资产在 LP 池内未受影响。

因此,这里是漏洞情境:

  1. [设定] 使用 闪电贷↗ 来积攒大量的 USDC 和 USDT。
  2. [设定] 在 Curve 上提高 USDT 的价格。通过在 Curve 上将 USDC 兑换为 USDT 来做到这一点。现在 Harvest 认为 USDT 更有价值。因此,相对于 USDT,Harvest 认为其 LP 股份价格较低。
  3. [设定] 在 Harvest 上存入 USDT。你的 LP 股份根据被操纵的价格进行计算和锁定。你将获得超大的 LP 股份。这是因为 Harvest 过高估计了你的 USDT,同时低估了其 LP 股份。
  4. [触发] 在 Curve 上,将 USDT 的价格恢复到正常。通过将 USDT 兑回 USDC 来做到这一点。这也使 Harvest 停止低估其 LP 股份。
  5. [关闭] 在 Harvest 上提取你超大的 LP 股份。你将获得比你存入的更多。
  6. 清洗与重复!

实际上,你操纵了股份价格下调,然后以低价交换了 USDT 与 LP 股份。同时,支持这些股份的资产的价值保持不变。后来,你将你的 LP 股份兑现为那些有价值的资产。

在步骤 4 中,USDT 与 LP 股份的交换是在某个价格下发生的。该价格基于 Curve 的储备。Curve 的资产储备当然不一定反映有效市场。在攻击者的条件下,Harvest 的假设被违反。这创造了一个漏洞机会。攻击者可以将 USDT 以真实价格出售给更广泛的市场。

我们目前学到了什么?

让我们进行一些概括。我们看到 这两种情境中的一个共同问题是对价格机制的错误信任。 投机货币攻击中的贷款方隐含地假设货币 pegs 是准确的。类似地,Harvest 假设从 Curve 获取的价格是准确的。

更根本地:在这两种情况下,价格被假设为反映了有效市场。实际上并未如此。攻击者随后利用了这一 错误假设。

在投机性货币攻击中,外汇市场并未有效运作。供需的力量被中央银行人为控制。这些低效导致企业在错误的假设下借贷,认为固定汇率将在可预见的未来内保持不变。在这样做时,他们承担了脱钩的风险。

Harvest 从 Curve.fi 获取的价格由 Curve 中的储备资产决定,而不是整个更广泛市场。这不一定是有效的。在较长的时间尺度上这可能没问题,因为套利者可以买卖使价格重新回到与其他市场一致。不幸的是,由于没有 TWAP,以及以太坊交易的原子性,这些价格在现场很容易被操纵。

在这两种情况下,资产交换都是由攻击者直接触发的。但情况并不总是如此。随着我们研究像 X-Token Hack 这样的场景,我们会看到其他例子。

示例 3 (DeFi):X-Token 漏洞

xSNX (X-Token)↗ 协议遭遇了复杂性和黑客攻击的困扰。自 2020 年 8 月推出以来,它已被攻击三次。最大的一次攻击发生在 2021 年 5 月,损失达 $USD 24MM。

在这次攻击中,攻击者操纵了 Uniswap V2 池中引用的价格。然后攻击者触发协议在这个池中进行交换。因此,协议以非常不利的价格进行交易,使得攻击者获利。

攻击步骤:

  1. (设定) 积累 SNX。我们可以通过闪电借贷 ETH,然后在 Aave 和 Sushiswap 的借贷中将其交换为 SNX 来实现。此外,还要积累一些资金,这些资金我们稍后将用于铸造 xSNX。
  2. (设定) 使用 SNX 使 SNX-ETH Uniswap V2 池的价格崩溃。(与 Curve 相同的思路)
  3. (触发) 铸造大量 xSNX。最终,协议被编程为

使用 Uniswap 交换 ETH 以获得 SNX。请记住,这正是你刚刚压低的那个池。因此,协议以非常糟糕的价格在 Uniswap 上交易。最终结果是,你铸造了过高数量的 xSNX。

  1. (退出) 卖出 xSNX 并偿还所有贷款。但等等,我们刚刚在 Uniswap 上崩溃了 SNX——我们究竟该把这些东西倾倒到哪里?碰巧有另一个 Balancer 池。该 Balancer 池不受 Uniswap 池中流动性下滑的影响。将你的 xSNX 倾倒在那里。

相较于 Harvest 漏洞,这个漏洞有额外的复杂层次。最明显的是,攻击者并未自己进行资产交换;他们是导致目标协议这样做。而无论哪一方进行资产交换,存在不受操纵的二级市场都会创造出套利机会。

除此之外,这个漏洞与我们之前讨论的漏洞具有显著的相似特征。攻击者能够导致以非市场价格进行交易。在此过程中,他们能够获得真实价格与交易价格之间的差额。通常,在自动化 DeFi 协议中,每次交换发生在有效价格下都是绝对必要的。否则,攻击者就可以在经济上利用该协议。

结论

随着通证经济系统变得越来越复杂,我们必须更加关注潜在的经济脆弱性。一类套利机会是在低效价格下交换资产,并配对一个催化剂。该催化剂可以是移动价格以更有效的事件,或是一个有效的二级市场。此外,资产的交换不一定由攻击者自己触发。

借贷协议提供了一种最简单的经济利用场景。在一笔贷款中,抵押品和借出资产进行交换。如果抵押品或借出资产的价值可以被操纵,则可能会存在套利机会。

具有更多金融机器人的协议也可能存在经济脆弱性。例如,Harvest finance 因股份定价问题而导致股份价格套利。这个机器还可以涉及额外的代币、铸造和后端交易,例如 X-Token 漏洞中所涉及的情况。

杠杆也可能导致经济脆弱性。在 DeFi 中,杠杆通常是通过抵押借贷实现,并与清算相结合。突发的市场波动可能导致杠杆协议的失败。杠杆协议也通常涉及协议的后端交易。类似于 X-Token 漏洞,如果攻击者能够触发协议在操控的流动性对上进行交易,就有可能存在经济利用的空间。

除了价格操纵,还有许多其它类型的经济攻击可能发生在 DeFi 协议上。这些包括例如治理利用。我们计划在后续文章中涵盖这些内容。

正如我们所看到的,DeFi 为各种新型经济攻击开辟了机会。尽管我们见到过类似于投机性货币攻击的现实世界类比,但很难对更复杂的攻击找到一个类比。随着去中心化经济系统的复杂性不断增长,我们预计这一趋势将继续下去。未来,我们甚至可能会将 DeFi 漏洞视为经济案例研究。

关于我们

Zellic 专注于保障新兴技术的安全。我们的安全研究人员在最有价值的目标上发现了脆弱性,从财富 500 强到 DeFi 巨头。

开发人员、创始人和投资者信任我们的安全评估,以快速、自信且不带关键脆弱性地运送产品。凭借我们在现实世界的进攻性安全研究背景,我们发现了他人错过的内容。

联系我们↗ 进行一次比其他审计更好的审计。真实的审计,而非形式化的认证。

  • 原文链接: zellic.io/blog/breaking-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
zellic
zellic
Security reviews and research that keep winners winning. https://www.zellic.io/