Эксплойт Splash опустошил пул Cardano ADA/OADA
Splash заявляет, что изъян в его валидаторе StableSwap позволил атакующему вывести примерно 2.43 млн ADA и 1.99 млн OADA. Optim Finance приостановил работу своего протокола после исчезновения ликвидности OADA.
By SongMarketCap
Updated:
Splash Protocol опубликовал технический отчет, объясняющий, как атакующий опустошил пул ADA/OADA StableSwap 13 сентября.
Впоследствии Optim Finance приостановил свой протокол, удалил оставшуюся ликвидность под своим контролем и предупредил пользователей, что OADA больше нельзя обменять обратно на ADA через его обычный маршрут.
Splash сообщил, что другие типы пулов не пострадали. Инцидент произошел в инфраструктуре смарт контрактов на уровне приложения и не поставил под угрозу саму сеть Cardano.
Как был эксплуатирован валидатор StableSwap
Уязвимость находилась в валидаторе Splash stableFnPoolT2t, который обеспечивал работу пула StableSwap из двух активов ADA/OADA.
Валидатор вычислял торгуемые резервы, вычитая накопленные протокольные комиссии из общего баланса пула. Однако он не проверял, что получившиеся резервы остаются положительными. Также отсутствовало достаточное верхнее ограничение на рост протокольных комиссий и не контролировалось ожидаемое направление свопа, при котором один актив входит в пул, а другой выходит.
Атакующий воспользовался отсутствующими проверками в двух транзакциях.
В первой транзакции, выполненной в 00:47:36 UTC, атакующий внес 9,870 ADA и минимальное количество OADA. Почти весь депозит ADA был записан как протокольные комиссии, в результате чего к торгуемому резерву ADA в пуле был добавлен только один lovelace.
Спустя сорок пять секунд вторая транзакция опустила рассчитанный торгуемый резерв ADA ниже нуля. Поскольку инвариант StableSwap оценивался с использованием отрицательного резерва, валидатор принял транзакцию, которая вывела из пула и ADA, и OADA.
Предложение токенов LP осталось неизменным, во время эксплойта токены LP не чеканились и не сжигались.
По словам Splash, любую из двух дополнительных защит хватило бы, чтобы остановить атаку: требование сохранять положительные торгуемые резервы или жесткое верхнее ограничение на изменения накопленных протокольных комиссий.
В отчете также говорится, что исполненная ветка свопа соответствовала ранее аудированному коду. Аудит 2024 года не выявил отсутствующие проверки протокольных комиссий, положительности резерва и направления свопа, которыми воспользовались в атаке.
Почему пул был критически важен для OADA
OADA это ADA-пегированный синтетический актив, разработанный Optim Finance. Пользователи могут чеканить OADA, внося ADA, но система не предоставляет прямого механизма для выкупа OADA обратно в ADA.
Вместо этого пользователи обычно выходили через пул ADA/OADA StableSwap на Splash. Этот пул также поддерживал Optim’s Algorithmic Market Operation, которая управляла ликвидностью, чтобы удерживать OADA близко к привязке к ADA.
Официальный отчет об инциденте относит эксплойт к валидатору Splash. В нем не указывается уязвимость в Optim’s AMO и инцидент не описывается как взлом контракта Optim.
Опустошение пула Splash лишило OADA основного маршрута выхода и рынка, использовавшегося для поддержки привязки.
Затем атакующий продал выведенные OADA через пул Minswap V2 OADA/FLDT. Своп дал примерно 563,073 FLDT, которые позднее были конвертированы примерно в 115,323 ADA.
Optim сообщил, что атакующий также опустошил ликвидность OADA на других торговых площадках. Эти протоколы не были скомпрометированы из за той же уязвимости валидатора. Их рынки пострадали после того, как основной пул Splash уже был опустошен.
Что будет дальше
Optim сообщил, что его протокол приостановлен и вся доступная ликвидность удалена. Он поручил всем, кто предоставляет ликвидность для OADA или токена управления Optim O, немедленно вывести средства и предупредил пользователей не создавать новые позиции ликвидности OADA.
Optim не уточнил, распространяется ли пауза на каждый продукт и модуль или только на операции, связанные с OADA.
Splash пометил затронутый код StableSwap как уязвимый и отслеживает средства, отправленные на адреса, связанные с системами биржевых депозитов. Команда заявила, что планирует связаться с KuCoin и Gate.io и передать информацию о транзакциях.
Splash также пригласил атакующего вернуть средства через возможное white hat решение с вознаграждением и без дальнейшей эскалации.
Публичного подтверждения возврата средств нет. Ни Splash, ни Optim не объявили программу компенсаций, сроки восстановления или выпуск исправленного валидатора.