文章总结: 本文概述DEX安全现状,分析了AMM机制与订单簿模式。重点剖析价格操纵、路径漏洞及非标准代币等四类攻击手法,结合Odin.fun等案例阐述原理。结论建议开发者警惕魔改协议陷阱并完善代币兼容性测试。 综合评分: 86 文章分类: 区块链安全,漏洞分析,安全大事件
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安全简述》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论