Cointime

扫码下载App
iOS & Android

走进MEV攻击:看黑客如何通过夹层手法获取暴利

个人专家

作者:Immunefi. 编译:Cointime.com QDD

引言

区块链空间中的利用行为变得越来越复杂。

在过去,智能合约开发人员和审计员主要需要考虑如何保护智能合约免受单个交易中的利用。但现在,越来越常见的是看到跨多个交易发生的攻击。

黑客在攻击中愿意冒的个人资金风险也越来越大,以追求巨大的收益。

就在上周,一名黑客冒险投入50 ETH(约96,000美元)对Rodeo Finance进行攻击,结果获得约472 ETH的利润,价值约890,000美元。像这样的案例巩固了“攻击成本”不是有效的安全威慑措施的原则,任何依赖高攻击成本来保护自身安全的协议都应重新考虑其策略。

在本文中,我们将解释黑客如何使用MEV攻击脆弱的协议的常见方式之一。我们还将解释作为漏洞猎手如何使用PoC(概念证明)正确演示MEV攻击向量。

什么是MEV

MEV(矿工可提取价值或最大可提取价值)允许矿工在区块被挖掘之前排除、包含和排序区块中的交易。随着以太坊合并后的结果,这种情况发生了相当大的变化,将这种交易排序角色转移到了网络的验证者。但尽管如此,MEV攻击向量在区块链空间仍然很常见和相关。

攻击者可以通过多种方式使用MEV。我们将演示被称为“夹层攻击”的方法,这是通过对受害者的交换交易进行前奏和后奏来实现的。

前奏(Frontrunning)

前奏是一种技术,攻击者设法在受害者的交易之前提交自己的交易,使得攻击者的交易首先执行。这可以通过增加恶意交易的燃气价格来完成,以便优先于具有较低燃气费率的受害者交易。

后奏(Backrunning)

后奏是一种技术,攻击者将恶意交易放在受害者交易执行后。攻击者可以通过降低恶意交易的燃气价格来实现这一点。这将确保受害者交易优先于后奏交易。

夹层攻击

在夹层攻击场景中,攻击者监视交易池(未决交易的列表)以寻找他们想要利用的目标交易。一旦他们确定目标,他们会提交两个交易——一个在目标交易之前,一个在目标交易之后——就像夹层面包中夹着馅料一样。这个夹层的目的是为了以攻击者的利益操纵目标交易的执行或结果。

使用前面部分提到的方法,攻击者会提交两个燃气费比受害者交易更高和更低的交易,以成功执行夹层攻击。或者,他们可以通过专业的RPC提供者提交交易捆绑,以收取费用保证交易的排序。

这种攻击在DeFi生态系统中可能特别有问题,因为涉及代币、流动性池或去中心化交易的交易非常容易受到交易排序的影响。在这些情况下,攻击者的目标通常是操纵资产价格,从套利机会中获利,或者利用协议中的其他漏洞谋取个人收益。

如何测试MEV攻击

为了创建一个演示MEV攻击的PoC,我们可以使用Hardhat和Forge等工具创建区块链的本地分支。

为了证明这两个测试之间的确定性结果,我们将使用相同的Attacker合约,可以通过此Github gist访问。

在这个演示中,我们故意让受害者在UniswapV2中调用从WETH到USDC的交换交易,最低金额设为0。使得这个交易容易受到夹层攻击的脆弱性是将最小金额设为0,这意味着即使受害者只收到0 USDC或99%滑点,交易也不会回滚。这就是为什么设置最小金额非常关键。

Hardhat

Hardhat是用于智能合约开发的框架,允许开发人员使用JavaScript/TypeScript与智能合约进行交互。在Forge(一种较新的框架)出现之前,大多数白帽黑客通过使用Hardhat分叉区块链来制作他们的PoC。

方便的是,Hardhat已经提供了一种机制来保持交易的最终化,以便我们调用的交易可以在这些交易最终化之前在交易池中聚合。

一步一步的指南:

l   确保你的机器上已经安装了Hardhat(https://github.com/NomicFoundation/hardhat

l   创建一个简单的Hardhat项目

l   mkdir MEV-poc

l   cd MEV-poc

l   yarn add hardhat

l   npx hardhat init

l   将合约更改为Attacker合约。

l   将scripts文件夹中的文件更改为sandwichAttack.js https://gist.github.com/GibranAkbaromiL/05020630475f4f2599f72b47e52c7949#file-sandwichattack-js

l   运行npx hardhat run scripts/sandwichAttack.js

输出:

Forge

Forge是一个智能合约开发工具链,允许你使用Solidity脚本测试、部署和与区块链交互。这使我们能够仅通过测试文件中的交易排序演示MEV攻击。

一步一步的指南:

l   确保你的机器上已经安装了Forge(https://book.getfoundry.sh/getting-started/installation)。

l   创建一个简单的forge项目。

l   mkdir MEV-poc

l   cd MEV-poc

l   forge init

l   将src文件夹中的合约更改为攻击者合约。

l   将test文件夹中的测试文件更改为Sandwich.t.sol。https://gist.github.com/GibranAkbaromiL/05020630475f4f2599f72b47e52c7949#file-sandwich-t-sol

输出:

通过这两个测试案例,我们成功地演示了使用Hardhat和Forge进行MEV夹层攻击。从测试案例的输出中可以看出,攻击者和受害者的初始余额都是1000 WETH,攻击者成功地在受害者交易前奏和后奏,导致攻击者获得约123 WETH的利润。受害者收到的USDC较少。

我们学到了什么

在安全研究中,最关键的部分之一是根据你所发现的潜在漏洞创建一个PoC。为什么这么重要呢?因为仅仅识别潜在的漏洞并不能使攻击有效。我们确认攻击是否有效的唯一方法是通过创建一个PoC,每个已识别的漏洞都必须单独创建一个PoC。

我们只讨论了可能发生MEV的许多攻击向量中的一种,你作为研究人员发现的实际攻击场景可能与这里展示的场景大相径庭。在上面的示例中,我们只涉及了其中最常见的一种向量,即没有滑点保护的交换夹层攻击。如果你想测试自己的技能并尝试复制其他攻击向量,请还参阅:NFT铸造前奏链外言机价格更新前奏和JIT(即时)流动性

这篇文章就到这里了。我们希望你能通过在这里度过的几分钟时间,获得一些新的理解或者巩固现有的知识。继续搜寻漏洞,不要停止学习。每天都有新的利用和漏洞等待我们去发现,对于付出努力的白帽黑客来说,奖励和机会是不会缺乏的。

评论

所有评论

推荐阅读

  • 巴塞尔银行监管机构将银行加密资产规则推迟至2026年

    巴塞尔银行监管委员会(Basel Committeeon Banking Supervision)的主管机构,央行行长和监管负责人小组(GHOS)将银行加密资产新规的合规期限推迟了一年。该项目的最晚日期改为2026年1月1日。

  • 香港比特币ETF昨日总赎回量519.5枚,连续3日呈现净赎回

    根据 SoSo Value 数据,香港比特币现货 ETF 昨日(5 月 13 日)单日净赎回比特币 519.5 枚,比特币持有总量为 3560 枚,单日成交额为 425 万美元,总净资产为 2.19 亿美元。目前香港比特币现货 ETF 连续 3 日呈现净赎回。资产规模方面,华夏 ETF 持有 1690 枚 BTC 排名第一,博时 Hashkey 以及嘉实分别持有 989.93 枚以及 881.18 枚 BTC。另外,香港以太坊现货 ETF 昨日(5 月 13 日)单日净赎回以太坊 2270 枚,以太坊持有总量为 13350 枚,单日总成交额为 72.6 万美元,总净资产约为 3912 万美元。资产规模方面,目前博时 Hashkey ETF 持有 6300 枚 ETH 排名第一,华夏以及嘉实分别持有 4670 枚以及 2390 枚 ETH。注:香港加密 ETF 支持现货申赎机制,净申购是指一定时间段内申购金额和赎回金额之差为正,即买入比卖出多,反之则为净赎回。

  • 荷兰法官将于5月14日就Tornado Cash开发者Alexey Pertsev案作出裁决

    5月14日消息,荷兰法官将于今日就 Tornado Cash 开发者 Alexey Pertsev 的案件做出裁决。31 岁的 Pertsev 被控参与通过加密货币混币器 Tornado Cash 洗钱 12 亿美元。如果 Pertsev 被判有罪,专家预计这将对全球开源社区产生「寒蝉效应」。开发人员可能会担心代码被滥用而不敢编写,投资也可能会减少。如果 Pertsev 被宣判无罪,那么法官将接受他的解释,即 Tornado Cash 核心技术——智能合约——是独立于人为干预而合法运行的。更重要的是,此类平台的管理者不对使用该技术的人负责。此案的裁决结果将改变加密隐私的发展方向。

  • 全同态加密芯片提供商Niobium完成550万美元种子轮融资,Fusion Fund领投

    专注于零信任计算的定制加密芯片提供商Niobium宣布完成550万美元种子轮融资,Fusion Fund领投,Morgan Creek Capital、Rev1 Ventures、Ohio Innovation Fund和Hale Capital参投。据悉Niobium正在构建全同态加密 (FHE) 加速器芯片并将其商业化,新资金将用于其探索FHE在医疗保健、金融、区块链等行业的商业应用,同时还计划在今年第四季度展示该解决方案并启动试点项目。

  • RunPod完成2000万美元种子轮融资,英特尔资本等领投

    分布式GPU云计算AI训练模型项目RunPod宣布完成2000万美元种子轮融资,英特尔资本和戴尔旗下Dell Technologies Capital联合领投,Julien Chaummond、Nat Friedman和Adam Lewis等参投。RunPod利用全球分布式 GPU 云计算服务来训练、部署和扩展 AI 模型,从而减轻开发人员的工作量,根据其官网信息显示,RunPad接受加密货币付款,但提醒用户强烈建议作为风险管理过程,需要设置一个crypto.com帐户并提前进行可能需要的任何KYC检查。

  • 5月14日早间要闻速递

    1.拜登禁止中国投资人支持的加密矿企在美国导弹基地附近拥有土地

  • 全网 BTC 期权未平仓头寸为 184.6 亿美元,ETH 期权未平仓头寸为 90.8 亿美元

    据 Coinglass 数据显示,目前全网 BTC 期权未平仓头寸的名义价值为 184.6 亿美元,ETH 期权未平仓头寸的名义价值为 90.8 亿美元。

  • CFTC与Falcon Labs就注册违规问题达成和解

    美国商品期货交易委员会(CFTC)与加密主要经纪公司Falcon Labs, Ltd.达成和解,解决了Falcon Labs应该注册但未注册的问题。这是CFTC首次针对未注册期货佣金商进行的行动,Falcon Labs被指责不当地促进客户在数字资产交易所的交易。Falcon Labs未承认也未否认CFTC的发现,被罚款超过170万美元。此前,CFTC曾指控Binance及其前CEO,Falcon Labs随后改变了其收集客户信息的方式,并更新了其了解客户政策。CFTC表示,希望通过对Falcon Labs的合作和整改,鼓励其他非法数字资产中介机构向其报告活动。

  • 巴西4个月交易量达到60亿美元

    Kaiko Research表示,比特币 (BTC) 与股票的相关性正在上升,90 天相关性在 3 月份触及 0.01 的多年低点后,上周升至 0.17。根据该公司5 月 13 日的研究报告,比特币与股票的 90 天相关性在 5 月 5 日当周升至 0.17,高于 3 月份的多年低点 0.01。BTC 与风险资产的相关性低于牛市期间的 0.6 高位。 该研究报告还强调了巴西加密货币市场的高交易量。巴西的交易量大幅增加,并超过了美元。2024 年 1月至 5 月初,巴西雷亚尔 (BRL) 交易量达到 60 亿美元,使其成为拉丁美洲最大的加密货币市场和全球第七大法定货币市场。 Kaiko还报告了其他数据。该公司指出,自 3 月份以来,ETH 看跌期权和看涨期权的价格出现了分歧。 Kaiko 表示,随着美国 SEC 于 5 月 23 日拒绝或批准现货以太坊 ETF,这一趋势“可能是波动即将来临的迹象”。