Атака на оракул: как в DeFi подделывают цену актива — и почему TWAP не спасает

22 мин. чтения
Bybit
SpaceX за крипту
Дробные доли · 24/7
Открыть рынок →

Коротко (TL;DR)

Смарт-контракт не умеет смотреть на биржевой график. Цену ему приносит отдельный механизм — оракул. Если атакующий сумеет подсунуть туда неправильное число хотя бы на один блок, протокол сам отдаст ему чужие деньги: выдаст заём под завышенный залог или ликвидирует здоровую позицию как проблемную.

Главное, что стоит вынести:

  • Атака не ломает код. Контракт отрабатывает ровно так, как написан — просто на ложных входных данных.
  • Спотовая цена из одного пула ликвидности — фатальная ошибка проектирования. Она позволяет сделать всё в одной транзакции, а капитал взять флеш-займом.
  • Усреднение цены за окно (TWAP) поднимает цену атаки, но не закрывает вопрос: по расчётам исследователей ETH Zurich стоимость растёт как квадратный корень от длины окна, а не линейно.
  • В 2026 году профиль угрозы сменился: крупнейшая атака года — не манипуляция рынком, а компрометация ключа того, кто подписывает цену.
  • Вкладчику надо смотреть не на слово «оракул» в документации, а на три вещи: откуда берётся цена, есть ли ограничители отклонения и что происходит при зависании фида.

Что такое ценовой оракул и почему он — слабое место

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

Звучит буднично, пока не посмотреть, что на этом числе держится. Кредитный протокол по нему решает, кого ликвидировать. Площадка бессрочных контрактов — кто в прибыли. Синтетические активы — сколько токенов выпустить. Одно число управляет всеми деньгами в контракте.

Bybit · Rewards Hubдо $30,100Внеси депозит, торгуй 14 дней — и забери награды в Rewards HubЗабрать бонус →

OWASP выделяет манипуляцию оракула в отдельную позицию своего рейтинга уязвимостей смарт-контрактов — SC02:2025. Формулировка предельно короткая: это уязвимость контрактов, которые полагаются на внешние источники данных, и «если данные оракула искажены, это приводит к некорректному поведению контракта».

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

Как устроена атака: три шага

Классический сценарий, который аналитики Chainalysis описывают как типовой, состоит из трёх движений.

Шаг 1. Разгон. Атакующий вбрасывает крупную сумму в торговлю низколиквидным токеном — обычно прямо в тот пул, откуда протокол берёт цену. В тонком пуле даже умеренная покупка сдвигает котировку на десятки процентов. Рынок в целом этого не заметил, а конкретный пул уже показывает другую цену.

Шаг 2. Извлечение. Пока цена искажена, атакующий совершает нужное действие: занимает под раздутый залог, забирает прибыль по позиции или ликвидирует чужую.

Шаг 3. Возврат. Цена отпускается обратно. Токены, купленные на первом шаге, продаются — часть денег возвращается.

Отдельного разговора заслуживает капитал. Раньше для первого шага нужны были собственные миллионы. Флеш-займ это требование снял: он позволяет занять огромную сумму без залога при одном условии — вернуть в той же транзакции. Как отмечают исследователи безопасности Nethermind, атакующий вливает эту ликвидность в пул децентрализованной биржи, создаёт временное расхождение цен и извлекает из него стоимость.

SpaceX · xStockSpaceX — частная компания. Торгуй её токеном на Bybit за крипту.Торговать SpaceX →

Именно связка «атомарная транзакция + флеш-займ» превратила теоретическую уязвимость в массовую практику. Один из ранних примеров: 26 октября 2020 года атакующий вывел $34 млн из Harvest Finance примерно за семь минут.

Два сценария: занять лишнее и ликвидировать чужое

Работа ETH Zurich формально разделяет атаки на кредитный протокол на два типа — и защищаются от них по-разному.

Атака на недообеспеченный заём. Атакующий играет роль заёмщика и завышает цену залога. Числовой пример из той же работы: при коэффициенте обеспечения 0,8 и рыночной цене ETH в $3000 под 1 ETH можно занять $2400. Подняв цену до $4000, заёмщик получает уже $3200 — и не возвращает их. Разница в $200 на единицу залога и есть прибыль, если стоимость разгона цены оказалась меньше.

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

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

Сколько стоит подделать цену

Экономика — единственное, что реально ограничивает атакующего. Разгон цены стоит денег: чем толще пул, тем дороже его сдвинуть. Атака имеет смысл, только если добыча больше расходов на манипуляцию.

Отсюда первое практическое правило: опасность создаёт не сам оракул, а тонкая ликвидность залогового актива. Протокол может использовать безупречный источник цены и всё равно быть уязвимым, если принимает в залог токен, чей пул можно двинуть на сотню тысяч долларов.

Chainlink в своей документации формулирует это прямо и перекладывает ответственность на разработчика: активы с высоким рыночным риском, «в частности низколиквидные», наиболее уязвимы для манипуляции, и учитывать это обязан тот, кто встраивает фид, а не оператор узлов.

Спот, TWAP и почему «поставили TWAP» — не ответ

Ответ индустрии на атомарные атаки — усреднение. Вместо мгновенной цены протокол берёт средневзвешенную по времени за окно (TWAP). Логика такая: чтобы сдвинуть среднее за 135 блоков, манипуляцию придётся удерживать все 135 блоков, оплачивая арбитражёрам возможность возвращать цену на место каждый блок. Дорого — значит невыгодно.

Индустриальные разборы до сих пор подают это как решение: 30-минутный TWAP, пишут в ChainScore Labs, требует удерживать цену крупного пула всю эту длительность, и такая стоимость «часто запретительна».

Однако есть результат, который в популярные гайды почти не попал. Исследователи ETH Zurich (Mackinga, Nadahalli, Wattenhofer) показали два способа обойти эту логику:

  1. Одноблочная атака. Вместо того чтобы держать отклонение ε все LT блоков, атакующий один раз двигает цену на LT·ε — среднее получается тем же. Для окна в 135 блоков точка безубыточности — ε = 0,574: при больших отклонениях одноблочная атака дешевле многоблочной. Общий вывод авторов: стоимость манипуляции TWAP растёт как квадратный корень, а не линейно с длиной окна.
  2. Сговор с тем, кто предлагает блоки (MMEV). Если атакующий контролирует два блока подряд, манипуляция становится «на порядки дешевле известных атак».

Подчеркнём честно: это результат одной академической работы, и он спорит с рабочей посылкой индустрии. Мы приводим его не как установленный факт, а как аргумент, который стоит держать в голове: фраза «у нас TWAP» не является ответом на вопрос о безопасности. Правильный вопрос — какое окно, какая ликвидность пула и что происходит при резком отклонении.

Есть и вторая цена усреднения, о которой говорят реже. Чем длиннее окно, тем сильнее оракул отстаёт от реального рынка. На обвале протокол с длинным TWAP видит вчерашнюю цену и не ликвидирует позиции вовремя — так рождается безнадёжный долг. Между устойчивостью к манипуляции и свежестью данных приходится выбирать, бесплатного варианта нет.

И ещё один довод из работы ETH Zurich, который редко проговаривают: против медленной многоблочной атаки у команды есть время заметить неладное и остановить протокол. Против одноблочной времени нет вообще — оракул отдаёт искажённую цену уже в следующем блоке.

Второй класс отказа: когда врёт не рынок, а сам фид

Всё описанное выше — манипуляция рынка. Атакующий честно торгует, просто в масштабе, который ломает котировку. Но 2026 год вывел на первый план другой класс отказа, и путать их нельзя, потому что защита разная.

Крупнейшая оракульная атака года — Ostium, площадка бессрочных контрактов на реальные активы. 15 июля 2026 года из хранилища на Arbitrum вывели около $18 млн в USDC при общем объёме заблокированных средств порядка $37,8 млн — почти половину. Мы писали об этом инциденте сразу после остановки торгов.

Механика оказалась принципиально иной. Никакой рынок не двигали. Атакующий контролировал скомпрометированный ключ подписанта и пользовался двумя привилегиями сразу: зарегистрированным форвардером, который мог сам исполнять ордера, и правом выпускать ценовые отчёты с отметками времени из будущего. Дальше он отправил подделанные отчёты, из-за которых убыточные сделки выглядели прибыльными, и прогнал около двадцати зацикленных операций. Каждый цикл выплачивал из хранилища как за настоящую рыночную прибыль.

Разница принципиальная. В классической атаке поверхность — глубина ликвидности; закрывается она выбором источника цены и ограничителями. Здесь поверхность — управление ключами, и никакой TWAP от неё не защищает.

Что это не случайность, видно по общей картине: в отчёте CertiK за первое полугодие 2026 года компрометация кошельков и ключей стала самой дорогой категорией — $444,5 млн на 33 инцидента.

Что показал 2026 год: леджер инцидентов

Теперь к цифрам, которых в большинстве англоязычных гайдов нет: они до сих пор оперируют статистикой 2022 года.

По ончейн-подсчёту DEXTools на 16 июля 2026 года, за год зафиксировано 12 оракульных эксплойтов примерно на $46,3 млн — около 4,6% от порядка $1,0 млрд, потерянных DeFi за 2026-й.

ПротоколПотериТехника
Ostium$18,0 млнКомпрометация ключа подписанта
Blend Pools V2$11,0 млнМанипуляция ценового оракула
Bonzo Lend$10,1 млнМанипуляция ценового оракула
Makina$4,2 млнФлеш-займ + оракул
Aave V3$0,9 млнОшибка настройки фида (CAPO)
Edel Finance$0,4 млнФлеш-займ + оракул
Прочие (6 инцидентов)$1,7 млнVelar, Ploutos, Singularity, Stake DAO и др.
Оракульные эксплойты 2026 года по сумме потерь

Из этой таблицы видно то, что не читается из заголовков. Классическая флеш-займ атака ушла в мелкий калибр: Makina и Edel вместе — $4,6 млн. Крупные суммы теперь приносят отказы инфраструктуры и ошибки конфигурации. Случай Aave V3 показателен отдельно: $0,9 млн потеряно не из-за атаки на рынок, а из-за неверно настроенного ограничителя.

Для контекста: общие потери Web3 в первом полугодии 2026 года составили $1,315 млрд на 344 инцидента. Формально это на 46,8% меньше, чем годом раньше, но сравнение обманчиво — H1 2025 определялся разовым взломом Bybit на $1,45 млрд. Без него база сопоставима, и текущий период оказывается примерно на 28% выше. Второй квартал 2026-го стал самым «взламываемым» кварталом в истории базы DefiLlama — 99 инцидентов.

Оракулы, таким образом, не главный по деньгам вектор. Но один из самых упорных: 12 инцидентов за неполный год при том, что и механика атаки, и защита от неё известны с 2020-го.

Отдельная цифра, полезная для оценки последствий. По данным DefiLlama, корреляция между украденной суммой и оттоком средств из протокола за 30 дней близка к нулю: потерявший $250 тыс. теряет примерно ту же долю депозитов, что потерявший $25 млн. Из 59 исторических взломов подавляющее большинство протоколов удержало менее 10% довзломного объёма. Иными словами, размер дыры почти не влияет на исход — влияет сам факт.

Как защищается протокол

OWASP в разборе SC02:2025 предписывает четыре меры:

  1. Агрегировать данные нескольких независимых оракулов — чтобы один искажённый источник не решал исход.
  2. Задать минимальный и максимальный порог цены — резкий скачок за границы коридора отвергается.
  3. Ввести временную задержку между обновлениями — мгновенная подмена перестаёт работать.
  4. Требовать криптографические подписи доверенных сторон — подтверждение подлинности данных.

Chainlink формулирует свою позицию жёстче, чем принято думать. В официальной документации прямо сказано: разработчики, встраивающие фиды, «несут исключительную ответственность» за внедрение мер снижения риска — проверок качества данных, предохранителей и резервной логики. Сами фиды разделены на категории по уровню рыночного риска: от низкого до очень высокого, плюс отдельные метки для новых токенов и кастомных фидов. То есть «мы взяли Chainlink» — это тоже не ответ, если взят фид категории высокого риска и без ограничителей.

Про предохранитель (circuit breaker) стоит сказать отдельно, потому что это самая недооценённая мера. Идея простая: контракт следит за отклонением новой цены от предыдущей и, если порог пробит, автоматически ставит протокол на паузу. У Chainlink есть готовый шаблон с двумя триггерами — на событие обновления цены и периодический по расписанию. Аудиторы 0xMacro отмечают, что многие разработчики просто не знали о такой возможности, пока им на неё не указывали.

Практический чек-лист для команды протокола:

  • Не читать спотовую цену из одного пула. Никогда.
  • Ограничить набор залоговых активов: тонкая ликвидность = дешёвая манипуляция.
  • Поставить коридор допустимого отклонения и паузу при его пробое.
  • Проверять свежесть данных: зависший фид опаснее отсутствующего, потому что выглядит рабочим.
  • Отдельно защищать ключи подписантов — это отказ, от которого дизайн оракула не спасает.
  • Помнить про аварийную остановку: против одноблочной атаки время реакции равно нулю, значит остановка должна быть автоматической.

Что может сделать обычный вкладчик

Здесь придётся быть честными: полностью проверить оракульный дизайн протокола человек без опыта чтения смарт-контрактов не сможет. Но отсеять самые опасные варианты — вполне.

Смотрите на залоговые активы, а не на протокол. Если площадка принимает в залог токены с тонкой ликвидностью, риск манипуляции встроен в неё by design, каким бы известным ни было имя.

Ищите ответ на три вопроса в документации. Откуда берётся цена (внешний фид или собственный пул)? Есть ли ограничитель отклонения и пауза? Что происходит, если фид перестал обновляться? Если в документации этого нет вообще — это сам по себе ответ.

Пользуйтесь публичными данными о рисках. У DefiLlama есть раздел риск-данных по отдельным хранилищам: там видно, чем обеспечен вклад, какова история инцидентов, как устроен мультисиг и какие зависимости у пула. Это не гарантия, но это заметно больше, чем «аудит пройден». Как напоминают сами аналитики DefiLlama, «пройден аудит» не означает «безопасно».

Не держите в протоколе больше, чем готовы потерять, и не дольше, чем нужно. Это звучит банально, но именно эта привычка отделяет неприятность от катастрофы. Средства, которые не работают прямо сейчас, логичнее держать в самостоятельном хранении — например, на аппаратном кошельке, где ключ не покидает устройство и не зависит от чужого смарт-контракта.

Помните про смежные векторы. Оракул — одна из внешних зависимостей протокола, но не единственная: мы разбирали, как работают атаки на доверенную инфраструктуру, где вредоносный код приходит по легитимному каналу поставки.

Остаточные риски: чего не закрывает ни одна из мер

Честно проговорим, где заканчивается защита — иначе чек-лист выше превращается в ложное чувство безопасности.

Риск компромисса между свежестью и устойчивостью. Он неустраним по определению. Длинное окно усреднения защищает от манипуляции, но на резком движении рынка показывает вчерашнюю цену — и протокол не ликвидирует позиции вовремя, накапливая безнадёжный долг. Короткое окно ловит рынок, но дешевле поддаётся подмене. Любая настройка — выбор, какой ценой платить.

Риск нулевого времени реакции. Против одноблочной атаки ручное вмешательство бесполезно: искажённая цена появляется в оракуле и используется в одном и том же блоке. Всё, что не автоматизировано, здесь не работает.

Риск ключей. Ни агрегирование источников, ни коридор отклонения, ни усреднение не защищают от того, кто легитимно подписывает цену. Ostium потерял почти половину хранилища именно так, а по данным CertiK компрометация кошельков и ключей — самая дорогая категория первого полугодия 2026 года ($444,5 млн на 33 инцидента).

Риск конфигурации. Инцидент с Aave V3 на $0,9 млн в 2026 году произошёл не из-за атаки на рынок, а из-за неверно настроенного ограничителя. Правильные механизмы, выставленные неправильно, создают ложную уверенность.

Риск невозврата. Возвраты в DeFi редки, а правовая перспектива, как показано ниже, не определена. Планировать участие стоит из допущения, что потерянное не вернётся.

Слабое место у всей конструкции общее: протокол может сделать всё правильно на своей стороне и остаться уязвимым из-за тонкой ликвидности принятого в залог актива или из-за чужой операционной ошибки.

Правовая сторона: преступление или «торговая стратегия»

Этот раздел обычно отсутствует в технических гайдах, а он существенно меняет расчёт рисков.

В октябре 2022 года Аврахам Эйзенберг вывел из Mango Markets на Solana активы, которые Chainalysis оценивает в $117 млн, а судебные репортажи — примерно в $110 млн. Схема была учебниковой: начав с $10 млн USDC на двух счетах, он разогнал цену токена MNGO (в день атаки объём торгов был на 2000% выше среднего за предыдущие десять дней) и занял под раздутый портфель практически всё, что было в протоколе.

Дальше начинается интересное. Эйзенберг публично назвал себя и настаивал, что это была «прибыльная торговая стратегия», а не преступление: код отработал ровно так, как написан. Присяжные с ним не согласились и вынесли обвинительный вердикт.

А 23 мая 2025 года суд Южного округа Нью-Йорка этот вердикт отменил. Обвинения по товарным статьям аннулированы из-за проблем с подсудностью, а по мошенничеству вынесено оправдание — суд не нашёл материально ложного утверждения, поскольку у Mango Markets, как сформулировано в разборе решения, попросту «не было правил, инструкций или запретов» относительно займов. Нельзя солгать площадке, которая ничего не требовала.

Дело не закрыто: прокуратура подала апелляцию, доказывая, что такое толкование «подорвало бы традиционное понимание мошенничества». На момент публикации спор не разрешён.

Практический вывод для вкладчика неприятный и его стоит проговорить прямо: рассчитывать на то, что деньги вернёт суд, не стоит. Правовая квалификация подобных атак в США остаётся неопределённой, а возвраты средств в DeFi, как показывает статистика, редки — в первом полугодии 2026 года из $1,315 млрд потерь заморожено и возвращено $115,3 млн, то есть менее девяти процентов.

FAQ

Чем манипуляция оракулом отличается от обычного взлома? Обычный взлом использует ошибку в коде — переполнение, неверную проверку прав, повторный вход. Манипуляция оракулом ничего не ломает: контракт исполняется штатно, но на подделанных входных данных. Поэтому такие случаи иногда и называют «не взломом», хотя деньги пропадают одинаково.

Защищает ли Chainlink от манипуляции полностью? Нет, и сам Chainlink этого не утверждает. В его документации прямо сказано, что все фиды несут некоторый риск, а ответственность за проверки качества данных, предохранители и резервную логику лежит на разработчике. Фиды разделены на категории по уровню рыночного риска — фид с высоким риском без ограничителей не спасёт.

Флеш-займ — это уязвимость? Сам по себе нет, это легитимный инструмент: заём без залога при условии возврата в той же транзакции. Он не создаёт уязвимость, а удешевляет её эксплуатацию — снимает требование к стартовому капиталу. Уязвимость находится в протоколе, который доверяет мгновенной цене из одного пула.

Может ли атака затронуть меня, если я просто внёс средства и ничего не делаю? Да. При атаке на ликвидацию цена залога занижается искусственно, и здоровая позиция ликвидируется как проблемная. Пользователь при этом не совершал ошибок и мог вообще не следить за рынком.

Что важнее проверить перед депозитом — аудит или оракул? Оракул и набор залоговых активов. Аудит фиксирует состояние кода на дату проверки и не отвечает за рыночные условия и управление ключами. Отчёт CertiK за первое полугодие 2026 года показывает, что растущая доля эксплойтов приходится на контракты старше года — то есть уже проверенные.

Стало ли безопаснее в 2026 году? По сопоставимой базе — нет. Потери первого полугодия 2026 года примерно на 28% выше эквивалентной базы 2025-го, если исключить разовый взлом Bybit, а второй квартал стал рекордным по числу инцидентов. Оракульные атаки при этом сместились: меньше классической манипуляции рынком, больше отказов инфраструктуры и ошибок настройки.

Bybit
$30,100 + $5,030
100 USDT в подарок
Получить →
Поделиться
Связаться:
Крипто- и data-аналитик, инженер-программист (факультет компьютерных наук ХНУРЭ). В IT с 2008 года: администрировал корпоративный мониторинг в «Vodafone Украина», семь лет разрабатывал и продвигал веб-проекты, пять лет руководил маркетингом на метриках — конверсия, CTR, ROI, LTV.Криптовалютными рынками занимаюсь с 2021 года: ончейн-метрики, токеномика, макроэкономические индикаторы. Разработал собственную data-driven модель анализа рынка на 30+ метрик. Стек — Python (pandas, NumPy, SciPy, matplotlib), математическая статистика и EDA; сбор и сверку данных автоматизирую AI-агентами.Принцип — «Don't trust, verify»: каждая цифра проверена по первоисточнику, ключевые — минимум по двум независимым; прогнозы — только сценарии с условиями. Тезис без данных не публикуется.