Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
AMM — привлекательная мишень для враждебного кода: средства LP находятся в полностью видимых пулах; каждый своп детерминированно меняет цену. На этой странице собраны классы атак, которые были продемонстрированы против AMM, как они применяются к Raydium и что Raydium (и интеграторы) делают для защиты.
1. Sandwich / MEV атаки
Атака
Бот отслеживает mempool / gossip поток, видит своп пользователя, фронт-ранит с покупкой в том же направлении (поднимая цену), позволяет транзакции пользователя выполниться по худшей цене, затем бэк-ранит противоположной продажей. Бот получает прибыль от спреда.Уязвимость
- Наиболее уязвимы: пулы CPMM с низким TVL и пулы AMM v4 — даже небольшие своды значительно меняют цену.
- Менее уязвимы: глубокие пулы CLMM — своды внутри тика не меняют цену.
- Не уязвимы: сбор фермы, депозиты LP (соотношение фиксировано, не чувствительно к цене так же).
Защита
- Jito bundles (
integration-guides/routing-and-mev) скрывают транзакцию из публичного mempool. - Плотный slippage — минимальный выход, близкий к ожидаемому, делает sandwich атаки убыточными. Ниже ~0,3% большинство sandwich атак теряют деньги.
- Меньшие размеры сводов — разделите своп на $100k на 10× $10k; каждый меняет цену меньше.
Позиция Raydium
Основные программы Raydium не применяют защиту от MEV — они нейтральны на уровне программы. Защита происходит на уровне отправки (Jito, встроенная защита кошельков). UI по умолчанию устанавливает slippage на 0,5%, что разумно для большинства пулов.2. Манипуляция ценой
Атака
Крупный трейдер временно меняет цену пула (через flash loan или самофинансируемый кит), запускает какое-то действие, зависящее от цены (ликвидацию, заимствование на основе оракула, выплату дериватива), затем возвращает цену в норму.Уязвимость
- Нативные операции Raydium: не уязвимы. Спотовый своп туда-обратно просто несет комиссии; трейдер теряет деньги.
- Интегрированные программы: уязвимы, если они наивно читают цену пула Raydium.
Защита
- Используйте TWAP, не спотовые цены, для композиции (см.
security/oracle-and-token-risks). - CLMM ObservationState дает краткосрочный TWAP, который невозможно манипулировать без устойчивого капитального обязательства.
- Консенсус нескольких оракулов: если ваша программа читает Raydium, Pyth и Jupiter и действует только когда они согласны в пределах 1%, flash-loan манипуляция любого одного источника недостаточна.
Позиция Raydium
CLMM поставляется с поддержкой ObservationState TWAP; интеграторы, которые игнорируют это и используют спотовые цены, на свой риск. Фронтенд Raydium использует несколько источников цен для отображения USD.3. Атаки пожертвований / инфляции
Атака
Первый LP в новом пуле депозирует крошечную сумму (например, 1 токен каждого из 6-десятичных минтов → выпускается 1 единица LP). Затем злоумышленник «жертвует» 1 000 000 токенов прямо в хранилище пула через SPL Token трансфер. Теперь 1 единица LP представляет 500 000 каждого минта. Любой последующий LP, депозирующий меньше этого, округляется до 0 единиц LP и теряет свой депозит.Уязвимость
- CPMM / AMM v4: потенциально уязвимы на новых пулах с низкой ликвидностью.
- CLMM: не уязвимы (нет общего минта LP; каждая позиция — это собственный NFT с явным значением ликвидности).
Защита
Инструкцияinitialize CPMM блокирует минимальное количество LP в пуле (вдохновлено паттерном MINIMUM_LIQUIDITY Uniswap V2). Это означает, что первый LP получает sqrt(x × y) - MINIMUM_LIQUIDITY, с MINIMUM_LIQUIDITY (1000 единиц) сожженным в null. Атака пожертвования требует, чтобы злоумышленник пожертвовал >> начальный депозит, что становится неэкономичным.
Кроме того, SDK Raydium громко предупреждает, когда начальный депозит крошечный, и направляет пользователей к разумным суммам.
Позиция Raydium
БлокировкаMINIMUM_LIQUIDITY поставляется в CPMM; AMM v4 имеет аналогичный механизм. Пользователи, создающие пулы, должны засеять по крайней мере 10,000+ единиц каждого минта, чтобы сделать атаки пожертвований неэкономичными в любом случае.
4. Злоупотребление transfer-hook Token-2022
Атака
Transfer hook минта обновляется. Злоумышленник развертывает невинный хук при запуске минта, получает листинг на Raydium, накапливает LP от пользователей. Позже обновляет хук, чтобы заблокировать все трансферы (фактически мягкий rug — пользователи не могут вывести). Злоумышленник делает пул торгуемым только в одном направлении, покупает LP дешево, разблокирует хуки, побеждает.Уязвимость
Пулы, включающие минт с transfer-hook.Защита
- На уровне программы: программы Raydium вызывают хук во время сводов; если хук блокирует, своп откатывается. Это не предотвращает атаку механически.
- На уровне UI: Raydium помечает пулы с transfer-hook минтами.
- На уровне интегратора: агрегаторы должны по умолчанию пропускать transfer-hook минты и разрешать только проверенные хуки.
Позиция Raydium
Raydium не запрещает пулы с transfer-hook (существуют легитимные хуки), но четко их помечает. Агрегаторы, фильтрующие по полюtags.includes("TRANSFER_HOOK"), могут исключить при желании.
5. Ошибки композиции / CPI
Атака
Программа компонует Raydium через CPI и вводит ошибку: например, передает неправильныйobservation_state, неправильные tick arrays для CLMM своп или двойную траты аккаунта. Злоумышленник идентифицирует ошибочную композицию и эксплуатирует.
Уязвимость
- Ошибочный интегратор — обычно источник ошибки.
- Raydium — только если ошибка запускает непредусмотренное поведение в самих программах Raydium.
Исторические примеры
Ни одна из программ Raydium не была эксплуатирована через CPI — валидаторы аккаунтов Raydium ловят неправильно сформированные аккаунты и откатывают. Эксплуатация в более широкой экосистеме произошла через ошибки пользовательских программ, которые компонировали с AMM, но не вытекали из AMM.Защита
- Вызывающие программы должны использовать Anchor CPI помощники (не ручно построенные инструкции), когда возможно — типобезопасность ловит большинство неправильного использования.
- Интеграционные тесты против mainnet-forked состояния охватывают случаи композиции.
6. Компрометация администратора / ключа
Атака
Ключ администратора (upgrade authority, AmmConfig admin, protocol fee claim) скомпрометирован. Злоумышленник развертывает вредоносное обновление, которое осушает пулы, или изменяет AmmConfigs для маршрутизации комиссий на кошелек злоумышленника, или осушает комиссии протокола.Уязвимость
Все роли, задокументированные вsecurity/admin-and-multisig.
Защита
- 3/4 multisig на upgrade authority требует компрометации 4 независимых подписантов.
- 24-часовой timelock на обновления дает пользователям время развернуться перед активацией вредоносного обновления.
- Операционный мониторинг — оповещения о любой активности multisig через публичную очередь Squads.
Исторический инцидент
Ключ pool authority AMM v4 был скомпрометирован в декабре 2022 (до multisig). Исправление: перемещение всех полномочий в Squads multisig. После исправления инцидентов не было.7. Экономические атаки на математику CLMM tick
Атака
Изощренный злоумышленник эксплуатирует ошибки округления или учета комиссий в математике CLMM tick. Примеры, найденные в других реализациях CLMM (не Raydium):- Учет роста комиссий, который округляется против пользователя, накапливая пыль.
- Пересечение tick, которое кредитует/дебетует неправильный дельта fee_growth.
- Целочисленное переполнение в произведениях
sqrtPrice * liquidity.
Уязвимость
Сложная пользовательская математика. Аудиты и fuzzing — основная защита.Позиция Raydium
CLMM прошел две независимые аудиты (OtterSec + MadShield) плюс текущий property-based fuzzing. На сегодняшний день не найдено ошибок, влияющих на production. Арифметикаsqrt_price_x64 Q64.64 использует насыщающую 128-битную математику с модульными тестами, охватывающими граничные ticks.
8. Путаница с Position-NFT
Атака
Пользователя обманывают, чтобы он подписал транзакцию, которая передает его CLMM position NFT злоумышленнику. Злоумышленник теперь владеет ликвидностью позиции.Уязвимость
Любой держатель position NFT.Защита
- UI кошельков должны распознавать Raydium position NFT и отображать их отдельно (не как обычные NFT для «отправки»).
- Пользователи должны быть осторожны при подписании транзакций, которые передают NFT.
- Новая позиция заморожена только когда она использует V2 open path и underlying vault mint freeze authority совпадает со списком restricted-issuer CLMM. Такая совпадающая позиция не может быть передана или иметь измененного владельца token-account; все остальные новые позиции остаются передаваемыми.
Позиция Raydium
Position NFT реализуют стандарт метаданных Metaplex; приложения кошельков, которые понимают CLMM позиции, отображают их как позиции ликвидности, а не как торгуемые NFT. Большинство основных кошельков Solana отображают их специально по состоянию на 2026 год. Замораживание restricted-issuer целевое и не защищает обычные передаваемые позиции.9. Манипуляция потоком вознаграждения фермы
Атака
Создатель фермы финансирует хранилище вознаграждения, привлекает стейкеров, затем вызываетrestartRewards с параметрами, которые делают вычисление pending-reward странным, крадя значение сбора.
Уязвимость
Фермы с вредоносными создателями. Farm v6 плотно ограничивает полномочия создателя; эта атака не работает.Защита
Инструкции администратора Farm v6 (setRewards, restartRewards, addReward) сохраняют pro-rata права — reward_per_share корректируется в момент изменения, поэтому никакое pre-change начисление не повреждается ретроактивно.
Позиция Raydium
Аудит фермы OtterSec специально тестировал сценарии restart-rewards; эксплуатация не найдена.10. Расхождение симуляции и выполнения
Атака
Злоумышленник конструирует транзакцию, которая успешно симулируется, но откатывается при выполнении (или наоборот). Используется для беспокойства кошельков, которые полагаются на симуляцию для отображения.Уязвимость
Кошельки, показывающие «вы получите X» на основе симуляции.Защита
- Используйте
simulateTransactionс тем же blockhash, что и реальная отправка. - Отображайте ожидаемый выход как «≈» (приблизительно), а не точно.
- Пересимулируйте непосредственно перед отправкой.
Позиция Raydium
Симуляция CLMM детерминирована при текущем состоянии пула; расхождение происходит только если состояние меняется между симуляцией и выполнением (нормальный случай, обработанный через slippage bounds).Таблица резюме
Что могут делать пользователи
- По умолчанию используйте плотный slippage; повышайте только при необходимости.
- Используйте кошельки / потоки сводов с поддержкой Jito.
- Проверяйте расширения минтов перед LP.
- Мониторьте Squads multisig на предмет ожидающих обновлений.
- Диверсифицируйте по пулам; не концентрируйте весь ваш LP в одном пуле нового запуска.
Что могут делать интеграторы
- Используйте ObservationState TWAP для ценообразования дериватива.
- Проверяйте ограничения аккаунтов при композиции через CPI.
- Фильтруйте пулы по полю
tags(пропускайтеscam,honeypot, непроверенные transfer-hook). - Устанавливайте разумные bounds slippage; не принимайте 0 slippage от пользовательского ввода.
- Используйте
simulateTransactionс осторожностью — документируйте, что это оценка.
Ссылки
security/oracle-and-token-risks— Риски Token-2022 в деталях.security/admin-and-multisig— Структура полномочий.security/disclosure— Программа bug-bounty.integration-guides/routing-and-mev— Смягчение MEV.
- Rekt News — Post-mortems DeFi, информирующие этот список.
- Отчеты аудитов, связанные в
security/audits.

