Back to Blog

Глубокий анализ и размышления об инциденте атаки на протокол Resupply

Phalcon Security
6 июля 2025 г.
9 min read

26 июня 2025 года на протокол стейблкоина Resupply, развернутый в основной сети Ethereum, была совершена атака, в результате которой было потеряно примерно $10 миллионов активов. Из-за проблемы в реализации ценового оракула соответствующего контракта, для новых Market с низкой ликвидностью злоумышленник смог манипулировать относительной ценой (то есть обменным курсом между заимствованным активом и активом залога) заимствованного актива (reUSD, выпускаемого Resupply) с помощью donation-атаки, сделав его равным 0. Это позволило злоумышленнику обойти проверку финансового состояния актива и заимствовать большое количество reUSD с целью получения прибыли.

После того как BlockSec первым в сети опубликовал раннее предупреждение и предоставил предварительный анализ (Твит1, Твит2), Resupply впоследствии также опубликовал официальное заявление, однако не углубился во многие технические детали. В данной статье будет представлен более подробный анализ. С другой стороны, после атаки также возникла острая полемика в сообществе среди команды проекта и заинтересованных сторон. В данной статье мы также рассмотрим и обсудим сложные экосистемные взаимоотношения, стоящие за протоколом, для справки читателей.


1. Предыстория

1.1 О протоколе Resupply

Resupply — это децентрализованный протокол стейблкоина, принадлежащий экосистеме Curve. Стейблкоин, выпускаемый Resupply, называется reUSD. Это децентрализованный стейблкоин, обеспеченный залоговыми долговыми позициями (CDP), поддерживаемыми другими стейблкоинами — включая crvUSD и frxUSD — которые приносят доход на кредитных рынках внешних платформ. Пользователи могут предоставлять crvUSD и frxUSD для заимствования reUSD, достигая рефинансирования активов-стейблкоинов.

В частности, пользователи могут выполнять операции, связанные с кредитованием, в Market Resupply, развернутом в блокчейне. Создание и поведение Market управляются через DAO. Каждый Market указывает ERC-4626 Vault в качестве залогового актива (collateral) и использует актив, соответствующий этому Vault, как базовый актив. Пользователи вносят залог (Vault или актив Vault) в Market для заимствования reUSD.

Возьмем в качестве примера Market 0x6e90 и Vault 0x0114, задействованные в этой атаке; соответствующие активы (токены) следующие:

  • Market 0x6e90

    • underlying: crvUSD
    • collateral: cvcrvUSD (то есть Vault 0x0114)
    • borrowed: reUSD
  • Vault 0x0114

    • asset: crvUSD (фактически хранится в Curve LlamaLend Controller, который также является Market)
    • collateral: wstUSR
    • borrowed: crvUSD
    • share: cvcrvUSD (токен ERC-4626, выпускаемый Vault)

Иными словами, пользователи могут заложить определенное количество cvcrvUSD (или crvUSD, который на практике будет конвертирован в cvcrvUSD через Vault) в этом Market для заимствования reUSD.


1.2 Как система определяет, имеет ли пользователь право заимствовать актив?

Аналогично общим протоколам кредитования, Resupply Market также выполняет проверку финансового состояния актива для позиции пользователя (через модификатор isSolvent).

isSolvent в конечном итоге вызывает функцию _isSolvent, которая проверяет LTV (коэффициент отношения кредита к стоимости залога), требуя, чтобы соотношение между заимствованным активом и активом залога не превышало максимальное значение, установленное системой (_ltv <= maxLTV).

Можно видеть, что расчет LTV зависит от обменного курса (_exchangeRate), то есть цены (обменного соотношения) заимствованного актива относительно актива залога.


2. Анализ атаки

2.1 Анализ основной причины

С точки зрения кода контракта, ключевой причиной атаки было то, что в реализации ценового оракула Resupply Market имелась проблема. Для новых Market с низкой ликвидностью злоумышленник мог манипулировать обменным курсом с помощью donation-атаки, тем самым обходя проверку финансового состояния и заимствуя большое количество reUSD с целью получения прибыли.

Как рассчитывается обменный курс?

Формула следующая:

Очевидно, что если getPrices возвращает цену больше 1e36, округление вниз при целочисленном делении приведет к тому, что _exchangeRate = 0.

Как манипулировать ценой?

Согласно коду, цена может быть рассчитана следующим образом:

Поскольку код устанавливает precision = 1, DEAD_SHARES = 1000 и shares = 1e18.

Наконец, после подстановки переменных, формула расчета цены выглядит следующим образом:

Можно видеть, что для увеличения значения price ключевым является увеличение разрыва между total_assets и totalSupply, делая total_assets крайне большим, а totalSupply очень маленьким. В фактической реализации протокола Resupply total_assets в формуле зависит от базового актива (crvUSD), а totalSupply зависит от долей (cvcrvUSD), соответствующих общей ликвидности в Market. Это в точности классический сценарий donation-атаки.

2.2 Анализ транзакции атаки

Согласно транзакции атаки [4], можно проанализировать, что злоумышленник выполнил следующие основные шаги:

  1. Заимствовал 4000 USDC через флеш-кредит и обменял их на 3999 crvUSD.

  2. Сделал пожертвование в размере 2000 crvUSD контракту Controller 0x8970. До пожертвования Controller 0x8970 держал 0 crvUSD. После пожертвования зарегистрированное количество crvUSD стало 2000000000000000000000 (с 18 десятичными знаками).

  3. Внес приблизительно 2 crvUSD в Vault 0x0114 и получил 1 долю (cvcrvUSD). На этот момент зарегистрированное количество crvUSD составляло 2002000000000000000001 (с 18 десятичными знаками).

  4. Добавил 1 единицу (то есть 1 долю Vault 0x0114) залога в Market 0x6e90.

  5. Заимствовал 10 000 000 reUSD из Market 0x6e90. На этот момент _exchangeRate = 0, что привело к _ltv = 0, поэтому проверка _isSolvent была пройдена.

Почему _exchangeRate был равен 0? Потому что с помощью предыдущих шагов злоумышленник манипулировал контрактом, чтобы достичь следующего состояния:

Вспоминая метод расчета обменного курса:

Поскольку price > 1e36, _exchangeRate = 0.

  1. Обменял заимствованный reUSD с целью получения прибыли.

3. Извлеченные уроки

Атакованный Market в Resupply использовал реализацию ценового оракула, аналогичную шаблонному контракту Curve.

Однако официальная документация Curve уже указывала на область применения этой реализации — к сожалению, Resupply, похоже, не учел это предупреждение об области применения при развертывании.

4. Взаимоотношения и полемика в сообществе

4.1 Сложная сеть взаимоотношений пяти основных проектов в экосистеме Curve

Чтобы понять более глубокое влияние инцидента с Resupply, необходимо сначала рассмотреть сложные взаимоотношения между пятью основными протоколами внутри экосистемы Curve.

Curve Finance является ядром всей экосистемы, предоставляя пулы ликвидности, crvUSD и протокол LlamaLend, которые лежат в основе работы Resupply, Prisma, Convex и Yearn. Convex оптимизирует доходность Curve через стейкинг и управление и предоставляет дополнительные механизмы наград для Prisma и Resupply. Prisma зависит от LP-токенов Curve и функций повышения доходности Convex, в то время как Resupply напрямую основан на LlamaLend от Curve для выпуска reUSD и был совместно разработан Convex и Yearn. Yearn не только оптимизирует доходность пулов Curve, но также способствовал разработке Resupply через сотрудничество с Convex.

Curve Finance: Как основная платформа, пулы ликвидности Curve (такие как пул crvUSD) и протокол LlamaLend напрямую используются Resupply для выпуска reUSD, Prisma для стейкинга LP-токенов, Yearn для оптимизации доходности и Convex для голосования в управлении.

Convex: Convex — это протокол Curve для повышения доходности. Пользователи могут стейкать LP-токены Curve, чтобы получать более высокие награды в CRV, а также токены CVX от Convex. Convex контролирует почти 50% голосующей власти в управлении Curve и предоставляет механизмы повышения доходности для Prisma и Resupply.

Prisma: Prisma стейкает LP-токены Curve, а пользователи получают повышенные награды (cvxPRISMA) через Convex. Prisma зависит от ликвидности Curve и механизмов доходности Convex.

Yearn: Yearn — это агрегатор доходности, который предлагает пользователям высокую прибыль за счет оптимизации доходности LP-токенов Curve (повышенной через Convex). Yearn сотрудничал с Convex в разработке Resupply и широко использует пулы Curve в своих стратегиях доходности.

Resupply: Совместно разработанный Convex и Yearn, он позволяет пользователям заимствовать reUSD, закладывая стейблкоины, такие как crvUSD, и автоматически стейкает токены в Convex для получения наград CRV и CVX, формируя цикл оптимизации доходности.

4.2 Полемика и последствия

Однако, когда на Resupply была совершена атака, эта сложная сеть взаимоотношений немедленно оказалась в центре полемики. Основатель Curve Михаил Егоров быстро дистанцировался от Resupply, подчеркнув:

«Ни один человек из Curve не работает над этим проектом… не обобщайте, пожалуйста, это на Curve».

Это заявление об отказе от связи отразило то, насколько сложные кооперативные взаимоотношения внутри экосистемы DeFi могут быть хрупкими во времена кризиса.

Эти взаимосвязанные проекты вместе образуют сильно связанную экосистему — в такой системе любая проблема в одном звене может вызвать цепную реакцию. Поэтому неудивительно, что инцидент атаки на Resupply вызвал широкую дискуссию в сообществе о взаимозависимости протоколов и безопасности.


5. Дальнейшие размышления

5.1 Хронология событий

5.2 Если бы существовал Phalcon Security, трагедию можно было бы предотвратить

BlockSec Phalcon Security представляет собой последний прорыв в области защиты безопасности DeFi. Отслеживая транзакции на этапе мемпула, Phalcon Security способен идентифицировать аномальные паттерны в тот момент, когда атакующая транзакция попадает в мемпул.

Система, работающая на основе интеллектуального аналитического движка, интегрирует более 200 типичных сигнатур атак. За последние шесть месяцев она поддерживала ультранизкий уровень ложных срабатываний менее 0,0001%, достигая по-настоящему точного обнаружения угроз.

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

Весь процесс реагирования поддерживает несколько режимов контроля прав доступа — включая EOA и мультиподписные кошельки — предоставляя гибкие решения безопасности для различных типов протоколов.

Если бы Resupply интегрировал систему Phalcon Security при развертывании Market, атаку можно было бы полностью предотвратить

В течение 1,5 часов после развертывания Market 0x6e90 система Phalcon Security автоматически обнаружила бы развертывание нового Market, интеллектуально проанализировала бы его параметры конфигурации и выявила бы потенциальный риск donation-атаки.

Система немедленно отправила бы предупреждение о риске команде проекта, предложив добавить защиту начальной ликвидности или скорректировать соответствующие параметры.

Даже после того, как атака произошла, развертывание Phalcon Security все же принесло бы огромную ценность Resupply и всей экосистеме Curve

Прозрачная система мониторинга в реальном времени демонстрирует пользователям и сообществу твердую приверженность команды проекта безопасности, а механизм непрерывной защиты 24/7 гарантирует, что подобные инциденты никогда не повторятся. Публичные данные мониторинга безопасности повышают прозрачность проекта и служат критическим средством восстановления доверия сообщества. Для затронутых проектов проактивное принятие первоклассного решения безопасности доказывает их чувство ответственности за безопасность средств пользователей, а партнерство с лидером отрасли, таким как BlockSec, также обеспечивает сильную поддержку репутации проекта в области безопасности.

На данный момент более $50 миллиардов активов выбрали доверить свою защиту Phalcon Security. Мы успешно остановили более 20 реальных хакерских атак, сохранив более $20 миллионов от потерь активов. За последние шесть месяцев система поддерживала идеальный показатель точности обнаружения и достигла скорости реагирования на уровне миллисекунд, всегда оставаясь на шаг впереди злоумышленников. Phalcon Security в настоящее время поддерживает более 20 основных блокчейн-сетей, включая Ethereum, BSC и Arbitrum, обеспечивая всестороннюю, межцепочечную защиту безопасности для экосистемы DeFi.

Потеря Resupply в размере $10 миллионов и множество других инцидентов атак говорят нам о том, что в мире DeFi безопасность — это не опция, а необходимость для выживания.

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

Команда экспертов BlockSec готова провести всестороннюю оценку безопасности вашего проекта.

🔗 Phalcon Security:

https://blocksec.com/phalcon/security

🔗 Забронировать демонстрацию:

https://blocksec.com/expert-contact


Get Real-Time Protection with Phalcon Security

Audits alone are not enough. Phalcon Security detects attacks in real time and blocks threats mid-flight.

phalcon security
Глубокий анализ и размышления об инциденте атаки на протокол Resupply