DEX安全简述

admin 2026-03-10 02:47:41 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文概述DEX安全现状,分析了AMM机制与订单簿模式。重点剖析价格操纵、路径漏洞及非标准代币等四类攻击手法,结合Odin.fun等案例阐述原理。结论建议开发者警惕魔改协议陷阱并完善代币兼容性测试。 综合评分: 86 文章分类: 区块链安全,漏洞分析,安全大事件


cover_image

DEX安全简述

原创

ChainSecLabs ChainSecLabs

ChainSecLabs

2026年3月8日 22:05 四川

区块链安全相关的内容

我们将在这里分享一些

Hi,这里是ChainSecLabs!

本文将梳理DEX的主要类型及常见攻击手法,通过多个真实安全事件(如价格操纵、路径漏洞、非标准代币问题)分析其风险成因。

DEX安全简述

前段时间偶然发现一个AMM设计比赛,挺有意思的。要求参赛者为恒定乘积 AMM 设计动态费率策略,目标是最大化 edge(边际利润)。开发者在吸引散户、减少套利的同时,也需关注潜在的安全风险。去年发生的两次DEX安全事件(Cetus,Balancer)仍然令人印象深刻。

什么是DEX

去中心化交易所(DEX)是一种允许用户在区块链上进行点对点资产交换的平台,无需中央中介机构。与中心化交易所(CEX)不同,DEX将资产的托管和交易执行分散到智能合约中。把DeFi比作乐高的话,DEX就是基石。

DEX的主要分类

一、订单薄

工作原理:用户在链上或链下提交买单与卖单,由撮合引擎撮合成交。其中订单簿类型又可分为以下两种

  • 完全链上订单簿:所有订单与撮合逻辑均在链上执行(如 Serum)。

  • 混合订单簿:订单撮合在链下完成,结算在链上执行(如dYdX、Loopring)。

二、自动做市商DEX(AMM- Automated Market Maker)

随着defi的兴起,AMM应运而生,相较于订单簿,其速度更快,gas费更低。

工作原理:不依赖订单簿,用户与流动性池(Liquidity Pool) 交互。智能合约通过定价函数自动决定交易价格(例如恒定乘积公式 x * y = k)。交易即改变池内资产比例,进而动态更新价格。

1.特点

  • 无需撮合引擎,机制简洁

  • 任意用户可成为流动性提供者(LP)

  • 永远存在报价(只要池内有流动性)

  • 存在价格滑点(Slippage)与无常损失(Impermanent Loss)

2.常见类型:

  • CPMM(恒定乘积):Uniswap V2,PancakeSwap

  • CSMM(恒定和):Curve(稳定币池)

  • CMMM(恒定均值):Balancer(多资产池)

  • PMM(主动做市):DODO(接近订单簿报价)

可能的攻击类型

作为交易所,最直接的影响方式莫过于对其中代币的价格进行操纵。

一.直接价格操纵

  • 原理:

    协议利用单点价格计算,流动性低,容易被操纵,攻击者通过闪电贷等手段进行大额交易,临时改变现货价格,从而操纵依赖现货价格的协议。

  • 典型案例:

1.Odin.fun(2025-08-12) : 漏洞类型:权限验证不足;AMM 完全依赖于内部代币比率。 攻击特点:用毫无价值的代币提供流动性,进行自我交易以人为抬高其价格,然后撤回流动性以套取不成比例的比特币。

2.Bunni(2025-09-02): 漏洞类型:代码逻辑问题。 攻击步骤:

a.使用闪电贷获取Bunni治理代币

b.44 次极小额 withdraw

c.三明治攻击

二、间接价格操作

  • 原理:通过改变某个协议的状态或参数,间接影响价格计算。

  • 典型案例

1.KiloEx (2025-04-14): 漏洞类型:权限验证不足。 攻击方式:缺少访问控制导致价格预言机被操控。

2.EGD-Finance(2022-08-8) :

漏洞类型:奖励公式依赖池内瞬时余额比值作为喂价。 攻击步骤:

a.闪电贷借出 USDT,把 EGD/USDT 池的 USDT 余额瞬间抽走,使余额比骤降。

b.getEGDPrice() 按 USDT 余额 / EGD 余额 算出极低 EGD 价格。 c.调用 claimAllReward(),奖励公式 quota / EGDPrice 因分母变小而放大。 d.在同笔交易里把 EGD 兑换回 USDT,归还闪电贷。

三、其他操纵方式

可控制的交换代币/路径

  • 漏洞原理:协议允许用户在交换时自选代币/路径,未充分验证安全性。
  • 典型案例:

a.MonoXFinance(Nov 30, 2021): 漏洞点:允许用户指定任意交换代币。

由于使用同种代币,在swap时会计算tokenIn,tokenOut值,自然tokenOut>tokenIn,这种代币价值会升高,不断重复,最终这个代币价值会非常高。

b.SashimiSwap (Dec 30, 2021) : 漏洞:交换路径验证不足。 特点:允许通过特定路径套取协议内的价值,攻击方式与kaoyaswap类似。 c.KaoyaSwap (Aug 23, 2022): 漏洞:相同路径验证缺失。

影响:攻击者可以在同一交换路径中重复套利。

这是fork的uniswap v2的项目,在v2中router只是一个路径,不存代币,只负责传话。

uniswap v2 router

在kaoya中,token由router管理。kaoya提供长path swap,比如用户想用a币换d币,但是没有直接的a-d pair,但是有a-b , b-d,于是用户可以选择path[a,b,d]进行交易,转账只和lastpair的balance变化有关,但是问题在于应该只关注最后一步的减少量而不是整个path的总减少。

在本次攻击中,攻击者构造了path[tokenA,WBNB,tokenB,tokenA,WBNB],攻击流程如下,其中为方便解释,数据不是原始数据。

流程为,攻击者用8000个TokenA换出111个WBNB,再用111个BNB换出0.008个TokenB,再用0.008个TokenB换出0.008个TokenA。本来只应该获得0.008个TokenA,但是由于加上了整个path的总减少量,所以攻击者得以获利。

四、非标准代币问题

1.通缩代币

  • 特征:每次转账都减少供应量。

  • 影响:

a.实际接收金额 < 转账金额

b.导致余额不足错误

c.破坏价格计算

  • 典型案例

Balancer(Jun 29, 2020) : 攻击方式: a.利用闪电贷推高通缩代币STA价格. b.用少量STA(如1 STA)兑换WETH,但由于销毁机制,Balancer合约实际未收到STA。 c.每次兑换后调用gulp函数,修正合约内部记录的STA余额(将记录的STA增加值删去),使STA价格保持在高位,从而用极少量的STA兑换大量WETH。

2.通胀代币/奖励代币

  • 特征:持有者定期获得额外代币。

  • 影响:

a.池中代币数量持续增加

b.k值校验失败(需要注意有些fork的标准合约,可能未完全修改精度,参考Uranium v2攻击事件)

c.流动性提供者获得意外收益

3.再基数化代币

  • 特征:代币供应量根据公式自动调整(如AMPL)。

  • 影响:

a.账户余额自动改变

b.k值检查失败

c.交换金额计算错误

  • 典型案例

ElasticSwap(December 12,2022) : 攻击方式: a.合约在添加流动性和移除流动性时使用了两种不同的记账方法。 b.攻击者先正常添加流动性。 c.然后直接向资金池合约地址转入大量代币,人为地改变了池的实际余额,但内部记账的 K值未变。 d.当攻击者移除流动性时,系统根据被抬高的实际余额进行计算,返还给攻击者远超其应得份额代币。

4.转账费代币

  • 特征:每次转账收取费用。

  • 影响:

a.实际接收< 转账金额,导致余额不足

b.k值验证不通过

c.破坏交换逻辑

其他安全问题与参考来源

      其他问题还包括Cetus溢出检测错误等重大DEX安全事件,精度问题,访问控制问题,代码逻辑错误等就不在此赘述了。

本文参考:

https://learnblockchain.cn/video/play/498

https://learnblockchain.cn/video/play/500

https://www.zealynx.io/blogs/amm-security-foundations-p1

https://www.zealynx.io/blogs/amm-security-foundations-p2


AMM设计比赛

https://www.optimizationarena.com/amm


Odin.fun

https://www.quillaudits.com/blog/hack-analysis/how-odinfun-lost-58-3BTC-to-worthless-liquidity?utm_source=medium&utm_medium=blog&utm_campaign=odinfun_exploit


Bunni

https://blog.bunni.xyz/posts/exploit-post-mortem/


KiloEx

https://www.halborn.com/blog/post/explained-the-kiloex-hack-april-2025


EGD-Finance

https://learnblockchain.cn/article/7502


MonoXFinance

https://slowmist.medium.com/detailed-analysis-of-the-31-million-monox-protocol-hack-574d8c44a9c8


SashimiSwap

https://www.notion.so/DEX-3171ec20be5e802ca8d7cbc6c1cfd6b9?pvs=21


KaoyaSwap

https://medium.com/quillhash/kaoyaswap-logic-exploit-analysis-quillaudits-7c6c1575926a


Balancer

https://slowmist.medium.com/detailed-analysis-of-balancer-hack-de8bd86020de


Uranium v2

https://medium.com/immunefi/building-a-poc-for-the-uranium-heist-ec83fbd83e9f


ElasticSwap

https://quillaudits.medium.com/decoding-elastic-swaps-850k-exploit-quillaudits-9ceb7fcd8d1a

作者:0xLight

编辑:Legend

审核:Chloe

____________END____________


往期推荐

Layer2的身份幻觉

本文讨论了以太坊 Layer2 中地址别名的相关内容,包括其概念、安全背景、易踩的坑以及总结建议等,旨在让开发者重视地址别名以保障跨链协议安全。

授权方式的更迭: 从 ERC20 到 Permit2

本文将讨论 DeFi 领域代币授权方式从 ERC20 到 Permit2 的更迭过程及相关特点。

主流跨链协议攻击面

本文将深入分析当前较具代表性的三种跨链通信协议–LayerZero、deBridge和Wormhole(虫洞)的底层机制。

风起于青萍之末

本文将剖析Router设计、通缩代币等魔改协议引发的安全陷阱,进而警示开发者在借鉴或修改成熟协议时需极度审慎。


搜索公众号  关注我们

[ChainSecLabs]

免责声明

本文章旨在分享安全技术相关知识与经验,内容仅供学习与研究参考。文中所提及的技术手段、工具或操作流程,均基于公开资料与作者个人理解,不代表任何官方立场,也不构成对读者的具体操作建议。

请勿将本文所述技术用于任何非法用途,否则后果自负。作者严禁并坚决反对一切网络攻击、非法入侵、数据窃取等违法行为,且不承担因读者不当使用文章内容而引发的任何直接或间接责任。

若文章中引用了第三方工具或资料,版权归原作者所有,若有侵权或不妥之处,请及时联系,我们将第一时间予以处理。

网络安全关乎法律与伦理,请读者在合法合规的前提下,自主学习、合理应用。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:ChainSecLabs ChainSecLabs ChainSecLabs《DEX安全简述》

DEX安全简述 网络安全文章

DEX安全简述

文章总结: 本文概述DEX安全现状,分析了AMM机制与订单簿模式。重点剖析价格操纵、路径漏洞及非标准代币等四类攻击手法,结合Odin.fun等案例阐述原理。结论
评论:0   参与:  0