【技术分享】DEFIRANGER:检测DeFi App上的价格操纵攻击

Connor 欧易交易所 2022-11-10 145 0

区块链金融衍生品DeFi的快速发展促进了以太坊生态系统的发展欧易货币合约。同时,对DeFi应用程序(app)的攻击正在增加。但是,现有的智能合约漏洞检测工具无法直接用于检测DeFi攻击,这是因为他们缺乏恢复和理解高级DeFi语义的能力,例如,用户在去中心化交易所(DEX)中交易Token对X和Y。

这项工作专注于检测DeFi App的两种新型攻击,即直接和间接的价格操纵攻击欧易货币合约。前者意味着攻击者通过攻击易受攻击的DeFi App,在同一DEX中执行不需要的交易,从而直接操纵DEX中的Token价格。后者意味着攻击者间接操纵易受攻击的DeFi App(例如借款应用程序)的Token价格。为此,本文提出了一种独立于平台的方式来恢复高级DeFi语义,方法是首先从原始的以太坊交易中构造现金流树,然后将低级语义提升到高级别语义,包括Token交易,流动性采矿(liquidity mining)和流动性取消(liquidity cancel)。最后使用恢复的DeFi语义表达的模式检测价格操纵攻击。

本研究已经实现了一个名为DEFIRANGER的原型,并将其应用于超过3.5亿笔交易欧易货币合约。它成功地在野检测了432次真实世界攻击,确认它们属于四个已知的安全事件和五个0-day事件,研究者已经报告了本文发现,并分配了两个CVE。之后本文进一步进行了攻击分析以揭示漏洞的根本原因、攻击足迹以及攻击的影响。

0 1

Introduction

随着DeFi生态系统的快速发展,安全问题也不断涌现欧易货币合约。目前已报告了很多与DeFi相关的安全性问题,包括前端运行,Pump-and-Dump(P&D)欺诈和Flash Loan攻击。此外,DeFi应用程序中的代码和逻辑漏洞还带来了许多安全事件。

现有的检测工具主要关注代码漏洞,例如重入和整数溢出欧易货币合约。但是由于缺乏恢复和理解高级DeFi语义的能力,它们无法直接用于检测由逻辑漏洞引起的DeFi攻击。在DeFi应用程序中,去中心化交易所和借款应用程序是最受欢迎的两种类型。根据统计,在前十个DeFi应用程序中有五个DEX和四个借款应用程序。Automated Market Maker(AMM)是提供加密货币交换服务的最受欢迎的DEX类型。AMM中的每个池都维护两种或更多种类型的加密货币,并利用价格机制来决定汇率。此外,用户可以通过将抵押品(例如USDC Token)存入借款应用程序来从该应用程序借用加密货币。为了确定用户可以借用多少种加密货币,借出应用程序需要例如从AMM中的池中获取抵押品的当前价格。

展开全文

观察到随着DEX和借款应用程序的普及,出现了两种类型的新攻击,即直接和间接价格操纵攻击欧易货币合约。顾名思义,前者意味着攻击者直接在AMM池中操纵Token价格。通常可以通过攻击易受攻击的DeFi应用程序在同一池中执行不必要的交易来实现。后者意味着攻击者间接操纵易受攻击的DeFi应用程序(例如借款App)的Token价格,其定价机制取决于AMM中实时状态(例如Token的报价和储备)。攻击者可以通过在AMM中进行交易来操纵状态。例如,攻击者可以在AMM池中提高抵押品的价格,该资产在借款之前将价格信息提供给借款应用程序。这样,攻击者可以借用比合法借入者以相同数量的抵押物借入更多的Token。

0 2

Background

A.以太坊账户和交易

以太坊有两种类型的账户,即外部拥有账户(EOA)和智能合约账户欧易货币合约。交易可用于在账户之间发送以太币或调用智能合约中的API。有两种交易类型,即外部交易和内部交易。外部交易由EOA触发,而内部交易由智能合约触发。具体来说,由EOA发送的外部交易可以调用智能合约内部的功能,这将进一步创建内部交易。内部事务可以采取类似的方式来调用智能合约并触发其他内部事务。在本文的以下内容中,未指定“外部”或“内部”的“交易”的使用意味着将外部交易和已触发的内部交易作为一个整体,如下图所示。

B.以太坊加密货币

以太坊有两种类型的加密货币:以太币和ERC20Token欧易货币合约。以太币是以太坊中的本机Token,而ERC20Token是符合ERC20标准的第三方Token。每个帐户,包括EOA和智能合约帐户,都可以拥有Ether和ERC20Token。尽管有许多类型的ERC20Token,但以下两个与本文工作有关。

稳定币:稳定币是保证价格稳定的一类加密货币欧易货币合约。通常,稳定币可以直接/间接支持,也可以通过不同的稳定机制进行干预。流行的稳定币包括USDC或USDT。

流动性提供者(LP)Token:DeFi应用程序可以发行LPToken以激励用户提供更多的流动性(即,将加密货币存入该DeFi应用程序)欧易货币合约。提供流动性的用户称为流动性提供者。流动性提供者可以使用LPToken作为凭证来提取其存款或在那些去中心化交易所中兑换其他加密货币)。

C.DeFi

DeFi应用程序通常由多个智能合约组成,以实现其功能,并在区块链上运行欧易货币合约。一些金融服务,例如借款,交易和投资组合管理,已经迁移到DeFi生态系统中。截至撰写本文时,在以太坊上已经部署了200多个DeFi应用程序。

去中心化交易所(DEX).DEX是一种交易所,用户可以通过与智能合约进行交互来以去中心化的方式交易不同的Token欧易货币合约。与传统的集中式交换相比,DEX具有几个明显的优势,特别是在隐私和资本管理方面。

DEX中有两种模式,包括预订列表(LOB)和自动做市商(AMM)欧易货币合约。使用LOB模式的DEX维护一个链下订单账本以记录用户的出价和要价,即,订单匹配将在链外完成。或者,AMM模式可实现完全分散的交换。做市商可以将两个或多个Token放入具有同等权重或自定义权重的流动性池中。池中加密货币之间的交易率将基于定价机制自动计算。由于其灵活的流动性,AMM成为DEX中最受欢迎的模式。

借款:要借用加密货币,由于以太坊的伪匿名性,要求借方对其他加密货币进行超额抵押以偿还借款欧易货币合约

例如,在MakerDAO中,借入100个DAI要求使用价值150以太网的Token作为抵押欧易货币合约。此外,一旦抵押品的价值降至固定阈值以下,就会导致清算(借款应用程序将出售抵押品)以及将适用于借款人的设计罚款。

Flash Loan:一些DeFi应用提供了一种称为Flash Loan的非抵押借款欧易货币合约。有效的“大笔借款”通常“无偿地”向用户提供了大量资本,而没有任何抵押。借款的安全性得到保证,因为用户需要在单个交易中进行借款并归还借款(随后进行多个内部交易)。否则,借款交易将由借款提供商还原。快速借款使每个人都可以临时拥有大量Token。但是,它也可以被滥用来发起攻击,并且在野外已经观察到许多此类攻击。

投资组合管理:随着越来越多的DeFi应用程序激励客户提供流动性,另一种称为投资组合管理应用程序的应用程序首次亮相以帮助用户(流动性提供者)投资其加密货币欧易货币合约。特别是,他们会自动找到提供最高年收益率(APY)的应用,然后将客户的存款投资到这些应用上。

0 3

Price Manipulation Attacks

本文旨在检测两种价格操纵攻击,包括直接和间接攻击欧易货币合约。顾名思义,前者意味着攻击者直接在AMM的流动性池中操纵Token价格。通常可以通过攻击易受攻击的DeFi应用程序在同一池中执行不必要的交易来实现。后者意味着攻击者间接操纵易受攻击的DeFi应用的Token价格,该漏洞的定价机制取决于AMM中实时状态,例如Token的报价和储备。攻击者可以通过在AMM中进行交易来操纵状态。在下文首先以Uniswap V1协议为例介绍AMM的价格机制,然后详细介绍这两种类型的攻击。

A.Uniswap协议的价格机制

Uniswap的流动资金池由两种加密货币组成欧易货币合约。用户可以按照由Uniswap的定价机制/公式确定的价格来交易Token,如下公式(1)所示:

具体地说,F(x)表示用户可以x的数量与TokenX进行交易的TokenY的数量欧易货币合约。RX和RY分别是TokenX和TokenY在流动资金池中的余额。由于Token对之间的汇率取决于资产池的准备金余额(或准备金),因此有能力耗尽资金池的攻击者可以进行交易以抬高或降低Token的价格,即操纵偏离市场价格的价格。这种行为被称为价格操纵。与受控池进行交互的DeFi应用可能会遭受财务损失。

B.直接价格操纵攻击

某些DeFi应用程序具有在AMM中交易Token的接口欧易货币合约。但是,如果接口没有得到适当的保护,则攻击者可以滥用这些接口来代表易受攻击的DeFi应用程序交易Token,这会影响Token对的汇率。然后,攻击者可以用自己的Token进行另一笔交易以获取利润。由于Token价格是通过在AMM中交易Token对来直接操纵的,因此将这种攻击称为直接价格操纵攻击。

上图显示了一个示例欧易货币合约。假设池具有与Token对X和Y相同的初始储备金(1,000)。在正常交易中,根据公式(1),用户可以用10 X获得9.9Y。攻击者可以使用以下三个步骤来执行直接价格操纵攻击。

步骤一:价格操纵第一阶段,攻击者使用900 X(占池的大部分)来交换TokenY,这破坏了Token对的余额并提高了TokenY在池中的价格欧易货币合约

步骤二:价格操纵第二阶段,攻击者调用易受攻击的DeFi应用程序的公共界面来出售10X欧易货币合约。但是,DeFi应用程序在消耗10 X后只能获得2.75Y。这是因为上一步降低了TokenX的价格。此外,该交易进一步提升了X X的价格。池中TokenY的价格。

步骤三:成本赎回和获利,攻击者通过反向交易出售473 Y,获得905X欧易货币合约。那是因为TokenY的价格已在第二步中提高了。这样,攻击者可以获得5倍的利润。

具体来说,第一步是增加TokenY的价格,并降低TokenX在池中的价格欧易货币合约。根公式(1),这是预期的行为。但是,第二步使易受攻击的DeFi应用程序出售其TokenX,并进一步提高TokenY的价格。这是通过利用易受攻击的DeFi应用程序的公开接口来实现的。结果,攻击者可以通过出售TokenY进行反向交换,并获得更多的X(本示例中为5)。与正常交易(10 X和9.9 Y)相比,受害者DeFi应用损失了7.15 Y(即7.15 = 9.9 – 2.75)。

C.间接价格操纵攻击

一些DeFi应用需要出于商业目的使用Token价格欧易货币合约。例如,需要一个借款应用程序来计算抵押物的价格,以决定借款人有资格借多少枚Token。如果借款应用程序的价格机制是可操纵的,则借款人所借的Token可能会比抵押品的未偿本金余额更多(即抵押不足)。

上图给出了一个例子欧易货币合约。借款应用程序使用从AMM中获取的Token对的实时汇率(通过调用AMM的智能合约公开的API)来确定抵押物的价值。假设TokenX和Y之间的初始汇率为1:1。在正常借款情况下,由于借款应用程序的抵押物比率为150%,因此用户将1.5个TokenX存入贷方应用程序作为抵押,并借入1个TokenY。攻击者可以采取以下步骤来发起间接价格操纵攻击。

步骤一:价格操纵,攻击者用大量的TokenY来交换TokenX,耗尽了池中很大一部分的TokenX,从而为TokenX产生了虚高的价格欧易货币合约。由于借用应用程序的价格机制取决于AMM的实时报价,TokenX的价格也会在借款应用中被夸大。

步骤二:获利,在操纵了TokenX的价格之后,攻击者只需使用TokenX作为抵押品就可以借入TokenY欧易货币合约。特别是,他或她可以以与正常借款情况相同的抵押物(1.5 X)借入2 Y而不是1Y。

步骤三:成本补偿,攻击者只需要通过在AMM池中进行反向交换来赎回价格操纵的成本欧易货币合约。这种攻击的根本原因是,脆弱的借款应用利用AMM的实时报价来决定抵押物的价格。结果,攻击者可以在AMM的交易池中进行交易以影响Token价格(步骤I),然后从借款应用借入抵押不足的借款(步骤II)。之后,攻击者进行反向交易以赎回成本(步骤III)。

请注意,简化了这两种攻击的前面的步骤,以更好地说明欧易货币合约。在实际攻击中,攻击者可能会利用Flash loan借入第一步所需的大量Token。

0 4

Challenges and Solutions

A.挑战

价格操纵攻击源于DeFi应用的逻辑漏洞,这使得执行检测变得不那么容易欧易货币合约。即,检测到此类攻击需要分析多个智能合约之间的交易并了解DeFi应用程序的高级语义。

挑战一:复杂的交互, DeFi应用程序往往具有复杂的业务逻辑,并且由多个相互交互的智能合约组成欧易货币合约。例如,每笔交易在2019年12月之前触发的智能合约调用的平均数量为1.19。由于DeFi繁荣,从2019年12月到2021年4月,该数字变为2.40。此外,多个智能合约之间与DeFi相关的交易过于复杂,无法通过现有工具进行分析。例如,Harvest Hack事件的一项攻击交易涉及1,316个内部交易。下图显示了内部事务图的一部分。显然,分析智能合约之间的复杂交互是一项挑战。

挑战二:语义鸿沟,在以太坊上观察到的原始交易与DeFi应用程序中定义的DeFi语义之间存在语义鸿沟欧易货币合约。如下图所示,地址0x8add7002启动使用Uniswap V2协议交换Token的外部事务。此外部事务进一步触发11个内部事务。在以太坊上只能观察这些(外部或内部)交易的字段值,例如from,to和input。但是无法确定使用Uniswap V2协议在USDC-Ether池中,地址0x8add7002用0.5.ether交换861.95 USDC的高级DeFi操作。这种高级DeFi语义对于检测价格操纵攻击至关重要,因为它们通常涉及Token交易。

B.本文解决方案

本文工作采用以下方法来应对这两个挑战欧易货币合约

方法一:修剪不必要的事务,观察表明,并非所有与DeFi相关的交易触发的内部交易都有助于分析欧易货币合约。这样可以通过修剪那些不必要的挑战来解决第一个挑战。

例如,上图中的事务触发11个内部事务欧易货币合约。其中只有三个与Token交易密切相关。其余的用于辅助操作,例如查找合适的池并检查Token余额。此外,观察到Token转移(包括Token铸造和刻录)是DeFi生态系统中的原始动作。因此通过删除与Token转移无关的交易来简化DeFi相关交易中的交互。

0 5

Methodology

下图显示了工作概述欧易货币合约。特别是,首先提出一个称为DEFIRANGER的工具来检测价格操纵攻击。然后针对检测到的攻击,从多个角度进行进一步分析,例如了解漏洞的根本原因以及对易受攻击的DeFi应用程序的影响。将在本节中详细介绍DEFIRANGER.

A.概述

DEFIRANGER首先收集原始的以太坊交易,然后构造现金流量树欧易货币合约。之后,它恢复DeFi语义,然后使用通过DeFi动作表达的预定义模式来检测价格操纵攻击。

B.数据收集

尽管包括Google的BigQuery以太坊服务在内的一些在线服务提供了查询交易的接口,但它们不足以支持对DEFIRANGER的分析欧易货币合约。例如,执行智能合约时EVM的内部状态不可用。为了满足需求,部署了一个带有修改过的Geth客户端的以太坊完整节点,以收集所需的数据。首先,收集内部事务的元数据,包括from,to和input等。第二,在执行每个内部事务时收集EVM深度。这有助于恢复多个智能合约中不同功能的调用顺序。第三,收集内部事务和事件之间的执行顺序。这可以帮助检索Token转移的顺序。

C.CFT构造

收集以太坊原始交易后,系统将构建现金流量树(简称CFT)欧易货币合约。CFT用于将原始交易转换为Token转移,这为提升DeFi语义奠定了基础。为了更好的理解,以下图为例来说明整个过程,树内有三种类型的节点。

•事务节点:树中同时包含外部和内部事务欧易货币合约。两个(外部或内部)事务之间的有向边意味着子事务是由父事务创建的。例如,外部事务⓪创建内部事务①。因此,图中有一个从⓪到①的有向边。

•事件节点:事件是由智能合约在执行期间出于记录目的发出的欧易货币合约。智能合约可以有选择地发出事件。在图中,事件是内部事务的子节点,因为事件的发出是由内部事务初始化的,以执行智能合约。

•转移节点:转移节点表示存在由外部(或内部)交易启动的Ether或ERC20Token转移欧易货币合约

建立树形结构:第一步是从原始交易(包括内部交易和外部交易)构建一棵树欧易货币合约。这个过程很简单。如果子事务是从父节点创建的,则仅需要将子节点附加到父节点。例如,一个外部事务创建了五个内部事务(从①到④和⑧),因此它们是父节点⓪的子节点。请注意,还将事件节点添加到图中作为创建事件的事务节点的子节点。例如,事件节点∆是节点②的子节点,因为它是由此内部事务创建的。

插入并替换为转移节点:使用上一步中构建的树结构,需要在树中附加转移节点欧易货币合约。这是因为Token转移是恢复DeFi语义的基础。首先,将以太转移节点附加到树上。可以很容易地检索到这样的节点,因为以太坊转移具有事务的非零值字段。将以太坊转移节点插入到相应交易节点的第一个子节点中,例如图中的❶。其次,利用标准事件转移来定位ERC20Token的转移。将转移事件节点替换为ERC20Token转移节点,例如将∆替换为❷。请注意,内部事务②创建了两个转移,一个正在转移Ether(❶),另一个正在转移ERC20Token(❷)。

修剪树枝:统遍历树并修剪所有没有转移节点的分支欧易货币合约。这是因为此类分支无助于提升语义。这可以极大地消除不必要的交互,以解决前文中讨论的挑战。例如,对于实际攻击,它删除了94.23%(1,241)个事务节点。在上图中,从树中删除了事务节点①、⑥和⑦。

D.语义提升

基于CFT,可以进一步恢复DeFi语义,这对于检测价格操纵攻击至关重要欧易货币合约。在这项工作中首先定义DeFi动作,然后介绍从CFT提升DeFi语义的算法。

(1)DeFi动作

在这项工作中集中于以下四个DeFi动作欧易货币合约。如果将来有必要采取更多行动,则可以追回。下表显示了定义。

转移:转移是指将Token(资产)从一个地址(发送方)转移到另一地址(接收方)欧易货币合约。此外,ERC20Token标准定义,当将支出者字段设置为零地址4时,这意味着进行Token挖掘,即将Token直接存入地址(收件人)中。同样,如果收件人设置为零地址,则Token正在燃烧。它们在下表中分别表示为T,Tm和Tb。

流动性挖矿和流动性取消:为了获得更多的流动性,DeFi应用程序发行了LPToken以激励用户提供流动性(存款加密货币),这被称为流动性挖掘(LM)欧易货币合约。此外,流动性提供者可以使用LPToken作为证书赎回加密货币,这被称为流动性取消(LC)。因此,流动性挖掘包括两个部分,即,存放用户的流动性(T)和铸造DeFi应用的LPToken(Tm)。取消流动性包括燃烧LPToken(Tb)和赎回已存入的流动性(T)。

交易:在正常情况下,交易包括两次转移欧易货币合约。因此结合了一对转移,这些转移了不同的资产,并具有作为交易的支点地址(T1.recipient或T2.spender)。进一步将枢轴地址分配给交易的库属性。那是因为交易者通过流动资金池(作为中介人)交换Token。

(2)提升算法

借助定义明确的DeFi动作,提出一种算法来提升CFT的语义欧易货币合约。算法1后订单遍历CFT(LiftLeaves)。对于每个非叶节点,该函数将成对重复地合并其子节点,直到无法合并它们为止(第3-11行)。

该算法遵循两个准则来合并节点MergeLeaves(第6行)欧易货币合约。首先,如果两个相邻的叶子符合上表中定义的DeFi高级操作的条件,则它们将合并为DeFi高级操作。在本文中称为匹配,例如转移节点❸和❹合并到一个T r节点中。

第二,如果在相邻的两片叶子中存在转移链,则其中一个将并入另一个欧易货币合约。例如,两次转移是“ A transfers x Ether to B”和“B transfers x Ether to C”,前者将合并后者。在本文中,这称为合并。例如,流动性挖掘节点中的转移节点⓿和转移节点❶构成转移链,则LM节点合并了转移节点⓿。

此外,如果一棵子树仅由一个叶子组成,则其父节点将被删除,并将其提升(第13-14行)以形成更多相邻的叶子欧易货币合约。最后,它将删除CFT上的冗余事件(第27行)。为了更好地理解,在上图中将它们命名为“提升”和“移除”。例如,交易节点②的子树仅由一个叶子(LM节点)组成,然后算法删除交易节点②并提升其子树。此外,它也去除了冗余事件节点∆。

E.攻击检测

恢复DeFi语义后,通过将恢复的语义与攻击模式(或规则)进行匹配来检测价格操纵攻击欧易货币合约。然后手动确认检测到的交易,下表显示了规则。

注意,反向交易对广泛出现在套利中,这将导致误报欧易货币合约。需要确定套利,然后将其从结果中删除。观察结果是,套利机器人通常只持有一种资产。他们首先购买用于套利的资产,然后再将其卖回原始资产。如下图所示,套利机器人(EC)仅持有以太币。它购买了在交易1中用于套利的资产(USDC),并在交易4中获得了以太币。交易1和交易4构成了一对反向交易。此外,抓住套利机会的交易2和交易3也构成了一对反向交易。上表列出了检测套利的规则。

F.真实示例

在Harvest Hack中使用真实的攻击交易5来显示整个过程欧易货币合约。安全事件使Harvest损失了近2400万美元。DEFIRANGER通过两个步骤将原始交易转换为具有DeFi语义的CFT,即CFT构造和语义提升。在此过程中,它会修剪CFT中的分支以应对挑战I,并使用语义提升来应对挑战II。

06

Evaluation

A.DeFi动作识别

B.价格操纵攻击检测

总而言之,DEFIRANGER不仅检测到四个已知的安全事件,而且还揭示了五个0-day事件欧易货币合约。此外,DEFIRANGER是第一个在以太坊中检测价格操纵攻击的工具。此外,DEFIRANGER在10小时内完成了大规模实验,并且在此过程中消耗的内存可忽略不计。

0 7

Attack Analysis

A.漏洞根本原因分析

在分析每个安全事件后,发现该漏洞的根本原因可分为两类,即,智能合约的API的访问控制不足以及DeFi应用之间的价格依赖性不安全欧易货币合约

(1)访问控制不足

包括Loopring,Dracula,Seal Finance和Metronome在内的四个DeFi应用程序容易受到直接价格操纵攻击欧易货币合约。该漏洞的根本原因是相同的:它们没有正确执行对可能更改AMM储备金的功能的访问控制。

这四个易受攻击的功能是这些应用程序中的sellTokenForLRC,drain,bread和closeAuction欧易货币合约。攻击者可能利用前三个漏洞在AMM的流动性池中出售加密货币。攻击者可以预先操纵池以降低相关加密货币的价格,然后调用这些功能以廉价地出售它们,从而使易受攻击的应用程序遭受损失。之后,攻击者可以通过以相对较低的价格购买这些加密货币来获利。最后一个(closeAuction)将以太币直接存入节拍器的AMM池中。因此,攻击者首先将以太币换成METToken,然后调用closeAuction以增加AMM的以太币储备,从而提高了MET的价格。最终,攻击者将相同量的MET交换为比第一次交换中使用的MET还要多的以太。结果,攻击者可以在每次调用clouseAuction时获利。注意,Dracula在最新版本中实现了对功能耗尽的访问控制。

(2)不安全的价格依赖性

两种类型的易受攻击的应用程序都容易受到间接价格操纵攻击,包括投资组合管理应用程序和借款应用程序欧易货币合约。投资组合管理应用程序利用AMM的实时报价为客户的存款定价,而借款应用程序则依靠AMM的实时储备为客户的抵押品定价。因此,攻击者可以操纵AMM中的实时报价和储备来攻击易受攻击的应用程序。下表显示了将在公式(3),公式(4)和公式(5)中使用的符号。

依赖AMM实时报价:Harvest,Plouto和Value DeFi是投资组合管理应用程序欧易货币合约。它们提供相同的金融服务并共享相似的价格机制,以Harvest为例。

前文描述了Harvest Hack的攻击流程欧易货币合约。关注其对价格的不安全依赖。收到用户的稳定币(例如USDC)后,Harvest会自动将稳定币存入年收益率(APY)最高的DeFi应用中。简而言之,Harvest担任客户经理,可帮助用户(客户)投资其稳定币。

Harvest的投资策略之一是将客户的USDC存入Curve Y池以提供流动性欧易货币合约。在此过程中,客户从Harvest获得fUSDC(Harvest的LPToken)作为证书,Harvest从Y pool获得yCrv(Y池的LPToken)作为证书。公式3描述了Harvest在收到客户的存款(USDC)后应铸造并发送给客户的fUSDCToken数量,以及Harvest在收到并烧毁客户的fUSDC之后应退还给客户的USDC数量。

根据上式(3),fUSDC的铸造量等于存入的USDC份额与fUSDC的总供应量的乘积欧易货币合约。退还的USDC金额等于已消耗的fUSDC份额与锁定总价值(TVL)的乘积。由于Harvest将USDC的一部分投资到Curve,因此TVL由USDC和yCrv的储备组成。为了统一单位,Harvest利用Curve Y池(T oUSDC)提供的实时价格。但是,可以操纵AMM(曲线)的实时价格。因此,如Harvest Hack部分所示,攻击者可以通过操纵Curve Y池来增加退款USDC的数量来获利。使用一段时间内的平均价格可以减轻间接的价格操纵攻击。实际上,Curve具有提供平均Token价格的界面(虚拟价格)。但是,Harvest在其智能合约中未使用此接口。

依赖AMM实时储备:Cheese Bank和WarpFinance是借款应用程序欧易货币合约。他们支持Uniswap V2的LPToken作为抵押。由于Uniswap不提供其LPToken的价格,因此两个借款应用程序对Uniswap的LPToken实施自己的定价机制。

每个Uniswap V2池都维护一对加密货币欧易货币合约。Cheese Bank仅支持有限数量的以太币相关池的LPToken,例如以太币-USDT,以太币-USDC,以太币-CHEESE和以太币-DAI。如公式(4)所示,该费用是池中以太坊储备的价值的两倍,是池中的TVL的值,TVL决定了LPToken的单价。

公式(5)显示了WarpFinance如何为Uniswap V2的LPToken定价欧易货币合约。与Cheese Bank不同,WarpFinance将Uniswap V2池中所有储备的价值作为该池的TVL。然后,将池的TVL除以池的LPToken的总供应量作为LPToken的单价。

这两种价格机制很脆弱,因为它们都依赖于Uniswap V2池(RETH,Rtoken0和Rtoken1)的实时储备欧易货币合约。因此,攻击者可以通过预先操纵相关的Uniswap V2池来提高抵押品的价格。在抵押了“昂贵的抵押品”之后,攻击者可以借出更多有价值的稳定币。他们当然不会赎回抵押品。

B.足迹分析

攻击者已使用类似的步骤来发起攻击欧易货币合约。在下图中总结了攻击足迹。

•准备恶意合约:攻击者使用EOA(即攻击运营商)部署恶意合约欧易货币合约

•攻击易受攻击的应用程序:攻击运营商调用恶意合约来发起攻击欧易货币合约。请注意,攻击者通常利用Flash loan来获取攻击期间需要的大量Token。

•洗钱者:攻击者随后将利润转移到另一个EOA,即Token洗钱者欧易货币合约。Token洗钱者利用混合应用程序(例如tornoda )或跨链应用程序(例如Ren)洗钱。

此外,还会检查恶意合约是否还有其他调用者,或者恶意合约的创建者是否已经部署了其他智能合约欧易货币合约。结果很有趣。除了用于攻击的交易外,几乎没有其他交易。这种干净的攻击策略使跟踪攻击者更具挑战性。

C.影响分析

在发生安全事件后,分析了对易受攻击的DeFi应用市场价值的影响欧易货币合约。如上图所示,使用单价和市场容量(美元)来描述五个易受攻击的应用程序的协议Token(由DeFi应用程序发行的Token)的市场价值。价格从CoinGecko 中检索。

在相关事件发生之日,Harvest and Value的市场价值急剧下跌,怀疑它们是由安全事件引起的欧易货币合约。此外,Loopring,Dracula和Seal Finance的市值在相关事件发生后也有所下降。但是,由于两个主要原因,不能简单地得出结论,它们受相关安全事件的影响。首先,在相关事件发生之前,市场价值正在下降。其次,LRC事件,DRC事件和SEAL事件为0-day。缺乏可见性限制了他们的后续影响。

0 8

Discussion

在本节中,将讨论DEFIRANGER的局限性和未来的改进欧易货币合约

0 9

Conclusion

这项工作旨在检测DeFi应用程序上的两种价格操纵攻击欧易货币合约。为此,提出了一种从原始交易中自动恢复DeFi语义的新方法。然后,基于恢复的DeFi语义检测攻击,在名为DEFIRANGER的工具中实现了本文方法。评估结果表明,工具可以准确地恢复DeFi语义,并有效地检测DeFi攻击。总的来说,它揭示了432种实际的真实世界攻击,其中涉及4个已知的安全事件和5个0-day安全事件。

- 结尾 -

【技术分享】EVMPatch:自动修补以太坊智能合约的工具

【技术分享】苹果无线生态系统安全性指南

【技术分享】短期伪造舆论攻击:Twitter虚假趋势实例研究

戳“阅读原文”查看更多内容

评论