От роста DeFi в 2019 году до его постепенной зрелости к 2024 году вопросы данных последовательно оставались ключевой проблемой для разработчиков. Это потому, что работа DeFi зависит от точных, актуальных данных on-chain, и качество данных непосредственно влияет на безопасность, эффективность и пользовательский опыт протоколов. Данные являются центральными для обмена ценностями и основой доверия протокола. Для смарт-контрактов данные выступают в качестве входных фактов, но сами смарт-контракты не могут активно проверить подлинность данных. Вместо этого они полностью зависят от данных, предоставленных внешними источниками. Этот характеристический момент означает, что если входные данные подвергнуты вмешательству или недостоверны, смарт-контракт их пассивно принимает, что потенциально может привести к системным рискам. Поэтому обеспечение децентрализации, надежности и удобства использования данных остается постоянной проблемой. Проблемы возникают из двух основных проблем: во-первых, большинство данных контролируются централизованными учреждениями или платформами; во-вторых, доступ к данным затруднен, поскольку обеспечение доверия на всем пути -- от источника до каналов передачи до конечного пункта -- представляет существенные проблемы.
Как мост между взаимодействием данных on-chain и off-chain, оракулы часто становятся основной целью атак. Как только оракул подвергается манипуляциям, злоумышленники могут использовать ложную информацию о ценах или рынке для осуществления масштабных экономических атак, таких как манипуляция оракулом и атаки с флеш-кредитами, которые часто происходили в 2021 и 2022 годах. Даже к 2024 году эта угроза сохраняется, как подчеркивают недавние инциденты, связанные с UwU Lend и Banana Gun. Эти события продолжают напоминать нам о том, что качество и безопасность данных оракула определяют успех или неудачу индивидуальных протоколов и прямо влияют на стабильность всей экосистемы DeFi.
Эта статья будет сосредоточена на применении оракулов в блокчейне, типах атак и методах предотвращения распространенных манипуляций оракулами. Она направлена на обучение читателей основным концепциям и важности оракулов, повышение осведомленности о безопасности и предоставление практических рекомендаций разработчикам по безопасной интеграции оракулов в смарт-контракты.
Оракул - это критический интерфейс между блокчейном и внешним миром. Он отвечает за импорт данных вне цепи блоков в блокчейн, таких как рыночные цены, информация о погоде или результаты событий, обеспечивая доступ смарт-контрактов к внешней информации. Учитывая врожденную закрытость блокчейнов, оракулы играют важную роль в областях, таких как DeFi, рынки прогнозирования, страхование и игры. Помимо преодоления ограничений блокчейна, оракулы облегчают взаимодействие смарт-контрактов и реальных данных, расширяя область применения технологии блокчейна. Однако оракулы также сталкиваются с определенными проблемами и сложностями:
Поняв основное определение и роль оракулов, мы кратко рассмотрим типы оракулов, их использование и риски безопасности, с которыми они сталкиваются.
Оракулы можно широко классифицировать по двум моделям реализации: централизованные и децентрализованные. Централизованные оракулы, такие как Oraclize, обычно полагаются на один источник данных для предоставления информации вне цепочки. Они объединяют аппаратные и программные решения, используя технологии, такие как TLSNotary и Android Proof, чтобы гарантировать точность данных. Эти оракулы отличаются высокой эффективностью и стабильной производительностью. Однако их зависимость от одного надежного источника подрывает децентрализованную природу блокчейна, вводит узкие места в одной точке и ограничивает масштабируемость, представляя вызовы как в области безопасности, так и в области расширяемости.
В отличие от централизованных оракулов, таких как Chainlink, приоритетными являются системная безопасность и прозрачность доверия. В архитектуре Chainlink сбор данных и проверка выполняются несколькими независимыми узлами, распределенными среди различных участников, что снижает риск единой точки отказа. Координируя работу цепочки и внешних операций, Chainlink обеспечивает разнообразие и надежность данных. Такой децентрализованный подход особенно эффективен в финансовых приложениях, улучшая стойкость оракула к атакам. Однако этот подход включает компромиссы в эффективности и стоимости, что делает его менее подходящим для случаев низкой частоты использования.
Важность децентрализованных оракулов заключается в уменьшении риска манипулирования источниками данных и предотвращении потенциальных злоупотреблений со стороны одной доверенной стороны. Децентрализация обеспечивает то, что оракулы больше не зависят от нескольких источников данных, а улучшение безопасности и надежности данных осуществляется через несколько распределенных узлов. Тем не менее, децентрализованные оракулы также сталкиваются с вызовами, такими как поддержание эффективных механизмов долгосрочного стимулирования и обеспечение общей стабильности сети оракулов. В дальнейшем мы рассмотрим риски безопасности, связанные с децентрализованными оракулами, и их потенциальные решения.
В операциях Oracle источник и метод передачи данных напрямую влияют на их безопасность и надежность. Оракулы получают данные из двух типов источников: вне цепи и в цепи. Происхождение и методы получения данных различаются между этими двумя подходами:
Оракулы на цепи и внецепевые оракулы
Выбор между внебиржевыми и внутриблокчейновыми источниками данных зависит от конкретных требований проекта и внутренних компромиссов каждого подхода. Разработчики должны тщательно оценить и решить связанные риски. Эта необходимость в балансе привела к продолжающимся исследованиям более безопасных и надежных методов обработки данных. В следующих разделах будет рассмотрены операционные принципы оракулов и их потенциальные уязвимости.
Этот раздел представляет упрощенный сценарий разработки, чтобы помочь читателям понять случаи использования оракулов в блокчейне. В фактической разработке смарт-контрактов на блокчейне существует несколько способов, с помощью которых смарт-контракт может получать данные о ценах от оракулов. Распространенные методы включают прямой вызов оракульного контракта или использование технологий, таких как Chainlink CCIP (Cross-Chain Interoperability Protocol). Основные различия между этими методами:
Здесь мы продемонстрируем использование прямого вызова контракта оракула. Представьте, что вы разработчик смарт-контрактов в экосистеме Ethereum, и вам нужно получить данные о цене ETH/USD, используя оракул в вашем контракте. Сначала вы бы определили интерфейс для подключения к контракту оракула и написали бы функцию для получения данных о цене.
Этот простой пример контракта показывает, как Ценовой потребитель
контракт извлекает данные о ценах в реальном времени и использует их для принятия решений. Это обеспечивает базовое понимание того, как смарт-контракты взаимодействуют с оракулами для доступа к данным о ценах. Далее мы проанализируем связанные риски с двух точек зрения:
С точки зрения внутреннего контракта, использующего оракулы, злоумышленники могут использовать низколиквидные рынки или маленькие биржи для манипулирования ценой ETH/USD через крупные сделки, вызывая необычные колебания цен. Поскольку некоторые оракулы полагаются на агрегацию данных с нескольких торговых платформ, эти аномальные колебания могут быстро распространиться на метод fetchPrice() PriceConsumer, приводя к искажению цены. Такая ситуация обычно возникает, когда источники данных оракулов слишком централизованы, а риски недостаточно разнообразны, что делает систему более уязвимой для манипуляций ценой.
С точки зрения внешнего контракта анализ должен учитывать различные сценарии применения. Предположим, что контракт PriceConsumer используется на платформе кредитования, где пользователи могут внести ETH в качестве залога для займа других активов. Атакующие сначала используют мгновенные займы для займа больших сумм средств и временно вносят эти средства в автоматические рыночные создатели (AMM) или другие пулы ликвидности. Если AMM имеет низкую глубину торговли, то быстрый вход большого количества одного актива в пул приведет к прямому скольжению цены.
В этом сценарии крупные транзакции злоумышленника изменяют цену, сообщаемую AMM, что затем отражается в искаженной цене оракула. После искажения цены злоумышленник может извлечь прибыль различными способами, например:
Как только злоумышленник завершает свои операции, он может немедленно вывести средства, восстановить цену AMM и погасить флеш-кредит с процентами, завершив процесс манипуляции.
Далее мы рассмотрим более глубокое обсуждение, анализируя конкретные случаи атак оракула, их методы и изучая их разрушительное влияние на протоколы DeFi и экосистемы on-chain, раскрывая основную логику и основные технические детали.
Хотя манипуляции на рынке и атаки на оракулы могут иметь похожие последствия, такие как искажение цен и потери активов, их методы и точки отказа различаются. Большинство потерь в пространстве блокчейн происходят из-за манипуляций на рынке, а не из-за врожденных конструктивных недостатков оракулов. Основные различия следующие:
Давайте проанализируем этот случай:
По сути, манипуляции на рынке достигаются путем изменения фактических рыночных цен, при этом оракулы верно отражают эти манипулированные цены, в то время как атаки на оракулов связаны с сообщением неверных цен, при этом рыночные цены остаются нормальными. После понимания различия между оракулами и манипуляцией цен на следующем этапе мы рассмотрим различия между получением данных внутри цепочки и за ее пределами, чтобы более полно понять, как оракулы передают данные.
Среди многочисленных случаев атак на оракулы распространены такие типы, как манипуляции с ценами, комбинированные с искажениями оракулов, ошибки данных вне цепочки и эксплуатация уязвимостей дизайна протокола. Ниже мы рассмотрим два типичных случая: инцидент манипуляции ценами UwU Lend, который показал уязвимость оракулов в цепочке перед злонамеренной манипуляцией, и отказ оракула вне цепочки Synthetix, который продемонстрировал глубокое влияние ошибок внешних данных на контракты в цепочке.
10 июня 2024 года платформа по предоставлению цифровых активов взаймы UwU Lend на основе цепочек EVM подверглась атаке, в результате которой был потерян около 19,3 миллиона долларов. Этот инцидент выявил потенциальные уязвимости в механизмах оракулов в протоколах DeFi.
UwU Lend использовал криптовалюту под названием sUSDE, цена которой определялась оракулом цены. Важной составляющей протокола кредитования была ответственность оракула за получение и предоставление точных ценовых данных, чтобы обеспечить основанные на справедливых и стабильных ценах ключевые операции, такие как кредитование и ликвидация. Однако этот важный механизм стал точкой входа для атаки.
Атакующий манипулировал рыночной ценой sUSDE, проводя крупномасштабные операции обмена в рамках пула ликвидности Curve Finance. Это действие исказило данные о цене, сгенерированные оракулом, на котором полагается UwU Lend. Используя завышенную стоимость sUSDE в качестве залога, атакующий извлекал другие активы из UwU Lend, что в конечном итоге привело к значительному истощению активов платформы.
Корневая причина этого инцидента заключалась в недостаточном уровне проектирования системы защиты от манипуляций оракула в UwU Lend. Эта уязвимость позволила злоумышленнику манипулировать рыночной ценой, искажать данные, предоставленные оракулом, и осуществлять целенаправленную атаку. Этот случай подчеркивает общий недостаток в децентрализованных финансовых платформах - недостаточные механизмы защиты от манипуляций в оракулах, особенно в средах низкой ликвидности рынка, где такие риски более очевидны.
Строителем заметить сходство этого инцидента и атаки флеш-кредитов. Атаки флеш-кредитов обычно включают в себя создание ценовых аномалий путем значительных краткосрочных капитальных потоков, тем самым нарушая механизмы обратной связи ценовых данных, чтобы достичь арбитража активов или других зловредных целей. Это сходство еще раз подчеркивает важность надежных конструкций против манипуляций в оракулах, критических компонентов безопасности систем DeFi.
В будущем платформы DeFi должны сосредоточиться на таких стратегиях, как агрегация данных о ценах из нескольких источников, оптимизация частоты обновления цен и мониторинг аномальных цен при создании оракульных механизмов. Улучшение возможностей по борьбе с манипуляциями может сократить системные риски, вызванные отказами отдельных точек или волатильностью рынка.
25 июня 2019 года Synthetix, протокол ликвидности производных на Ethereum, столкнулся с критическим сбоем в своей системе настраиваемого оракула цен вне цепи, что привело к неожиданно высоким прибылям от одной транзакции. Synthetix полагался на конфиденциальные источники для получения своей ценовой информации, агрегируя и публикуя цены в цепи через фиксированные интервалы, чтобы предоставить пользователям торговые цены для долгосрочных или краткосрочных синтетических активов.
Однако один из ценовых каналов ошибочно сообщил обменный курс южнокорейской вон (KRW) в 1 000 раз превышающим его фактическое значение. Системе не удалось отфильтровать этот аномальный данные, что привело к принятию и публикации неверной цены on-chain. Торговый бот обнаружил эту ошибку и быстро осуществил операции купли-продажи на рынке sKRW, накапливая значительные прибыли за счет арбитража. Своевременное обнаружение проблемы командой позволило им договориться с трейдером, который вернул прибыль в обмен на вознаграждение за нахождение ошибки, избегая потенциальных убытков, превышающих 1 миллиард долларов.
Хотя команда Synthetix приняла меры по агрегации данных о ценах из нескольких источников для защиты от неточностей отдельного источника, этот инцидент подчеркнул врожденные риски внецепочных оракулов данных. Когда входные источники данных ошибаются, контракты на цепи не имеют представления о процессе расчета цены и поэтому не могут автоматически обнаружить аномалии.
Вышеуказанные случаи подчеркивают, что перед оракулами стоят не только проблемы точности источников данных, но и противодействие манипуляциям и безопасность интеграции данных вне цепи. Поэтому предотвращение атак на оракулы имеет первостепенное значение. Повышение безопасности, надежности и возможностей противодействия манипуляциям оракулов становится ключевым фактором при их проектировании и использовании. В этом разделе мы рассмотрим эффективные меры по борьбе с различными типами атак и укреплению общей безопасности систем оракулов.
Анализ случая: В инциденте манипулирования ценами UwU Lend злоумышленники успешно манипулировали оракулом цен UwU Lend, влияя на цену sUSDE в пуле Curve Finance. Злоупотребляя уязвимостью манипулирования ценами, злоумышленники извлекли активы, которые система не смогла правильно оценить. Если бы UwU Lend использовал несколько источников данных для определения цены sUSDE, система могла бы проверить цены через другие источники, снизив риск атаки.
Расширенный анализ: В этом инциденте произошло манипулирование ценами и выявились проблемы, связанные с недостаточной ликвидностью. Когда у токена недостаточно рыночной ликвидности, мелкая глубина торговли делает его цену легко поддающейся влиянию небольшим количеством сделок, тем самым увеличивая уязвимость оракула. Следовательно, при запуске новых токенов команды проекта должны тщательно оценить рыночную ликвидность, чтобы предотвратить искажение цен и связанные с этим риски безопасности. Например, протоколы кредитования, такие как Aave, Kamino и Scallop, накладывают более строгие ограничения на токены с низкой ликвидностью в своих дизайнах, чтобы обеспечить стабильность и безопасность рынка.
Метод оптимизации: Для обеспечения точности данных протоколы должны принять мульти-источниковую стратегию, включая несколько децентрализованных оракулов, таких как Chainlink или Band Protocol, для агрегации данных из различных бирж или пулов ликвидности. Такой подход снижает риск на системную безопасность в случае манипуляции любым одиночным источником данных.
Анализ случая: сбой оракула Synthetix вне цепи показал риски ошибок в источниках данных вне цепи. В этом инциденте была сообщена неправильная цена корейской воны (KRW), позволяющая торговому боту использовать ошибку для арбитража. Если бы Synthetix использовал децентрализованный агрегатор данных, другие децентрализованные источники данных могли бы оперативно исправить проблему, даже если один источник данных вне цепи вышел из строя.
Подход к оптимизации: Подобно улучшениям в Uniswap V3, использование децентрализованных агрегаторов данных может повысить безопасность передачи данных. Используя криптографические протоколы (такие как TLS) и проверку подписей в сочетании с децентрализованными узлами ретрансляции, системы могут предотвращать атаки типа «злоумышленник посередине» и фальсификацию данных. Например, в оракуле Chainlink каждый источник данных проверяется несколькими независимыми узлами и защищается методами шифрования для обеспечения целостности и неизменности передаваемых данных.
Анализ случая: Множество инцидентов атак показывают недостатки модульного дизайна DeFi-протоколов, которые часто лишены достаточных защитных механизмов. Тщательное проектирование и создание независимых модулей позволяет предотвратить использование атакующими одной уязвимости для причинения катастрофического ущерба всей системе. Например, в случае сбоя оракула внецепных данных Synthetix, если бы разработчики заранее разработали модульную систему оповещения, можно было бы быстрее выявить и устранить аномальные данные.
Оптимизационный подход: Для повышения устойчивости к атакам разработчики могут применять слоистые архитектуры в процессе разработки и обеспечивать независимую работу каждого модуля (источник данных, логика проверки, модуль передачи). Например, как в Uniswap V3, хранение информации о ценах из разных пулов ликвидности в отдельных пулах наблюдения позволяет протоколу сравнивать цены в нескольких пулах, снижая риск манипуляций в любом отдельном пуле. В практической разработке такие техники, как инкапсуляция интерфейса и внедрение зависимостей, могут отделить модуль проверки данных от другой логики, обеспечивая гибкость и поддерживаемость системы.
В то время как большинство оракулов полагаются на статические меры обороны, смарт-контракты могут принять адаптивные стратегии защиты от высокодинамичных методов атаки. Например, отслеживая частоту аномальных ценовых флуктуаций, система может определить, происходит ли атака, и запустить дополнительные механизмы валидации или отката в ответ на такие аномалии. Этот адаптивный подход может автоматически защитить систему от потенциальных потерь во время внезапных ценовых манипуляций.
Практическое применение: Некоторые протоколы DeFi реализуют механизмы «пороговых сигналов», чтобы в режиме реального времени обнаруживать значительные колебания цен. Если колебание цены превышает установленный порог, система автоматически инициирует дополнительные процессы валидации или запускает откаты, чтобы предотвратить эскалацию манипуляций. Например, протокол Balancer использует порог отклонения цены; если цена обнаруживается чрезмерно высокой или низкой, он приостанавливает определенные транзакции до дальнейшего подтверждения правильности цены.
Развивая дискуссии об оптимизации проектирования и применения оракулов, мы можем исследовать конкретные решения в приложениях DeFi. Далее мы рассмотрим механизм временно-взвешенной средней цены в Uniswap V2 и его улучшения в V3.
Безопасность оракулов является ключевой проблемой для протоколов DeFi. Многие протоколы DeFi внедрили ценные инновации, чтобы эффективно предотвращать атаки на оракулы. Например, Uniswap предложил новые идеи для проектирования оракулов через оптимизацию генерации цен на цепочке и механизмы защиты. Сравнение Uniswap V2 и V3 демонстрирует, как технические улучшения могут улучшить возможности по борьбе с манипуляциями оракулов, предлагая четкий путь для безопасного проектирования смарт-контрактов.
Uniswap V2 впервые представил оракул TWAP (Time-Weighted Average Price), позволяющий разработчикам взаимодействовать с данными цен децентрализованных бирж (DEX) на цепи. TWAP - это оракул на цепи, который получает данные из собственных торговых данных Uniswap на цепи без использования внешних данных.
В UniswapV2Pair
контракт, the_update()
функция является основной частной функцией, ответственной за обновление резервов и накопителей цен для торговых пар. Ее основная цель - использовать накопитель цен, взвешенный по времени, чтобы помочь предотвратить атаки оракулов.
Основная идея этой функции заключается в ограничении возможности злоумышленника манипулировать ценами в определенный момент времени путем записи взвешенных по времени изменений цен для каждого блока. Конкретно, функция вычисляет разницу во времени (timeElapsed
) между текущим временем и последним обновлением, умножает эту разницу на текущую цену торговой пары, а затем прибавляет результат к коэффициентам-аккумуляторам (price0CumulativeLast
иprice1CumulativeLast
). Это накопление регистрирует временно взвешенную среднюю цену для сглаживания возможных колебаний цены. Поскольку цена накапливается в течение определенного периода времени, злоумышленникам потребуется постоянно действовать через несколько блоков, чтобы значительно изменить цену, тем самым увеличивая стоимость манипуляций.
Кроме того, функция обновляет накопители цен только в случае,timeElapsed
больше 0, что означает, что цена будет обновляться только один раз за блок. Этот дизайн ограничивает частоту операций злоумышленника в течение короткого периода времени. Чтобы эффективно манипулировать ценой, атакующим нужно будет непрерывно вмешиваться в течение нескольких блоков, а не одного блока, что дополнительно снижает вероятность манипуляции.
С точки зрения безопасности этот механизм надежный. Функция включает проверки переполнения, чтобы гарантировать, что максимальные значения резервов не превышают системные ограничения, а также накопленные расчеты цены также защищены от переполнения. Эти элементы дизайна значительно затрудняют внешнюю манипуляцию.
Однако у версии V2 оракула есть некоторые практические ограничения. Например, официальный контракт предоставляет только последние накопленные значения цен, требуя от разработчиков записывать и извлекать исторические данные о ценах, что создает более высокий технический барьер. Кроме того, V2 оракул не записывает непосредственно глубину торговой пары. Глубина торговой пары имеет большое значение для стабильности оракула в условиях атак - меньшая глубина облегчает манипуляции ценами.
Для устранения ограничений своего предшественника Uniswap улучшил функциональность оракула в своей версии V3. Контракты V3 сохраняют накопленные значения цен со временем и добавляют возможность хранения исторической информации о ценах, поддерживая до 65 535 записей. Это устраняет необходимость для разработчиков вручную хранить исторические данные.
Кроме того, оракул версии V3 записывает взвешенные по времени значения ликвидности для разных уровней комиссий. Это позволяет разработчикам выбирать пулы ликвидности с более высокими объемами в качестве источников ценовых ссылок, обеспечивая большую точность цены. Вся логика, связанная с оракулом, инкапсулирована в библиотеке Oracle, позволяющей контрактам автоматически записывать накопительную информацию о ценах и ликвидности для каждой транзакции без необходимости внешнего обслуживания пользователей.
Еще одним заметным улучшением является корректировка метода расчета цены. В Uniswap V2 вычисления TWAP были основаны на среднем арифметическом значении, в то время как V3 использует среднее геометрическое. По сравнению со средним арифметическим, среднее геометрическое обеспечивает большую стабильность в реализации и лучше подходит для сред с высокой волатильностью цен, что еще больше снижает риск манипуляций.
Атакующие оракулы включают организованные группы, независимых хакеров и потенциальных внутренних сотрудников, сотрудничающих с внешними сторонами. Такие атаки обычно связаны с умеренной технической сложностью, требующей у атакующих фундаментального понимания блокчейна и смарт-контрактов, а также конкретных навыков эксплуатации уязвимостей. По мере снижения технических барьеров сложность атак оракулов уменьшается, что позволяет хакерам с меньшим техническим опытом участвовать.
Атаки оракулов сильно зависят от автоматизации. Большинство злоумышленников используют автоматизированные инструменты для сканирования и анализа данных цепочки, быстро выявляя и эксплуатируя уязвимости безопасности, такие как колебания цен или задержки данных в оракулах. Например, арбитражные роботы и автоматические сценарии могут реагировать на изменения цен в течение миллисекунд, обеспечивая получение прибыли злоумышленниками до того, как рынок адаптируется. Поскольку блокчейн-сети продолжают децентрализоваться, эти автоматизированные методы становятся все более эффективными, делая атаки оракулов более точными и сложными для обнаружения.
В будущем надежность данных оракула и устойчивость к манипуляции, скорее всего, улучшатся благодаря широкому использованию стандартизованных механизмов ценообразования, таких как взвешенная по времени средняя цена (TWAP) и криптографически подписанные многократные источники проверки данных. Хотя это может снизить возможность атак на оракулы, могут возникнуть новые угрозы, особенно сложные методы, которые объединяют различные арбитражные техники для обхода проверок безопасности. Разработчикам DeFi необходимо оставаться бдительными, поскольку будущее безопасности оракулов зависит от непрерывного усовершенствования децентрализованных мер защиты данных и активной защиты от новых векторов атак.
В этой статье рассмотрена важная роль оракулов в системах DeFi и их уязвимости в области безопасности, а также проанализированы типы оракулов, приведены примеры разработки, изучены случаи из практики и предложены меры предотвращения. Анализ сосредоточен на двух ключевых аспектах: атаках на оракулы на основе флеш-кредитов и случайных атаках, возникающих из-за сбоев оракулов. В результате этого исследования мы продемонстрировали фундаментальную важность оракулов в архитектуре безопасности DeFi и их необходимость в устойчивости к манипуляциям, предоставив практические методы предотвращения атак на оракулы.
Отказ от ответственности: Содержание этой статьи предназначено только для справки и предназначено для обучения и обмена знаниями о атаках на оракулов. Оно не является руководством по фактическим операциям или инструктивными случаями.
Пригласить больше голосов
От роста DeFi в 2019 году до его постепенной зрелости к 2024 году вопросы данных последовательно оставались ключевой проблемой для разработчиков. Это потому, что работа DeFi зависит от точных, актуальных данных on-chain, и качество данных непосредственно влияет на безопасность, эффективность и пользовательский опыт протоколов. Данные являются центральными для обмена ценностями и основой доверия протокола. Для смарт-контрактов данные выступают в качестве входных фактов, но сами смарт-контракты не могут активно проверить подлинность данных. Вместо этого они полностью зависят от данных, предоставленных внешними источниками. Этот характеристический момент означает, что если входные данные подвергнуты вмешательству или недостоверны, смарт-контракт их пассивно принимает, что потенциально может привести к системным рискам. Поэтому обеспечение децентрализации, надежности и удобства использования данных остается постоянной проблемой. Проблемы возникают из двух основных проблем: во-первых, большинство данных контролируются централизованными учреждениями или платформами; во-вторых, доступ к данным затруднен, поскольку обеспечение доверия на всем пути -- от источника до каналов передачи до конечного пункта -- представляет существенные проблемы.
Как мост между взаимодействием данных on-chain и off-chain, оракулы часто становятся основной целью атак. Как только оракул подвергается манипуляциям, злоумышленники могут использовать ложную информацию о ценах или рынке для осуществления масштабных экономических атак, таких как манипуляция оракулом и атаки с флеш-кредитами, которые часто происходили в 2021 и 2022 годах. Даже к 2024 году эта угроза сохраняется, как подчеркивают недавние инциденты, связанные с UwU Lend и Banana Gun. Эти события продолжают напоминать нам о том, что качество и безопасность данных оракула определяют успех или неудачу индивидуальных протоколов и прямо влияют на стабильность всей экосистемы DeFi.
Эта статья будет сосредоточена на применении оракулов в блокчейне, типах атак и методах предотвращения распространенных манипуляций оракулами. Она направлена на обучение читателей основным концепциям и важности оракулов, повышение осведомленности о безопасности и предоставление практических рекомендаций разработчикам по безопасной интеграции оракулов в смарт-контракты.
Оракул - это критический интерфейс между блокчейном и внешним миром. Он отвечает за импорт данных вне цепи блоков в блокчейн, таких как рыночные цены, информация о погоде или результаты событий, обеспечивая доступ смарт-контрактов к внешней информации. Учитывая врожденную закрытость блокчейнов, оракулы играют важную роль в областях, таких как DeFi, рынки прогнозирования, страхование и игры. Помимо преодоления ограничений блокчейна, оракулы облегчают взаимодействие смарт-контрактов и реальных данных, расширяя область применения технологии блокчейна. Однако оракулы также сталкиваются с определенными проблемами и сложностями:
Поняв основное определение и роль оракулов, мы кратко рассмотрим типы оракулов, их использование и риски безопасности, с которыми они сталкиваются.
Оракулы можно широко классифицировать по двум моделям реализации: централизованные и децентрализованные. Централизованные оракулы, такие как Oraclize, обычно полагаются на один источник данных для предоставления информации вне цепочки. Они объединяют аппаратные и программные решения, используя технологии, такие как TLSNotary и Android Proof, чтобы гарантировать точность данных. Эти оракулы отличаются высокой эффективностью и стабильной производительностью. Однако их зависимость от одного надежного источника подрывает децентрализованную природу блокчейна, вводит узкие места в одной точке и ограничивает масштабируемость, представляя вызовы как в области безопасности, так и в области расширяемости.
В отличие от централизованных оракулов, таких как Chainlink, приоритетными являются системная безопасность и прозрачность доверия. В архитектуре Chainlink сбор данных и проверка выполняются несколькими независимыми узлами, распределенными среди различных участников, что снижает риск единой точки отказа. Координируя работу цепочки и внешних операций, Chainlink обеспечивает разнообразие и надежность данных. Такой децентрализованный подход особенно эффективен в финансовых приложениях, улучшая стойкость оракула к атакам. Однако этот подход включает компромиссы в эффективности и стоимости, что делает его менее подходящим для случаев низкой частоты использования.
Важность децентрализованных оракулов заключается в уменьшении риска манипулирования источниками данных и предотвращении потенциальных злоупотреблений со стороны одной доверенной стороны. Децентрализация обеспечивает то, что оракулы больше не зависят от нескольких источников данных, а улучшение безопасности и надежности данных осуществляется через несколько распределенных узлов. Тем не менее, децентрализованные оракулы также сталкиваются с вызовами, такими как поддержание эффективных механизмов долгосрочного стимулирования и обеспечение общей стабильности сети оракулов. В дальнейшем мы рассмотрим риски безопасности, связанные с децентрализованными оракулами, и их потенциальные решения.
В операциях Oracle источник и метод передачи данных напрямую влияют на их безопасность и надежность. Оракулы получают данные из двух типов источников: вне цепи и в цепи. Происхождение и методы получения данных различаются между этими двумя подходами:
Оракулы на цепи и внецепевые оракулы
Выбор между внебиржевыми и внутриблокчейновыми источниками данных зависит от конкретных требований проекта и внутренних компромиссов каждого подхода. Разработчики должны тщательно оценить и решить связанные риски. Эта необходимость в балансе привела к продолжающимся исследованиям более безопасных и надежных методов обработки данных. В следующих разделах будет рассмотрены операционные принципы оракулов и их потенциальные уязвимости.
Этот раздел представляет упрощенный сценарий разработки, чтобы помочь читателям понять случаи использования оракулов в блокчейне. В фактической разработке смарт-контрактов на блокчейне существует несколько способов, с помощью которых смарт-контракт может получать данные о ценах от оракулов. Распространенные методы включают прямой вызов оракульного контракта или использование технологий, таких как Chainlink CCIP (Cross-Chain Interoperability Protocol). Основные различия между этими методами:
Здесь мы продемонстрируем использование прямого вызова контракта оракула. Представьте, что вы разработчик смарт-контрактов в экосистеме Ethereum, и вам нужно получить данные о цене ETH/USD, используя оракул в вашем контракте. Сначала вы бы определили интерфейс для подключения к контракту оракула и написали бы функцию для получения данных о цене.
Этот простой пример контракта показывает, как Ценовой потребитель
контракт извлекает данные о ценах в реальном времени и использует их для принятия решений. Это обеспечивает базовое понимание того, как смарт-контракты взаимодействуют с оракулами для доступа к данным о ценах. Далее мы проанализируем связанные риски с двух точек зрения:
С точки зрения внутреннего контракта, использующего оракулы, злоумышленники могут использовать низколиквидные рынки или маленькие биржи для манипулирования ценой ETH/USD через крупные сделки, вызывая необычные колебания цен. Поскольку некоторые оракулы полагаются на агрегацию данных с нескольких торговых платформ, эти аномальные колебания могут быстро распространиться на метод fetchPrice() PriceConsumer, приводя к искажению цены. Такая ситуация обычно возникает, когда источники данных оракулов слишком централизованы, а риски недостаточно разнообразны, что делает систему более уязвимой для манипуляций ценой.
С точки зрения внешнего контракта анализ должен учитывать различные сценарии применения. Предположим, что контракт PriceConsumer используется на платформе кредитования, где пользователи могут внести ETH в качестве залога для займа других активов. Атакующие сначала используют мгновенные займы для займа больших сумм средств и временно вносят эти средства в автоматические рыночные создатели (AMM) или другие пулы ликвидности. Если AMM имеет низкую глубину торговли, то быстрый вход большого количества одного актива в пул приведет к прямому скольжению цены.
В этом сценарии крупные транзакции злоумышленника изменяют цену, сообщаемую AMM, что затем отражается в искаженной цене оракула. После искажения цены злоумышленник может извлечь прибыль различными способами, например:
Как только злоумышленник завершает свои операции, он может немедленно вывести средства, восстановить цену AMM и погасить флеш-кредит с процентами, завершив процесс манипуляции.
Далее мы рассмотрим более глубокое обсуждение, анализируя конкретные случаи атак оракула, их методы и изучая их разрушительное влияние на протоколы DeFi и экосистемы on-chain, раскрывая основную логику и основные технические детали.
Хотя манипуляции на рынке и атаки на оракулы могут иметь похожие последствия, такие как искажение цен и потери активов, их методы и точки отказа различаются. Большинство потерь в пространстве блокчейн происходят из-за манипуляций на рынке, а не из-за врожденных конструктивных недостатков оракулов. Основные различия следующие:
Давайте проанализируем этот случай:
По сути, манипуляции на рынке достигаются путем изменения фактических рыночных цен, при этом оракулы верно отражают эти манипулированные цены, в то время как атаки на оракулов связаны с сообщением неверных цен, при этом рыночные цены остаются нормальными. После понимания различия между оракулами и манипуляцией цен на следующем этапе мы рассмотрим различия между получением данных внутри цепочки и за ее пределами, чтобы более полно понять, как оракулы передают данные.
Среди многочисленных случаев атак на оракулы распространены такие типы, как манипуляции с ценами, комбинированные с искажениями оракулов, ошибки данных вне цепочки и эксплуатация уязвимостей дизайна протокола. Ниже мы рассмотрим два типичных случая: инцидент манипуляции ценами UwU Lend, который показал уязвимость оракулов в цепочке перед злонамеренной манипуляцией, и отказ оракула вне цепочки Synthetix, который продемонстрировал глубокое влияние ошибок внешних данных на контракты в цепочке.
10 июня 2024 года платформа по предоставлению цифровых активов взаймы UwU Lend на основе цепочек EVM подверглась атаке, в результате которой был потерян около 19,3 миллиона долларов. Этот инцидент выявил потенциальные уязвимости в механизмах оракулов в протоколах DeFi.
UwU Lend использовал криптовалюту под названием sUSDE, цена которой определялась оракулом цены. Важной составляющей протокола кредитования была ответственность оракула за получение и предоставление точных ценовых данных, чтобы обеспечить основанные на справедливых и стабильных ценах ключевые операции, такие как кредитование и ликвидация. Однако этот важный механизм стал точкой входа для атаки.
Атакующий манипулировал рыночной ценой sUSDE, проводя крупномасштабные операции обмена в рамках пула ликвидности Curve Finance. Это действие исказило данные о цене, сгенерированные оракулом, на котором полагается UwU Lend. Используя завышенную стоимость sUSDE в качестве залога, атакующий извлекал другие активы из UwU Lend, что в конечном итоге привело к значительному истощению активов платформы.
Корневая причина этого инцидента заключалась в недостаточном уровне проектирования системы защиты от манипуляций оракула в UwU Lend. Эта уязвимость позволила злоумышленнику манипулировать рыночной ценой, искажать данные, предоставленные оракулом, и осуществлять целенаправленную атаку. Этот случай подчеркивает общий недостаток в децентрализованных финансовых платформах - недостаточные механизмы защиты от манипуляций в оракулах, особенно в средах низкой ликвидности рынка, где такие риски более очевидны.
Строителем заметить сходство этого инцидента и атаки флеш-кредитов. Атаки флеш-кредитов обычно включают в себя создание ценовых аномалий путем значительных краткосрочных капитальных потоков, тем самым нарушая механизмы обратной связи ценовых данных, чтобы достичь арбитража активов или других зловредных целей. Это сходство еще раз подчеркивает важность надежных конструкций против манипуляций в оракулах, критических компонентов безопасности систем DeFi.
В будущем платформы DeFi должны сосредоточиться на таких стратегиях, как агрегация данных о ценах из нескольких источников, оптимизация частоты обновления цен и мониторинг аномальных цен при создании оракульных механизмов. Улучшение возможностей по борьбе с манипуляциями может сократить системные риски, вызванные отказами отдельных точек или волатильностью рынка.
25 июня 2019 года Synthetix, протокол ликвидности производных на Ethereum, столкнулся с критическим сбоем в своей системе настраиваемого оракула цен вне цепи, что привело к неожиданно высоким прибылям от одной транзакции. Synthetix полагался на конфиденциальные источники для получения своей ценовой информации, агрегируя и публикуя цены в цепи через фиксированные интервалы, чтобы предоставить пользователям торговые цены для долгосрочных или краткосрочных синтетических активов.
Однако один из ценовых каналов ошибочно сообщил обменный курс южнокорейской вон (KRW) в 1 000 раз превышающим его фактическое значение. Системе не удалось отфильтровать этот аномальный данные, что привело к принятию и публикации неверной цены on-chain. Торговый бот обнаружил эту ошибку и быстро осуществил операции купли-продажи на рынке sKRW, накапливая значительные прибыли за счет арбитража. Своевременное обнаружение проблемы командой позволило им договориться с трейдером, который вернул прибыль в обмен на вознаграждение за нахождение ошибки, избегая потенциальных убытков, превышающих 1 миллиард долларов.
Хотя команда Synthetix приняла меры по агрегации данных о ценах из нескольких источников для защиты от неточностей отдельного источника, этот инцидент подчеркнул врожденные риски внецепочных оракулов данных. Когда входные источники данных ошибаются, контракты на цепи не имеют представления о процессе расчета цены и поэтому не могут автоматически обнаружить аномалии.
Вышеуказанные случаи подчеркивают, что перед оракулами стоят не только проблемы точности источников данных, но и противодействие манипуляциям и безопасность интеграции данных вне цепи. Поэтому предотвращение атак на оракулы имеет первостепенное значение. Повышение безопасности, надежности и возможностей противодействия манипуляциям оракулов становится ключевым фактором при их проектировании и использовании. В этом разделе мы рассмотрим эффективные меры по борьбе с различными типами атак и укреплению общей безопасности систем оракулов.
Анализ случая: В инциденте манипулирования ценами UwU Lend злоумышленники успешно манипулировали оракулом цен UwU Lend, влияя на цену sUSDE в пуле Curve Finance. Злоупотребляя уязвимостью манипулирования ценами, злоумышленники извлекли активы, которые система не смогла правильно оценить. Если бы UwU Lend использовал несколько источников данных для определения цены sUSDE, система могла бы проверить цены через другие источники, снизив риск атаки.
Расширенный анализ: В этом инциденте произошло манипулирование ценами и выявились проблемы, связанные с недостаточной ликвидностью. Когда у токена недостаточно рыночной ликвидности, мелкая глубина торговли делает его цену легко поддающейся влиянию небольшим количеством сделок, тем самым увеличивая уязвимость оракула. Следовательно, при запуске новых токенов команды проекта должны тщательно оценить рыночную ликвидность, чтобы предотвратить искажение цен и связанные с этим риски безопасности. Например, протоколы кредитования, такие как Aave, Kamino и Scallop, накладывают более строгие ограничения на токены с низкой ликвидностью в своих дизайнах, чтобы обеспечить стабильность и безопасность рынка.
Метод оптимизации: Для обеспечения точности данных протоколы должны принять мульти-источниковую стратегию, включая несколько децентрализованных оракулов, таких как Chainlink или Band Protocol, для агрегации данных из различных бирж или пулов ликвидности. Такой подход снижает риск на системную безопасность в случае манипуляции любым одиночным источником данных.
Анализ случая: сбой оракула Synthetix вне цепи показал риски ошибок в источниках данных вне цепи. В этом инциденте была сообщена неправильная цена корейской воны (KRW), позволяющая торговому боту использовать ошибку для арбитража. Если бы Synthetix использовал децентрализованный агрегатор данных, другие децентрализованные источники данных могли бы оперативно исправить проблему, даже если один источник данных вне цепи вышел из строя.
Подход к оптимизации: Подобно улучшениям в Uniswap V3, использование децентрализованных агрегаторов данных может повысить безопасность передачи данных. Используя криптографические протоколы (такие как TLS) и проверку подписей в сочетании с децентрализованными узлами ретрансляции, системы могут предотвращать атаки типа «злоумышленник посередине» и фальсификацию данных. Например, в оракуле Chainlink каждый источник данных проверяется несколькими независимыми узлами и защищается методами шифрования для обеспечения целостности и неизменности передаваемых данных.
Анализ случая: Множество инцидентов атак показывают недостатки модульного дизайна DeFi-протоколов, которые часто лишены достаточных защитных механизмов. Тщательное проектирование и создание независимых модулей позволяет предотвратить использование атакующими одной уязвимости для причинения катастрофического ущерба всей системе. Например, в случае сбоя оракула внецепных данных Synthetix, если бы разработчики заранее разработали модульную систему оповещения, можно было бы быстрее выявить и устранить аномальные данные.
Оптимизационный подход: Для повышения устойчивости к атакам разработчики могут применять слоистые архитектуры в процессе разработки и обеспечивать независимую работу каждого модуля (источник данных, логика проверки, модуль передачи). Например, как в Uniswap V3, хранение информации о ценах из разных пулов ликвидности в отдельных пулах наблюдения позволяет протоколу сравнивать цены в нескольких пулах, снижая риск манипуляций в любом отдельном пуле. В практической разработке такие техники, как инкапсуляция интерфейса и внедрение зависимостей, могут отделить модуль проверки данных от другой логики, обеспечивая гибкость и поддерживаемость системы.
В то время как большинство оракулов полагаются на статические меры обороны, смарт-контракты могут принять адаптивные стратегии защиты от высокодинамичных методов атаки. Например, отслеживая частоту аномальных ценовых флуктуаций, система может определить, происходит ли атака, и запустить дополнительные механизмы валидации или отката в ответ на такие аномалии. Этот адаптивный подход может автоматически защитить систему от потенциальных потерь во время внезапных ценовых манипуляций.
Практическое применение: Некоторые протоколы DeFi реализуют механизмы «пороговых сигналов», чтобы в режиме реального времени обнаруживать значительные колебания цен. Если колебание цены превышает установленный порог, система автоматически инициирует дополнительные процессы валидации или запускает откаты, чтобы предотвратить эскалацию манипуляций. Например, протокол Balancer использует порог отклонения цены; если цена обнаруживается чрезмерно высокой или низкой, он приостанавливает определенные транзакции до дальнейшего подтверждения правильности цены.
Развивая дискуссии об оптимизации проектирования и применения оракулов, мы можем исследовать конкретные решения в приложениях DeFi. Далее мы рассмотрим механизм временно-взвешенной средней цены в Uniswap V2 и его улучшения в V3.
Безопасность оракулов является ключевой проблемой для протоколов DeFi. Многие протоколы DeFi внедрили ценные инновации, чтобы эффективно предотвращать атаки на оракулы. Например, Uniswap предложил новые идеи для проектирования оракулов через оптимизацию генерации цен на цепочке и механизмы защиты. Сравнение Uniswap V2 и V3 демонстрирует, как технические улучшения могут улучшить возможности по борьбе с манипуляциями оракулов, предлагая четкий путь для безопасного проектирования смарт-контрактов.
Uniswap V2 впервые представил оракул TWAP (Time-Weighted Average Price), позволяющий разработчикам взаимодействовать с данными цен децентрализованных бирж (DEX) на цепи. TWAP - это оракул на цепи, который получает данные из собственных торговых данных Uniswap на цепи без использования внешних данных.
В UniswapV2Pair
контракт, the_update()
функция является основной частной функцией, ответственной за обновление резервов и накопителей цен для торговых пар. Ее основная цель - использовать накопитель цен, взвешенный по времени, чтобы помочь предотвратить атаки оракулов.
Основная идея этой функции заключается в ограничении возможности злоумышленника манипулировать ценами в определенный момент времени путем записи взвешенных по времени изменений цен для каждого блока. Конкретно, функция вычисляет разницу во времени (timeElapsed
) между текущим временем и последним обновлением, умножает эту разницу на текущую цену торговой пары, а затем прибавляет результат к коэффициентам-аккумуляторам (price0CumulativeLast
иprice1CumulativeLast
). Это накопление регистрирует временно взвешенную среднюю цену для сглаживания возможных колебаний цены. Поскольку цена накапливается в течение определенного периода времени, злоумышленникам потребуется постоянно действовать через несколько блоков, чтобы значительно изменить цену, тем самым увеличивая стоимость манипуляций.
Кроме того, функция обновляет накопители цен только в случае,timeElapsed
больше 0, что означает, что цена будет обновляться только один раз за блок. Этот дизайн ограничивает частоту операций злоумышленника в течение короткого периода времени. Чтобы эффективно манипулировать ценой, атакующим нужно будет непрерывно вмешиваться в течение нескольких блоков, а не одного блока, что дополнительно снижает вероятность манипуляции.
С точки зрения безопасности этот механизм надежный. Функция включает проверки переполнения, чтобы гарантировать, что максимальные значения резервов не превышают системные ограничения, а также накопленные расчеты цены также защищены от переполнения. Эти элементы дизайна значительно затрудняют внешнюю манипуляцию.
Однако у версии V2 оракула есть некоторые практические ограничения. Например, официальный контракт предоставляет только последние накопленные значения цен, требуя от разработчиков записывать и извлекать исторические данные о ценах, что создает более высокий технический барьер. Кроме того, V2 оракул не записывает непосредственно глубину торговой пары. Глубина торговой пары имеет большое значение для стабильности оракула в условиях атак - меньшая глубина облегчает манипуляции ценами.
Для устранения ограничений своего предшественника Uniswap улучшил функциональность оракула в своей версии V3. Контракты V3 сохраняют накопленные значения цен со временем и добавляют возможность хранения исторической информации о ценах, поддерживая до 65 535 записей. Это устраняет необходимость для разработчиков вручную хранить исторические данные.
Кроме того, оракул версии V3 записывает взвешенные по времени значения ликвидности для разных уровней комиссий. Это позволяет разработчикам выбирать пулы ликвидности с более высокими объемами в качестве источников ценовых ссылок, обеспечивая большую точность цены. Вся логика, связанная с оракулом, инкапсулирована в библиотеке Oracle, позволяющей контрактам автоматически записывать накопительную информацию о ценах и ликвидности для каждой транзакции без необходимости внешнего обслуживания пользователей.
Еще одним заметным улучшением является корректировка метода расчета цены. В Uniswap V2 вычисления TWAP были основаны на среднем арифметическом значении, в то время как V3 использует среднее геометрическое. По сравнению со средним арифметическим, среднее геометрическое обеспечивает большую стабильность в реализации и лучше подходит для сред с высокой волатильностью цен, что еще больше снижает риск манипуляций.
Атакующие оракулы включают организованные группы, независимых хакеров и потенциальных внутренних сотрудников, сотрудничающих с внешними сторонами. Такие атаки обычно связаны с умеренной технической сложностью, требующей у атакующих фундаментального понимания блокчейна и смарт-контрактов, а также конкретных навыков эксплуатации уязвимостей. По мере снижения технических барьеров сложность атак оракулов уменьшается, что позволяет хакерам с меньшим техническим опытом участвовать.
Атаки оракулов сильно зависят от автоматизации. Большинство злоумышленников используют автоматизированные инструменты для сканирования и анализа данных цепочки, быстро выявляя и эксплуатируя уязвимости безопасности, такие как колебания цен или задержки данных в оракулах. Например, арбитражные роботы и автоматические сценарии могут реагировать на изменения цен в течение миллисекунд, обеспечивая получение прибыли злоумышленниками до того, как рынок адаптируется. Поскольку блокчейн-сети продолжают децентрализоваться, эти автоматизированные методы становятся все более эффективными, делая атаки оракулов более точными и сложными для обнаружения.
В будущем надежность данных оракула и устойчивость к манипуляции, скорее всего, улучшатся благодаря широкому использованию стандартизованных механизмов ценообразования, таких как взвешенная по времени средняя цена (TWAP) и криптографически подписанные многократные источники проверки данных. Хотя это может снизить возможность атак на оракулы, могут возникнуть новые угрозы, особенно сложные методы, которые объединяют различные арбитражные техники для обхода проверок безопасности. Разработчикам DeFi необходимо оставаться бдительными, поскольку будущее безопасности оракулов зависит от непрерывного усовершенствования децентрализованных мер защиты данных и активной защиты от новых векторов атак.
В этой статье рассмотрена важная роль оракулов в системах DeFi и их уязвимости в области безопасности, а также проанализированы типы оракулов, приведены примеры разработки, изучены случаи из практики и предложены меры предотвращения. Анализ сосредоточен на двух ключевых аспектах: атаках на оракулы на основе флеш-кредитов и случайных атаках, возникающих из-за сбоев оракулов. В результате этого исследования мы продемонстрировали фундаментальную важность оракулов в архитектуре безопасности DeFi и их необходимость в устойчивости к манипуляциям, предоставив практические методы предотвращения атак на оракулы.
Отказ от ответственности: Содержание этой статьи предназначено только для справки и предназначено для обучения и обмена знаниями о атаках на оракулов. Оно не является руководством по фактическим операциям или инструктивными случаями.