当前位置:首页 > 知识 >

智能合约安全威胁:三明治攻击

智能合约系统的漏洞被认为是网络安全问题中最频繁出现和威胁最大的,但实际情况并非如此。例如,“外溢”、“外接”等智能合约网络安全问题并不是最常见和最危险的问题。

那么,什么样的安全威胁可以被称为前十大智能合约安全威胁呢?SharkTeam合同安全性系列课程中的第七课详细探讨了三明治攻击,它就是其中的一种。

一、什么是三明治攻击?

三明治攻击是一种提前交易的攻击,主要针对Defi协议和服务。攻击者会在网络上寻找等待处理的交易,如以太坊,并在交易前和交易后下单。攻击者将同时进行外置和内置交易,将原本等待处理的交易夹在中间。

具体可参考以下操作步骤:

(1)攻击者提前了解受害者的交易意图,以10个TokenA交换100个TokenB,同时提高TokenB的价格

(2)受害者不经意间以5个TokenA交换了40个TokenB(原本应该是可用5个TokenA换取50个TokenB)

(3)攻击者将100个TokenB转换为12.5个Token A,赚取2.5个TokenA的利润

如果我们首先选择购买Token,然后其他人选择购买其他Token,价格就会上涨。如果我们立即卖出,我们就可以通过高买低卖来实现对冲套利。然而,三明治攻击摒弃了正常交易者的权益,攻击者最终获得了利润。

三明治攻击可能采取以下两种形式:

(1)流动性提供者攻击流动性提供者

攻击者尝试攻击等待在区块链上处理AMM交易的流动性提供者。攻击者通过前后交易(前置和后置)从交易者处获利。现在,三个等待处理的交易通过一个流动性池和外汇市场连接。挖矿必须选择哪笔交易最先获得批准,攻击者可以通过具体行贿来影响这种选择,例如支付更高的或更低的交易费用。

(2)流动性服务提供者攻击流动性获奖者

在这种情况下,流动性服务提供者试图攻击流动性获奖者。一切从一名等待处理交易的流动性提供者开始,攻击者随后进行三项操作:

(a)取消流动性:提前布置(通过降低资产通胀预期来提高受害者的滑块)

(b)添加流动性:修复操作(恢复到攻击前资金池中的流动性水平)

(c)用B交换A:回到操作(将A的资产余额恢复到攻击前水平)

在此攻击中,攻击者从流动性池中获取了所有资产。在这个过程中,攻击者将放弃受害者的交易提成,流动性服务提供者将从其与AMM协议之间提供的流动性中扣除提成。

然而,这种攻击并不总是可行的。要使攻击合理,必须同时满足两个标准:

(1)利润必须大于gas费(挖矿所需支付的成本),因为如果利润不大,用户必须获得大量的Token才能弥补gas费用

(2)减少滑块:滑块是指客户在交易中接受的最理

猜你喜欢

关注我们

微信二维码

微信