DeFi снова наступает на те же грабли: уязвимость с "зашитым" оракулом повторилась в четвертый раз за 14 месяцев

Автор: The Defiant Скомпилировано DeepChain TechFlow Shenchao Обзор: Материал посвящен не только инциденту в Resolv. Куда тревожнее то, что один и тот же сценарий — "жестко прописанный" оракул, который продолжает оценивать потерявший привязку стейблкоин в $1, — за последние 14 месяцев реализовывался как минимум четыре раза. Это не столько баг, сколько изъян модели "кураторов": риски остаются у вкладчиков, а вознаграждение забирают кураторы. В одно спокойное воскресное утро неизвестный превратил $100 000 в $25 млн примерно за 17 минут. Целью стал протокол доходного стейблкоина Resolv. До того как Resolv приостановил контракт, его "долларовый" стейблкоин USR обвалился до нескольких центов. На момент публикации USR по-прежнему сильно оторван от привязки и торгуется около $0,25 — падение более чем на 70% за неделю. Эффект не ограничился Resolv. Fluid/Instadapp за один день принял на себя свыше $10 млн проблемной задолженности и столкнулся с чистым оттоком более $300 млн — крупнейшим однодневным оттоком в истории платформы. Пострадали 15 хранилищ (vault) Morpho. Euler, Venus, Lista DAO и Inverse Finance после этого приостановили рынки, связанные с USR. Механизм, который распространил убытки — оценка депегнутого стейблкоина по $1 в кредитных рынках, — давно известен. За последние 14 месяцев подобное происходило как минимум четыре раза. Как сработала уязвимость Эмиссия USR устроена как двухшаговый офчейн-процесс: пользователь вносит USDC через функцию `requestSwap`, а привилегированный офчейн-ключ подписи `SERVICE_ROLE` подтверждает выпуск USR через `completeSwap`. В контракте есть ограничение на минимальный результат, но отсутствует верхняя граница — любая сумма, подписанная владельцем ключа, исполняется контрактом. Атакующий получил доступ к ключу через AWS Key Management Service Resolv. Затем он сделал два депозита USDC на общую сумму примерно $100 000–$200 000 и скомпрометированным ключом авторизовал выпуск 80 млн USR в обмен. Ончейн-данные фиксируют две операции — на 50 млн USR и 30 млн USR — обе прошли в течение нескольких минут. "Уязвимость Resolv USR — это не баг, а функция, работающая так, как задумано. В этом и проблема", — заявил ончейн-аналитик Vadim (@zacodil). По его словам, `SERVICE_ROLE` — обычный EOA-адрес, а не multisig. Админ-ключ защищен multisig, но ключ эмиссии — нет. "Resolv прошел 18 аудитов, и один из них нашел проблему с простым названием 'Missing Upper Bound'", — добавил он. Выход из позиции был организован аккуратно: сначала выпущенный USR конвертировали в wstUSR (застейканная завернутая версия), чтобы снизить рыночное воздействие, затем обменяли на ETH через Curve, Uniswap и KyberSwap. На кошельке атакующего около 11 400 ETH (примерно $24 млн). При этом пулы обеспечения в ETH и BTC, на которых держалась система, формально остались нетронутыми, несмотря на обвал стейблкоина. Как убытки распространились по рынку Инцидент в Resolv стал результатом совпадения двух факторов: уязвимости эмиссии и сбоя в кросс-маржинальном кредитовании. Когда USR и wstUSR рухнули, каждое кредитное направление, принимавшее их в залог, столкнулось с одинаковой проблемой: оракулы продолжали оценивать wstUSR почти по $1. Основатель компании по риск-аналитике Chaos Labs Омер Голдберг описал механизм: "Оракул жестко прописан и потому не переоценивается. wstUSR отмечен по $1,13, тогда как на вторичном рынке торгуется около $0,63". Трейдеры покупали wstUSR дешево на рынке, закладывали его в Morpho или Fluid, занимали USDC по оракульной цене $1,13 и выходили из позиции. В Fluid команда привлекла краткосрочный заем, чтобы закрыть 100% проблемных долгов, и пообещала полностью компенсировать потери пользователям. В Morpho, по словам сооснователя Пола Фрамбо, существенная экспозиция была примерно у 15 vault, которые использовали высокорисковые стратегии с "длиннохвостыми" активами в обеспечении. Известный куратор Gauntlet заявил: "Экспозиция к нескольким высокодоходным хранилищам ограничена". D2 Finance публично оспорил это, опубликовав ончейн-данные: флагманский "USDC Core Vault" Gauntlet разместил $4,95 млн в рынке wstETH/USDC. Позже Голдберг уточнил, что на vault Gauntlet приходится 98% ликвидности кредиторов на этом рынке. Фрамбо в письменном ответе The Defiant отметил: "Мы ищем способы более комплексно представлять различные риски. Но мы не считаем, что ключевая проблема — в недостатке маркировки". Он добавил: "Morpho оракул-агностичен: кураторы могут выбирать любой оракул, который считают подходящим для конкретного рынка. Morpho — открытая, не требующая разрешений инфраструктура, которая передает управление риском кураторам". По его словам, "сложно объективно навязать 'правильные' предохранители во всех сценариях", а ограничения на уровне протокола могут мешать легитимным стратегиям. Часть рынка считает, что кураторы свои обязанности не выполнили. "Я считаю, что дизайн индустрии кураторов дефектен, потому что реальной курации не происходит", — написал в X Марк Зеллер. На момент публикации Resolv, Gauntlet и Fluid не ответили на запрос The Defiant. Повторяющийся шаблон атак Это не первая подобная атака. В январе 2025 года USD0++ от Usual Protocol в vault Morpho был "зашит" по $1 куратором MEV Capital. Позже Usual без предупреждения снизил минимальную цену выкупа до $0,87, фактически "заперев" кредиторов в vault MEV Capital; утилизация хранилища подскочила до 100%. В ноябре 2025 года xUSD от Stream Finance рухнул после того, как куратор направил депозиты USDC в леверидж-циклы под обеспечение синтетическим стейблкоином; оракул отказался обновляться, и под риском оказались активы на $285–$700 млн в Morpho, Euler и Silo. Moonwell пережил два последовательных сбоя оракулов в октябре и ноябре 2025 года, что привело к проблемному долгу более чем на $5 млн. Что это означает для модели кураторов Архитектура Morpho делегирует решения по риску сторонним "кураторам": они собирают vault, выбирают обеспечение, задают LTV и определяют оракулы. Логика проста: профильные организации якобы лучше управляют риском, конкуренция повышает качество, а протокол лишь обеспечивает соблюдение правил. На практике кураторы зарабатывают комиссии от созданной доходности, поэтому заинтересованы принимать более рискованное, но более доходное обеспечение — например, доходные стейблкоины. При депеге потери несут вкладчики, а не кураторы. Во время инцидента Resolv, по данным статьи, у ряда кураторов автоматические боты продолжали подливать ликвидность в затронутые vault в течение часов после взлома, усиливая убытки. Использование "жестко прописанного" оракула для доходных стейблкоинов обычно объясняют желанием избежать лишних ликвидаций из-за краткосрочной волатильности. Такая защита работает только пока стейблкоин действительно стабилен. Chainalysis в послесобытийном разборе заявила, что необходимы возможности ончейн-детекта в реальном времени. "Ончейн-смарт-контракт работает идеально. Проблема очевидно лежит в более широком дизайне системы и офчейн-инфраструктуре", — отметила компания.