本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
AMM 是对抗性代码的诱人目标:LP 的资金在完全可见的池中;每次交换都会确定性地改变价格。本页列举了已在 AMM 上演示过的攻击类别、它们如何适用于 Raydium,以及 Raydium(和集成者)如何防御每一种攻击。
1. 三明治攻击 / MEV 攻击
攻击
机器人监视内存池 / 八卦流,看到用户的交换,用同向买入进行抢先交易(推高价格),让用户的交易以更差的价格执行,然后用相反的卖出进行后置交易。机器人从价差中获利。暴露程度
- 最容易暴露:低 TVL 的 CPMM 池和 AMM v4 池——即使很小的交易也会显著改变价格。
- 较少暴露:深度 CLMM 池——tick 内交易不会改变价格。
- 不暴露:农场收获、LP 存款(比例强制,不以相同方式对价格敏感)。
防御
- Jito 捆绑 (
integration-guides/routing-and-mev) 将交易隐藏在公共内存池之外。 - 紧密滑点——最小输出更接近预期,使三明治攻击无利可图。低于约 0.3%,大多数三明治攻击会亏损。
- 较小的交易规模——将 $100k 交换分成 10 次 $10k;每次移动价格更少。
Raydium 的立场
Raydium 的核心程序不强制执行反 MEV 保护——它们在程序级别是中立的。保护发生在提交层(Jito、钱包的内置保护)。UI 默认滑点为 0.5%,这对大多数池来说是合理的。2. 价格操纵
攻击
大型交易者临时移动池的价格(通过闪电贷或自筹资金的鲸鱼),触发某些依赖于价格的下游操作(清算、基于预言机的借款、衍生品支付),然后将价格恢复到正常。暴露程度
- 原生 Raydium 操作:不暴露。进出交换只会产生往返费用;交易者亏损。
- 集成程序:如果它们天真地读取 Raydium 池价格,则暴露。
防御
- 使用 TWAP,而不是现货价格,用于可组合性(见
security/oracle-and-token-risks)。 - CLMM ObservationState 提供短窗口 TWAP,不可在没有持续资本承诺的情况下操纵。
- 多预言机共识:如果你的程序读取 Raydium、Pyth、Jupiter,只在它们在 1% 内一致时才行动,任何单一来源的闪电贷操纵都不足以成功。
Raydium 的立场
CLMM 提供 ObservationState TWAP 支持;忽视它并使用现货价格的集成者需自行承担后果。Raydium 的前端使用多个价格来源进行 USD 显示。3. 捐赠 / 通胀攻击
攻击
新池中的第一个 LP 存入少量(例如,6 位小数的铸币各 1 个代币 → 发行 1 个 LP 单位)。然后攻击者通过 SPL Token 转账直接向池金库”捐赠” 1,000,000 个代币。现在 1 个 LP 单位代表每个铸币 500,000 个。任何随后存入少于该金额的 LP 被四舍五入为 0 个 LP 单位并失去其存款。暴露程度
- CPMM / AMM v4:在新创建的低流动性池上可能暴露。
- CLMM:不暴露(没有共享 LP 铸币;每个头寸都是自己的 NFT,具有明确的流动性价值)。
防御
CPMM 的initialize 指令将最小 LP 金额锁定到池中(受 Uniswap V2 的 MINIMUM_LIQUIDITY 模式启发)。这意味着第一个 LP 接收 sqrt(x × y) - MINIMUM_LIQUIDITY,其中 MINIMUM_LIQUIDITY(1000 单位)被销毁到空地址。捐赠攻击要求攻击者捐赠 >> 初始存款,这变得不经济。
此外,Raydium 的 SDK 在初始存款很小时会大声警告,并引导用户使用合理的金额。
Raydium 的立场
MINIMUM_LIQUIDITY 锁定在 CPMM 中提供;AMM v4 有类似的机制。创建池的用户应该用至少 10,000+ 个每个铸币单位进行种子投资,以使捐赠攻击在任何情况下都不经济。
4. Token-2022 转账钩子滥用
攻击
铸币的转账钩子是可升级的。攻击者在铸币启动时部署无害钩子,在 Raydium 上列出,从用户积累 LP。稍后,升级钩子以阻止所有转账(实际上是软地毯——用户无法提取)。攻击者使池只能在一个方向上交易,便宜地买入 LP,解锁钩子,获胜。暴露程度
包含转账钩子铸币的池。防御
- 程序级别:Raydium 程序在交换期间调用钩子;如果钩子阻止,交换会回滚。这在机制上不能防止攻击。
- UI 级别:Raydium 标记具有转账钩子铸币的池。
- 集成者级别:聚合器应默认跳过转账钩子铸币,仅允许列出已验证的钩子。
Raydium 的立场
Raydium 不禁止转账钩子池(合法钩子存在),但清楚地标记它们。过滤tags.includes("TRANSFER_HOOK") 的聚合器可以根据需要排除。
5. 可组合性 / CPI 漏洞
攻击
程序通过 CPI 组合 Raydium 并引入漏洞:例如,它传递错误的observation_state、CLMM 交换的错误 tick 数组,或双花账户。攻击者识别有漏洞的组合并利用。
暴露程度
- 有漏洞的集成者——通常是漏洞的来源。
- Raydium——仅当漏洞在 Raydium 程序本身中触发意外行为时。
历史示例
Raydium 的程序都没有通过 CPI 被利用——Raydium 的账户验证器捕获形状错误的账户并回滚。更广泛生态中的漏洞发生在自定义程序漏洞中,这些漏洞组合了 AMM 但不源于 AMM。防御
- 调用程序在可能时应使用 Anchor CPI 助手(而不是手工构建的指令)——类型安全捕获大多数误用。
- 针对 mainnet 分叉状态的集成测试覆盖组合情况。
6. 管理员 / 密钥泄露
攻击
管理员密钥(升级权限、AmmConfig 管理员、协议费用声明)被泄露。攻击者部署恶意升级以排空池,或修改 AmmConfigs 以将费用路由到攻击者钱包,或排空协议费用。暴露程度
security/admin-and-multisig 中记录的所有角色。
防御
- 3/4 多签升级权限需要泄露 4 个独立签署者。
- 24 小时时间锁升级给用户时间在恶意升级激活前展开。
- 操作监控——通过 Squads 的公共队列对任何多签活动发出警报。
历史事件
AMM v4 的池权限密钥在 2022 年 12 月被泄露(多签前)。修复:将所有权限移至 Squads 多签。修复后,没有事件。7. CLMM tick 数学的经济攻击
攻击
老练的攻击者利用 CLMM tick 数学中的舍入或费用计算边界情况。在其他 CLMM 实现中发现的示例(不是 Raydium):- 费用增长计算对用户舍入,积累灰尘。
- Tick 穿越错误地记入/扣除 fee_growth delta。
sqrtPrice * liquidity乘积中的整数溢出。
暴露程度
复杂的定制数学。审计和模糊测试是主要防御。Raydium 的立场
CLMM 已进行两次独立审计(OtterSec + MadShield)加上持续的基于属性的模糊测试。迄今为止未发现生产影响的漏洞。sqrt_price_x64 Q64.64 算术使用饱和 128 位数学,单元测试覆盖边界 tick。
8. 头寸 NFT 混淆
攻击
用户被欺骗签署将其 CLMM 头寸 NFT 转移给攻击者的交易。攻击者现在拥有该头寸的流动性。暴露程度
任何头寸 NFT 持有者。防御
- 钱包 UI 应识别 Raydium 头寸 NFT 并将其显示为不同(不是作为通用 NFT 来”发送”)。
- 用户应警惕签署转移 NFT 的交易。
- 新头寸仅在使用 V2 开放路径且底层金库铸币的冻结权限与 CLMM 的受限发行者列表匹配时才被冻结。该匹配头寸无法转移或更改其代币账户所有者;所有其他新头寸保持可转移。
Raydium 的立场
头寸 NFT 实现 Metaplex 的元数据标准;理解 CLMM 头寸的钱包应用将其显示为流动性头寸而不是可交易 NFT。截至 2026 年,大多数主要 Solana 钱包特别显示它们。受限发行者冻结是有针对性的,不保护普通可转移头寸。9. 农场奖励流操纵
攻击
农场创建者为奖励金库提供资金,吸引质押者,然后使用使待处理奖励计算不稳定的参数调用restartRewards,窃取收获价值。
暴露程度
具有恶意创建者的农场。Farm v6 严格限制创建者权力;此攻击不起作用。防御
Farm v6 的管理指令(setRewards、restartRewards、addReward)保留按比例权利——reward_per_share 在更改时调整,因此没有更改前的应计被追溯损坏。
Raydium 的立场
OtterSec 的农场审计特别测试了重启奖励场景;未发现漏洞。10. 模拟与执行分歧
攻击
攻击者构造一个模拟成功但在执行时回滚的交易(或反之)。用于骚扰依赖模拟进行显示的钱包。暴露程度
基于模拟显示”你将收到 X”的钱包。防御
- 使用
simulateTransaction与真实提交相同的区块哈希。 - 将预期输出显示为”≈“(大约)而不是精确。
- 在提交前立即重新模拟。
Raydium 的立场
CLMM 模拟在给定当前池状态时是确定性的;分歧仅在状态在模拟和执行之间改变时发生(正常情况,通过滑点界限处理)。摘要表
用户可以做什么
- 默认使用紧密滑点;仅在需要时提高。
- 使用启用 Jito 的钱包 / 交换流。
- 在 LP 前验证铸币扩展。
- 监控 Squads 多签以获取待处理升级。
- 跨池多样化;不要将所有 LP 集中在一个新启动池中。
集成者可以做什么
- 对衍生品定价使用 ObservationState TWAP。
- 通过 CPI 组合时验证账户约束。
- 按
tags字段过滤池(跳过scam、honeypot、未验证的转账钩子)。 - 设置合理的滑点界限;不要从用户输入接受 0 滑点。
- 谨慎使用
simulateTransaction——记录它是一个估计。
指针
security/oracle-and-token-risks— Token-2022 风险深入。security/admin-and-multisig— 权限结构。security/disclosure— 漏洞赏金计划。integration-guides/routing-and-mev— MEV 缓解。
- Rekt News — 通知此列表的 DeFi 事后分析。
- 审计报告链接在
security/audits。

