Автор Дэниел фон Фанге
Составил: angelilu, Foresight News
Вчера независимый исследователь Дэниел фон Фанге опубликовал на платформе X статью, в которой говорится, что Curve имеет риск манипулирования оракулом и что этот риск трудно обнаружить во время атаки. Манипулирование оракулом может привести к тому, что оракул сообщит ошибочные данные о внешних событиях или реальном мире, подвергая протоколы, подключенные к оракулу, риску манипуляции. Даниэль фон Фанге сказал, что соответствующие команды, которые могут быть затронуты, были уведомлены.
Основатель Curve Михаил Егоров отреагировал на проблему в сообществе, заявив: «Такой риск может существовать в старых версиях пулов. Старые версии пулов не используются в crvusd, и использование оракулов не рекомендуется». Даниэль также подтвердил свои замечания. Риск раскрытия информации фон Фанге вполне реален.
Однако участник Curve Фидди выразил недовольство тем, как независимый исследователь обнародовал эту информацию без обсуждения, и выступил с разъяснением, заявив, что уязвимости, раскрытые Дэниелом Фон Фанге, ранее обсуждались в частном порядке, но он считает, что злоумышленник хотел повысить точность. Стоимость повышения платы за газ высока, и внешний аудит также отнес это к низкому воздействию. А уязвимость, обнаруженная исследователем, связана со старым алгоритмом криптосвопа Curve, который использует цену Last_price, но новая реализация cryptoswap-ng использует цену состояния AMM, что может решить такие проблемы. Кроме того, yAuditDAO обнаружил некоторые ошибки оракулов, которые в настоящее время исправляются. Никто не использует эти оракулы, и LP (поставщики ликвидности) в этих торговых пулах стейблкоинов не затрагиваются.
Однако некоторые команды уже начали корректировать протокол для повышения безопасности с учетом раскрытых рисков. Разработчик Yearn Finance @storming0x также отреагировал на риски, раскрытые Дэниелом фон Фанге, заявив, что «контракты Yearn не затронуты, за исключением одного контракта, который использует механизм резервирования Chainlink для смягчения потенциальных путей атак. Из осторожности команда Yearn Development решила повторно развернуть новую версию».
Ниже приводится полный текст заявления Даниэля фон Фанге о риске манипулирования ценами в оракуле Curve:
За последние две недели я копался в ценовых предсказаниях Curve и обнаружил крайне необычное поведение.
Эти оракулы работают не так, как вы думаете, ими легче манипулировать, чем ожидалось, и при нормальных обстоятельствах они могут пойти не так.
Краткий обзор: в большинстве пулов злоумышленник может манипулировать ценовым оракулом Curve в 10–500 раз выше обычной цены всего за один блок. А манипуляцию можно скрыть, и когда вы посмотрите на бассейн, не останется никаких признаков манипуляций.
Пулов Curve много, и никто не может точно подсчитать количество баз кода в разных пулах.
То, что я пишу, может относиться, а может и не относиться к определенным пулам. Разные пулы имеют разные уязвимости. Возможно, в некоторых бассейнах нет дыр.
Команда Curve отлично справилась с получением отчета, его обсуждением и через несколько минут подтвердила, что эти проблемы не затронули CrvUSD.
Я также проверил около 100 контрактов в сети, в которых используются ценовые оракулы Curve, и при необходимости уведомил соответствующие команды.
Ключевая проблема этой уязвимости заключается в том, что значение Last_price может быть неверно рассчитано, если цена не близка к 1:1 или если комиссия за обработку высока.
Во-первых, комиссия не включается в расчет Last_price, что приводит к использованию другого числа, отличного от фактического баланса транзакции или пула.
Ценовой оракул EMA определяется Last_price. Если значение Last_price неверно, ценовой оракул начнет двигаться к неправильной целевой цене.
В обычной торговле я видел, как ценовые оракулы позиционировали цены, которые отклонялись более чем на один процент от фактической текущей цены в пуле. Наихудший сценарий может оказаться еще хуже (нормализованные цены на графике).
В зависимости от пула эта ошибка дрейфа может быть выше или ниже фактической цены.
Самая большая проблема заключается в том, что во время манипуляции ошибка Last_price может быть на порядок выше фактической манипулируемой цены, что значительно повышает вероятность эффективного манипулирования оракулом пула.
Даже крошечная транзакция может исправить отклонение окончательной цены/цены оракула, что приводит к некоторым нелепым ситуациям.
Даже крошечная транзакция может исправить отклонение окончательной цены/цены оракула, что приводит к некоторым нелепым ситуациям.
Благодаря наложенному эффекту больших колебаний цен и ошибок расчета Last_price злоумышленники могут манипулировать ценовым оракулом EMA в следующем блоке, не тратя огромных затрат на поддержание высоких цен в десятках блоков для борьбы с арбитражерами.
Теоретически злоумышленник может контролировать добычу двух последовательных блоков, что необходимо для выполнения этой операции. Злоумышленнику понадобится достаточный капитал для проведения такой ценовой атаки, но у многих прошлых злоумышленников на руках были десятки миллионов долларов.
На этом давайте поговорим об распространенных стратегиях защиты от манипулирования ценами оракула Curve и их эффективности.
В пуле Curve v1 есть четыре числа, которые можно использовать для обнаружения манипуляций: фактическая цена, цена оракула, цена Last_price и цена EMA. К сожалению, одна сделка по манипулированию ценой Price_oracle может сбросить все эти значения до одного и того же числа после одной манипуляции.
Price_scale пула Curve v2 сложнее манипулировать, чем ценовым оракулом. Он меняется медленнее и требует реальных затрат на комиссию за транзакцию. Если этот быстрый ценовой оракул соответствует медленному Price_scale, то ситуация стабильна, верно?
Нет! Основная проблема атаки заключается в сопоставлении трех чисел: реальной цены, быстрого оракула и медленного масштаба. Реальную цену легко контролировать, поскольку ею можно мгновенно манипулировать. Тогда проблемой становится проектирование пересечения двух других.
Злоумышленник ненадолго завышает цену, затем возвращается к нормальному состоянию на следующем блоке и ждет несколько блоков для атаки, пока оракул падающей цены не встретит растущую цену_шкалы. Фактическую цену нужно поддерживать только на высоком уровне, чтобы блока было достаточно, чтобы сбить с толку оракула, после чего последует цена_шкала.
Многие оракулы используют ограничение, ограничивая используемую ими цену от цены оракула Curve до максимального значения 1:1. Это приятно и исключает глупо высокие значения. Однако обратите внимание, что если актив действительно лишен привязки, злоумышленник может купить актив по низкой цене, а затем манипулировать им, чтобы создать видимость повторной привязки.
Протокол иногда устанавливает минимум, и если ответ оракула цены Curve падает ниже определенного процента от привязки, он будет игнорироваться. Но если вы игнорируете цену, когда актив действительно отделяется, вы теряете всю цель создания ценового оракула.
Другая распространенная стратегия — добавить цену еще одной системы AMM. Многое зависит от качества и эксплуатационных характеристик других бассейнов. Если он менее ликвиден и им легче манипулировать, это противоречит цели.
Плохо + Плохо = Плохо.
Другая распространенная стратегия — добавить цену еще одной системы AMM. Многое зависит от качества и эксплуатационных характеристик других бассейнов. Если он менее ликвиден и им легче манипулировать, это противоречит цели.
Плохо + Плохо = Плохо.
Новый пул Curve для торговых пар стейблкоин/стейблкоин внутренне ограничивает значение Last_price в 2 раза по сравнению со значением 1:1. Это предотвращает атаку блока, поскольку значение Last_price не может быть увеличено до слишком высоких значений, тем самым перегружая EMA.
Но было бы неправильно, если бы юридически были отделены не те активы.
Если вы хотите использовать пулы Curve для оценки залоговых активов, вам, вероятно, не следует этого делать.
Новые пулы обычно имеют более высокую стоимость атаки. Это может быть вариантом, если сфальсифицированный пул оказывает небольшое влияние на рынок (возможно, просто для защиты распределения доходов) и если атаки на моделирование пула обходятся дорого.
Наконец, автор рекомендует паре провести фактическое моделирование атак на используемые пулы. Моделируя атаки-манипуляции, вы сможете лучше понять, как пул будет работать в различных ситуациях.
На следующей диаграмме показан рост использования оракулов Curve за последние 90 дней:
В некоторых пулах Curve есть ценовые оракулы, которые работают хорошо, и я не могу заставить их вести себя странно, и они делают именно то, что я ожидал от хорошо работающих EMA. Но все равно надо проверить...
Все комментарии