DEX的滑点攻击及应对措施
滑点是指由于市场波动或流动性问题导致交易预期价格与实际执行价格之间的差异。当恶意行为者利用这种滑点现象为自己牟利时,就会发生滑点攻击。
一键发币: SOL | BNB | ETH | BASE | Blast | ARB | OP | POLYGON | AVAX | FTM | OK
滑点攻击(slippage attack)是区块链和加密货币交易背景下与去中心化交易所 (DEX) 相关的概念。DEX 是促进加密货币点对点交易而无需中央中介的平台。
滑点是指由于市场波动或流动性问题导致交易预期价格与实际执行价格之间的差异。
在 DEX 的背景下,由于这些平台的去中心化性质,可能会发生滑点。由于 DEX 依赖自动做市算法和流动性池来匹配和执行交易,特定代币对的可用流动性可能会迅速变化,尤其是在高波动或低流动性时期。
这意味着交易者预期执行交易的价格可能与实际执行交易的价格不同。
滑点对于较大的交易尤其成问题,因为交易订单的规模会显著影响市场上的可用流动性。
交易者最终可能会在买卖时收到比预期更少的代币,或者在购买时支付比预期更高的价格。
1、滑点攻击的运作原理?
当恶意行为者利用这种滑点现象为自己牟利时,就会发生滑点攻击。滑点攻击的运作方式如下:
假设我们正在查看 DEX 中的一对代币:ETH/ABC,其中 ABC 是一种流动性较低的代币。
初始状态:
1 ETH 在 DEX 中定价为 100 个 ABC 代币。
监控阶段:
攻击者注意到 ABC 的流动性较低,因此容易受到价格操纵。
攻击执行:
攻击者下达 10 ETH 的大额买入订单,愿意以每 ETH 110 ABC 的价格购买。由于该订单规模大且流动性低,价格迅速攀升至每 ETH 110 ABC。
- 这种突然的价格变动导致其他交易者的订单被触发,以这种虚高的价格购买 ABC。
- 在攻击者的整个订单完成之前,他们会取消订单的剩余部分。
- 然后,攻击者以虚高的价格下达新的 ETH 卖单,卖出的 ABC 比他们最初花费的还要多。
利润计算:
- 假设攻击者以平均每 ETH 105 ABC 的价格成功购买了 5 个 ETH,总共花费了 525 个 ABC 代币。
- 然后,攻击者以每 ETH 110 ABC 的价格卖出 5 个 ETH,获得 550 个 ABC 代币。
- 此次攻击的净利润:550 ABC(收到)- 525 ABC(花费)= 25 ABC。
在这次攻击中,攻击者利用市场固有的滑点敏感性,操纵价格以获取利润。
如果此类攻击成为常见现象,可能会对去中心化交易所的整体信任和可用性产生负面影响。
2、关键漏洞
- 关键参数:DeFi 平台必须允许用户指定滑点参数:他们希望从交换中返回的最小代币数量。DeFi 审计人员应始终留意将滑点设置为 0 的交换。
- 无到期期限:自动做市商 (AMM) 等高级协议可以允许用户指定截止日期参数,该参数强制执行交易必须执行的时间限制。如果没有截止日期参数,交易可能会停留在内存池中并在更晚的时间执行,从而可能导致用户获得更糟糕的价格。
- 滑点计算不正确:滑点参数应该是“minTokensOut”之类的东西——用户将接受交换的最小代币数量。任何其他情况都是需要注意的危险信号,因为它很可能构成错误的滑点参数。
- 滑点精度不匹配:某些平台允许用户从一组具有各种不同精度值的输出代币中赎回或提取。这些平台必须确保滑点参数“minTokensOut”的缩放比例与所选输出代币的精度相匹配,否则滑点参数可能无效并导致精度损失错误。
3、补救措施
以下是 DEX 平台和区块链社区可以考虑的一些策略:
- 改进流动性管理:DEX 可以致力于优化其流动性管理算法,以更好地处理大额交易订单,而不会导致价格大幅波动。这可能涉及实施将大额订单拆分为小块的机制,或鼓励流动性提供者向流动性池中存入更多资金。
- 动态费用结构:DEX 可以实施动态费用结构,根据订单规模调整交易费用。这可以阻止攻击者下达可能导致滑点的大额订单,因为他们将承担更高的费用。
- 反抢先交易措施:抢先交易是一个相关概念,恶意行为者预期大额交易并将自己的交易置于其前面,以从随后的价格变动中获利。 DEX 可以采取措施防止或缓解抢先交易,这也可以间接解决滑点攻击。
- 订单执行延迟:在下单后引入交易执行的轻微延迟可以帮助缓解滑点攻击。这种延迟将使市场能够适应流动性的变化,并降低快速、大额订单导致价格波动的有效性。
- 价格预言机和去中心化数据馈送:使用可靠的价格预言机和去中心化数据馈送可以帮助确保用于执行交易的价格准确且不易被操纵。
- 第 2 层扩展解决方案:实施第 2 层扩展解决方案(例如侧链或状态通道)可以帮助提高 DEX 交易的速度和效率,从而降低网络拥塞严重时出现滑点的可能性。
- 自动监控和干预:DEX 可以实施自动监控系统,检测异常交易模式或突然的价格变动,并触发干预以稳定市场或暂时停止交易。
- 社区治理:DEX 平台可以让他们的用户社区参与决策过程,包括提议和投票改变平台的交易规则或费用结构,这有助于解决潜在的漏洞。
4、案例研究:Jimbo 协议
2023 年 5 月 28 日,Arbitrum 链上的 Jimbo 协议遭到黑客攻击。黑客能够利用协议滑点控制机制中的漏洞,从而窃取价值约 750 万美元的 ETH。
攻击
漏洞的根本原因是协议滑点控制机制中的漏洞。滑点控制是一种防止大额交易导致价格大幅波动的机制。
在 Jimbo 协议的情况下,JimboController 合约的 shift() 函数中缺乏滑点控制,这让黑客得以利用该漏洞。
- 攻击者从去中心化借贷协议 AAVE 借入了大约 10,000 ETH。
- 然后,他们以远高于当前市场价格的价格添加了一些 JIMBO 代币。这些箱子本质上是指示代币交易价格的刻度。
- 攻击者使用 [ETH-JIMBO] 交易对,将借来的 ETH 换成大量 Jimbo 代币。这导致 JIMBO 的价格飙升至非常高的水平。
- 攻击者将 100 个 JIMBO 代币转移到 JimboController 合约。
- 然后,攻击者通过调用 JimboController 合约的 shift 函数来操纵流动性池中的代币余额。
- 价格上涨后,当触发重新平衡时,10% 的 ETH 被转移到低于活动价格的水平,而这个价格非常高。然后,攻击者出售 JIMBO 代币以耗尽锚定水平,并将价格拉低。
- 再次触发重新平衡,将 10% 的 ETH 转移到低于当前低得多的活动价格的水平。
- 然后重复此过程多次,允许每次以更便宜的价格购买 JIMBO。
- 然后,攻击者将获得的 Jimbo 代币换成 ETH。在偿还闪电贷后,攻击者获利约 750 万。
后果
攻击发生后,攻击者立即将资金从 Arbitrum Chain 转移到以太坊链。
该项目向黑客发送了一条链上消息,要求归还 90% 的资金,以换取停止所有调查。攻击发生后,代币价格立即下跌了 40%。
原文链接:What are Slippage Attacks in Decentralized Exchanges (DEXs)?
DefiPlot翻译整理,转载请标明出处