Back to Blog

№5: Platypus Finance: три атаки и доля везения

Code Auditing
February 15, 2024
5 min read

Резюме

Platypus Finance — это протокол AMM в блокчейне Avalanche. Он подвергся трем атакам:

  • 17 февраля 2023 года произошел взлом из-за некорректной проверки платежеспособности, что привело к общим убыткам в размере около 9,05 млн долларов США. Из них 2,4 млн долларов США были спасены с помощью BlockSec. Около 380 тысяч токенов застряли в контракте Aave, а затем были возвращены.
  • 12 июля 2023 года протокол был взломан, в результате чего было потеряно около 50 тысяч долларов США из-за игнорирования разницы в цене между стейблкоинами.
  • 12 октября 2023 года протокол пострадал от атак манипулирования ценами, потери составили около 2,2 млн долларов США. После переговоров со злоумышленником 90% украденных средств были возвращены.

Проекту повезло, что он пережил все эти атаки. Наш анализ этих трех инцидентов показывает, что логических ошибок можно было избежать при проведении тщательного аудита или использовании более активных мер безопасности.

Первая атака

Чтобы понять этот инцидент безопасности, необходимо понимать рабочий процесс нескольких смарт-контрактов. Общий процесс выглядит следующим образом:

  • Пользователь может внести токен в пул, чтобы стать поставщиком ликвидности (LP) и получить LP-токен.
  • LP-токен можно разместить в MasterPlatypus для получения вознаграждения. В процессе этого LP-токен будет переведен в контракт MasterPlatypus.
  • LP-токен можно использовать в качестве залога для займа других активов с целью повышения эффективности управления активами.

На следующем рисунке показаны взаимодействия.

Анализ уязвимости

Уязвимость существует в функции под названием emergencyWithdraw внутри контракта MasterPlatypus. В экстренных случаях эта функция должна использоваться для вывода стейкнутых LP-токенов из контракта MasterPlatypus. В этой функции контракт проверяет, является ли пользователь «платежеспособным» (Solvent), чтобы разрешить вывод средств. Логика проверяет, есть ли у пользователей безнадежная задолженность (т. е. можно ли использовать залог для погашения долга). Если нет, пользователи могут вывести стейкнутые LP-токены.

Однако эта логика ошибочна. Тот факт, что пользователь «платежеспособен», означает лишь то, что его залог может покрыть его долг. Однако функция НЕ проверяет, остается ли пользователь платежеспособным после экстренного вывода стейкнутых токенов. Злоумышленник может использовать этот изъян, чтобы занять активы, а затем экстренно вывести стейкнутые LP-токены (не погашая долги). См. подробный анализ в блоге Immunefi.

Анализ атаки

Мы используем транзакцию атаки в качестве примера, чтобы показать весь процесс атаки.

Шаг 1: Заем флэш-кредита (Flashloan) в размере 44 миллионов USDC от AAVE

Шаг 2: Внесение 44 миллионов USDC в пул для получения LP-USDC

Шаг 3: Внесение LP-USDC в MasterPlatypus

Шаг 4: Использование LP-USDC в качестве залога для займа USP

Шаг 5: Выполнение функции emergencyWithdraw для запуска атаки

Злоумышленник получает LP-USDC, не выплачивая долг в USP.

Шаг 6: Вывод LP-USDC из пула для получения USDC

Шаг 7: Продажа USP для получения прибыли

Однако прибыль осталась внутри контракта атаки. Фактически, злоумышленник мог настроить новый адрес получения для свопа, чтобы забрать прибыль.

Спасение средств от BlockSec

Мы обнаружили, что злоумышленник оставил прибыль внутри контракта атаки. Кроме того, в контракте атаки не было логики для вывода активов. Однако мы обнаружили уязвимость в самом контракте атаки, которую можно было использовать для обратного хака, чтобы вывести часть активов из контракта.

В частности, существует контроль доступа к функции обратного вызова (callback) флэш-кредита, что означает, что любой может вызвать эту функцию. Это также является первопричиной того, что многие MEV-боты подвергаются атакам.

Кроме того, внутри функции обратного вызова контракт злоумышленника одобряет (approve) токен USDC для контракта пула Platypus finance. А этот контракт пула является обновляемым!

Комбинируя эти два факта, мы смогли спасти USDC, находящиеся в контракте атаки, путем:

  • Обновления контракта пула Platypus finance для включения логики вывода USDC из контракта.
  • Вызова функции обратного вызова контракта атаки, чтобы одобрить передачу USDC в контракт пула.
  • Контракт пула позволил заменить любую функцию (которая будет выполнена контрактом атаки) для перевода USDC из контракта атаки (поскольку контракт атаки одобрил передачу USDC для пула).

Вот транзакция для спасения 2,4 миллионов USDC.

Две другие атаки

Пожалуйста, перейдите по следующим ссылкам для получения дополнительной информации о других двух атаках.

  • Атака-II: 11 июля 2023 года. Протокол предполагает, что соотношение между USDC и USDT составляет 1:1, что отклоняется от рыночных колебаний, что приводит к ошибочной логике вывода средств. Ссылка на одну из транзакций атаки. Их было несколько.

  • Атака-III: 12 октября 2023 года, из-за манипуляции значениями cash (наличность) и liability (обязательства), что повлияло на цену свопа. [Первая транзакция атаки | Вторая транзакция атаки]

Резюме

Три атаки эксплуатировали различные уязвимости в протоколе. Несмотря на то, что некоторые другие вендоры проводили аудит протокола, злоумышленник все же нашел лазейку и успешно атаковал протокол. К счастью, часть активов удалось спасти, но мы не можем рассчитывать на постоянное везение. Для защиты протокола и активов пользователей необходимо применять дополнительные меры безопасности, включая мониторинг атак и автоматическое реагирование.

Читайте другие статьи из этой серии:

Sign up for the latest updates
~$5.98M Потеряно: Aztec, Raydium и другие | Еженедельник BlockSec
Security Insights

~$5.98M Потеряно: Aztec, Raydium и другие | Еженедельник BlockSec

Еженедельный отчёт о безопасности блокчейна (8–15 июня 2026 г.): 4 инцидента в Ethereum и Solana, общие потери ~$5,98 млн. Aztec Connect: отсутствие валидации входных данных привело к рассинхронизации rollup и L1. Raydium: уязвимость в AMM v3 позволила дренировать 4 пула.

Анализ уязвимости Zcash Orchard | Еженедельник BlockSec
Security Insights

Анализ уязвимости Zcash Orchard | Еженедельник BlockSec

Критическая уязвимость в цепи Orchard Zcash: отсутствие ограничения равенства в гаджете ECC halo2 позволяло незаметно подделывать ZEC через двойное расходование. Уязвимость существовала 4+ лет, обнаружена ИИ-аудитом (Anthropic Opus 4.8, исследователь Тейлор Хорнби), устранена экстренным обновлением NU6.2.

Информационный бюллетень — май 2026 г.
Security Insights

Информационный бюллетень — май 2026 г.

В мае 2026 года в DeFi произошло 3 взлома: Echo Protocol ($76,7 млн, компрометация ключа), StablR ($12,8 млн, брешь в multisig) и Verus-Ethereum Bridge ($11,7 млн, ошибка проверки типов). Общий ущерб — около $101,2 млн.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit