Только в образовательных целях; не является инвестиционным советом или инвестиционной рекомендацией. Инвестиции могут привести к убыткам.
Краткий ответ
Атака на оракул использует границу доверия к данным протокола: цена, обменный курс, индекс, стоимость чистых активов или статус заставляют протокол выполнить экономически небезопасное действие. Злоумышленник может манипулировать малоликвидной площадкой, скомпрометировать репортеров или ключи, воспользоваться правилами агрегирования или обновления либо совместить отсутствие у потребителя проверок свежести, единиц, диапазона и резервного источника с заемным капиталом. Устаревший или неверно настроенный фид способен причинить тот же ущерб без злонамеренного оператора оракула, поэтому при разборе инцидента нужно отделять путь атаки от режима отказа.
Решающее сравнение состоит не в том, насколько резко изменилась отображаемая цена, а в том, ниже ли стоимость и риск влияния на точное значение, которое потребляет контракт, чем исполнимая стоимость, доступная через заимствование, выпуск, погашение, расчет или ликвидацию. Мгновенная ликвидность может профинансировать атомарную последовательность, но не создает дефектную границу доверия и не обязательна для эксплуатации.
Значение оракула также не обязательно является исполнимой рыночной ценой. В каждой проверке его необходимо привязать к сети, блоку, адресу фида или пула, направлению базовой и котируемой валют, числу десятичных знаков, времени, методу агрегирования, размеру рынка и функции потребителя. Действительная подпись доказывает, кто передал данные по определенной схеме, но сама по себе не доказывает их свежесть, независимость источников, глубину рынка или экономическую корректность.
Как это работает
- Зафиксируйте развертывание: сеть, блок, контракт и функцию потребителя, контракты активов, прокси фида или пул, агрегатор, базовый и котируемый активы, десятичные знаки, администраторов и состояние обновления.
- Постройте полный путь доверия от бирж, пулов или репортеров через агрегирование, подписи, прокси или адаптер и резервный источник до логики потребителя; отмечайте общие площадки, операторов, ключи и управление, а не считайте разные названия независимыми источниками.
- Точно воспроизведите чтение из сети: ответ, метаданные раунда, время, доверительный показатель или статус, если применимо, нормализацию десятичных знаков, инверсию котировки, состояние секвенсора и льготный период, максимальный возраст, пределы отклонения и обработку нулевых или отрицательных значений.
- Составьте реестр экспозиции потребителя: коэффициент обеспечения, порог ликвидации, лимиты заимствования и предложения, доступную ликвидность, долг, лимиты выпуска или погашения, коэффициент закрытия, ликвидационный бонус и все действия, разрешенные значением.
- Моделируйте манипуляцию на исполнимом объеме с учетом резервов, активной ликвидности, наблюдений, окна и способа взвешивания, комиссий, арбитража, порядка блоков, мгновенного или собственного капитала, убытка при закрытии, газа, MEV и конкурирующих ликвидаторов.
- Проверьте средства защиты и состояния отказа: независимые источники, емкость наблюдений TWAP, лимиты, автоматические предохранители, полномочия приостановки, задержки, устаревший или расходящийся резервный источник, потерю репортера или ключа, простой секвенсора L2, реальные ценовые разрывы, а также открытый и закрытый режимы отказа.
- Отслеживайте и сверяйте канонические раунды фида, изменения прокси и конфигурации, расхождения источников, действия протокола, ликвидации, безнадежный долг, решения о приостановке и восстановлении; повторяйте анализ после изменений ликвидности, листинга, обновления или рыночного режима.
Спотовое показание AMM часто можно изменить в одной транзакции. Средневзвешенная по времени цена повышает стоимость, требуя влияния на несколько наблюдений, однако ее безопасность зависит от точной арифметической либо основанной на тиках методики, окна, емкости наблюдений, распределения ликвидности и контроля блоков. Медиана способна отсеять часть выбросов, но коррелированные исходные площадки или потеря кворума все равно угрожают безопасности либо доступности. Параметры периодичности и отклонения определяют публикацию некоторых фидов; потребителю по-прежнему нужна собственная политика свежести и допустимости.
Примеры расчета
- Спотовая цена постоянного произведения. Не учитываем комиссии в пуле с
1,000,000 ABCи1,000,000 USDC, гдеk = 10^12. Для целевой предельной цены9 USDC/ABCнужны резервы3,000,000 USDCи333,333.333333 ABC: трейдер вносит2,000,000 USDCи получает666,666.666667 ABC. Итоговая предельная цена равна3,000,000 / 333,333.333333 = 9, а средняя цена исполнения —2,000,000 / 666,666.666667 = 3 USDC/ABC. Напротив, ввод5,000,000 USDCоставляет резервы6,000,000и166,666.666667, создавая предельную цену36, а не9. Реальные комиссии, арбитраж, концентрированная ликвидность и закрытие позиции изменяют реестр. - Методика TWAP. Из десяти равных одноминутных наблюдений девять цен равны
100, а одна —160. Учебная арифметическая TWAP равна(9 * 100 + 160) / 10 = 106, всего на6%выше 100, хотя последняя спотовая цена выше на60%. Чтобы довести эту арифметическую среднюю до130, когда остальные девять наблюдений остаются на 100, манипулируемое наблюдение должно быть400. Среднее значение тика Uniswap v3 является геометрическим, а не таким арифметическим примером, поэтому потребитель обязан воспроизвести методику конкретного развертывания. - Медиана и кворум. Семь нормализованных наблюдений равны
[99, 100, 100, 101, 101, 500, 600]; их медиана —101, поэтому два экстремальных отчета не выводят результат за пределы честного кластера. Если для принятия нужны пять активных отчетов, а три честных репортера отключатся, останется лишь4 < 5: устойчивость к выбросам не гарантирует доступность, и поведение резервного источника становится частью модели безопасности. - Устаревание и ошибочная ликвидация. Фид с восемью десятичными знаками возвращает сырое значение
140,000,000,000, то есть1,400, но его возраст составляет17 minutesпри максимуме потребителя15 minutes, поэтому значение следует отклонить. Если устаревшую цену все же применить к10 ETH, порогу ликвидации75%и долгу12,000, фактор здоровья составит10 * 1,400 * 0.75 / 12,000 = 0.875; при свежей цене2,000он равен1.25. Последующее исправление цены не отменяет завершенную ликвидацию.
Риски
- Неверная сеть, актив, фид, прокси, пул или адрес потребителя.
- Обратное направление базового и котируемого активов либо несовместимая единица котировки.
- Неверная нормализация десятичных знаков фида, токена и внутреннего фиксированного формата.
- Принятие устаревших данных или ошибочное понимание периодичности и отклонения как гарантий свежести.
- Принятие незавершенных раундов, неверного статуса, нулевых, отрицательных, ограниченных или выходящих за диапазон ответов.
- Контроль крупной экспозиции протокола спотовой ценой одной малоликвидной площадки.
- Слишком короткое, разреженное, неверно взвешенное или прочитанное в обратном направлении окно TWAP.
- Неверное понимание емкости, инициализации, интерполяции наблюдений или резервного поведения.
- Концентрированная или мгновенно добавленная ликвидность искажает оценку стоимости атаки по номинальному TVL пула.
- Несколько фидов используют одни биржи, поставщиков данных, операторов, ключи или контур управления.
- Отказ репортера, биржи, API, подписанта, сети или кворума нарушает обновление либо целостность.
- Простой секвенсора L2 или отсутствие корректного льготного периода после восстановления.
- Резервный источник устарел, цикличен, коррелирован, иначе масштабирован или семантически несовместим.
- Мгновенная ликвидность и атомарная компонуемость делают временное влияние экономически применимым.
- Порядок обновления оракула, опережение, сэндвич, последующая сделка или ликвидационный MEV меняют выплаты.
- Коэффициенты обеспечения, пороги ликвидации, лимиты, бонусы и доступная ликвидность усиливают малую ошибку.
- Компрометация управления, администратора, хранителя, мультиподписи или ключа меняет путь доверия.
- Ошибка прокси, агрегатора, адаптера, обновления, хранилища или конфигурации выбирает неверное значение.
- Автоматический предохранитель или закрытый отказ блокирует законные займы, погашения либо ликвидации в стрессовый период.
- Ошибка приостановки, восстановления, сверки счетов, распределения безнадежного долга или сдерживания межпротокольного заражения.
Распространенные заблуждения
- «Каждая атака на оракул компрометирует сеть оракулов». Многие отказы эксплуатируют малоликвидный источник, устаревшее значение, неверные единицы, небезопасный адаптер или логику потребителя, пока сеть репортеров работает согласно настройкам.
- «Несколько или децентрализованные фиды гарантируют правильную цену». По-прежнему необходимы независимость и качество источников, кворум, свежесть, единицы, агрегирование и проверки потребителя.
- «TWAP делает манипуляцию невозможной». Она меняет длительность и стоимость влияния; слабое окно, редкие наблюдения, малая ликвидность или контроль блоков могут остаться уязвимыми.
- «Запрет мгновенных займов устраняет риск оракула». Мгновенный заем — лишь способ финансирования. Остаются собственный капитал, кредит, межпротокольные займы, компрометация репортера и ошибки конфигурации.
- «Восстановление цены отменяет ущерб». Канонические займы, выпуски, погашения, расчеты и ликвидации сохраняются без отдельной санкционированной процедуры восстановления.
Связанные темы
Источники
- SC03:2026 Price Oracle Manipulation - OWASP Smart Contract Security (дата обращения: 2026-08-13)
- Chainlink Data Feeds - Chainlink Documentation (дата обращения: 2026-08-13)
- Data Feeds API Reference - Chainlink Documentation (дата обращения: 2026-08-13)
- L2 Sequencer Uptime Feeds - Chainlink Documentation (дата обращения: 2026-08-13)
- Uniswap v2 Core - Uniswap Labs (дата обращения: 2026-08-13)
- Price Oracles - Uniswap Developers (дата обращения: 2026-08-13)
- Oracles - Aave Protocol Documentation (дата обращения: 2026-08-13)
- Flash Loans - Aave Protocol Documentation (дата обращения: 2026-08-13)