本文探讨了去中心化金融(DeFi)中的经济漏洞,尤其是价格操控导致的经济攻击。通过分析多个案例,文章阐述了如何识别并避免这些经济缺陷,强调了对价格机制的信任可能带来的风险。
DeFi 开发者的生活:
相当令人兴奋的事情!
这篇博客文章为读者提供了一个框架,以识别 DeFi 中致命的
经济缺陷。 我们将拆解一些 DeFi 中最大的经济攻击。我们将从经济角度对它们进行分析,而不是智能合约的角度。最后,我们将得出经济脆弱性如何被发现和避免的结论。
价格操纵是金融系统中的一个经典而持续的问题。在传统金融 (TradFi) 中,市场操纵是非法的,频繁操纵常常会让你入狱。幸运的是,对于我们来说,DeFi 没有警察。为去中心化欢呼吧!
关键思想:每当我们交换资产时,我们是在某个价格下进行的。我们需要考虑这些价格是否反映有效市场。如果我们未能做到这一点,可能会出现危险的套利情况。攻击者可能会利用这种情况,通常以其他人的利益为代价。
你抛售一种目标货币让其价格下跌,然后从这一波动中获利。
每当我们在借出另一种资产时接受抵押品时,实际上是在进行资产的交换。我们依赖于抵押品和借出资产的价格。我们需要考虑这些价格是否可靠。如果它们不可靠,就可能存在潜在的漏洞:
实际上,你提供了稳健的抵押品,借入了有价值的东西,偿还了便宜的东西,并收回了未受影响的抵押品。在这里,借出资产的价值被操纵下调。
在步骤 2 中,贷款是在某个价格下发生的。该价格基于价格固定。这一价格固定是由中央银行人为设定的,并不一定反映有效的外汇市场。在某些条件下,比如脱钩,假设被打破。这就创造了一个漏洞机会。
1992 年,乔治·索罗斯攻击英镑,这就是一个真实生活中的例子。他因此交易获利丰厚。
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 池内未受影响。
因此,这里是漏洞情境:
实际上,你操纵了股份价格下调,然后以低价交换了 USDT 与 LP 股份。同时,支持这些股份的资产的价值保持不变。后来,你将你的 LP 股份兑现为那些有价值的资产。
在步骤 4 中,USDT 与 LP 股份的交换是在某个价格下发生的。该价格基于 Curve 的储备。Curve 的资产储备当然不一定反映有效市场。在攻击者的条件下,Harvest 的假设被违反。这创造了一个漏洞机会。攻击者可以将 USDT 以真实价格出售给更广泛的市场。
让我们进行一些概括。我们看到 这两种情境中的一个共同问题是对价格机制的错误信任。 投机货币攻击中的贷款方隐含地假设货币 pegs 是准确的。类似地,Harvest 假设从 Curve 获取的价格是准确的。
更根本地:在这两种情况下,价格被假设为反映了有效市场。实际上并未如此。攻击者随后利用了这一 错误假设。
在投机性货币攻击中,外汇市场并未有效运作。供需的力量被中央银行人为控制。这些低效导致企业在错误的假设下借贷,认为固定汇率将在可预见的未来内保持不变。在这样做时,他们承担了脱钩的风险。
Harvest 从 Curve.fi 获取的价格由 Curve 中的储备资产决定,而不是整个更广泛市场。这不一定是有效的。在较长的时间尺度上这可能没问题,因为套利者可以买卖使价格重新回到与其他市场一致。不幸的是,由于没有 TWAP,以及以太坊交易的原子性,这些价格在现场很容易被操纵。
在这两种情况下,资产交换都是由攻击者直接触发的。但情况并不总是如此。随着我们研究像 X-Token Hack 这样的场景,我们会看到其他例子。
xSNX (X-Token)↗ 协议遭遇了复杂性和黑客攻击的困扰。自 2020 年 8 月推出以来,它已被攻击三次。最大的一次攻击发生在 2021 年 5 月,损失达 $USD 24MM。
在这次攻击中,攻击者操纵了 Uniswap V2 池中引用的价格。然后攻击者触发协议在这个池中进行交换。因此,协议以非常不利的价格进行交易,使得攻击者获利。
攻击步骤:
使用 Uniswap 交换 ETH 以获得 SNX。请记住,这正是你刚刚压低的那个池。因此,协议以非常糟糕的价格在 Uniswap 上交易。最终结果是,你铸造了过高数量的 xSNX。
相较于 Harvest 漏洞,这个漏洞有额外的复杂层次。最明显的是,攻击者并未自己进行资产交换;他们是导致目标协议这样做。而无论哪一方进行资产交换,存在不受操纵的二级市场都会创造出套利机会。
除此之外,这个漏洞与我们之前讨论的漏洞具有显著的相似特征。攻击者能够导致以非市场价格进行交易。在此过程中,他们能够获得真实价格与交易价格之间的差额。通常,在自动化 DeFi 协议中,每次交换发生在有效价格下都是绝对必要的。否则,攻击者就可以在经济上利用该协议。
随着通证经济系统变得越来越复杂,我们必须更加关注潜在的经济脆弱性。一类套利机会是在低效价格下交换资产,并配对一个催化剂。该催化剂可以是移动价格以更有效的事件,或是一个有效的二级市场。此外,资产的交换不一定由攻击者自己触发。
借贷协议提供了一种最简单的经济利用场景。在一笔贷款中,抵押品和借出资产进行交换。如果抵押品或借出资产的价值可以被操纵,则可能会存在套利机会。
具有更多金融机器人的协议也可能存在经济脆弱性。例如,Harvest finance 因股份定价问题而导致股份价格套利。这个机器还可以涉及额外的代币、铸造和后端交易,例如 X-Token 漏洞中所涉及的情况。
杠杆也可能导致经济脆弱性。在 DeFi 中,杠杆通常是通过抵押借贷实现,并与清算相结合。突发的市场波动可能导致杠杆协议的失败。杠杆协议也通常涉及协议的后端交易。类似于 X-Token 漏洞,如果攻击者能够触发协议在操控的流动性对上进行交易,就有可能存在经济利用的空间。
除了价格操纵,还有许多其它类型的经济攻击可能发生在 DeFi 协议上。这些包括例如治理利用。我们计划在后续文章中涵盖这些内容。
正如我们所看到的,DeFi 为各种新型经济攻击开辟了机会。尽管我们见到过类似于投机性货币攻击的现实世界类比,但很难对更复杂的攻击找到一个类比。随着去中心化经济系统的复杂性不断增长,我们预计这一趋势将继续下去。未来,我们甚至可能会将 DeFi 漏洞视为经济案例研究。
Zellic 专注于保障新兴技术的安全。我们的安全研究人员在最有价值的目标上发现了脆弱性,从财富 500 强到 DeFi 巨头。
开发人员、创始人和投资者信任我们的安全评估,以快速、自信且不带关键脆弱性地运送产品。凭借我们在现实世界的进攻性安全研究背景,我们发现了他人错过的内容。
联系我们↗ 进行一次比其他审计更好的审计。真实的审计,而非形式化的认证。
- 原文链接: zellic.io/blog/breaking-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!