НовостиКриптовалютыInjective потеряла $4,9 млн из-за эксплойта с коллизией ID рынков бинарных опционов

Injective потеряла $4,9 млн из-за эксплойта с коллизией ID рынков бинарных опционов

Автор: Metaverse Post·

Ключевые выводы

  • 31 августа злоумышленник exploited уязвимость расчётов бинарных опционов на Injective и похитил около $4,9 млн.
  • Эксплойт задействовал 299 созданных в пермиссионном режиме рынков бинарных опционов с контролируемыми атакующим оракулами, настроенными никогда не предоставлять цены, что позволило удваивать выводы через самосопоставленные сделки.
  • Первопричиной стала коллизия идентификаторов рынков из-за конкатенации полей без разделителей при генерации market_id, из-за которой страховой фонд в INJ совпал с рынком в USDC.
  • Валидаторы остановили цепочку Injective примерно на 3 часа 42 минуты, продвинувшись лишь на один блок и сохранив все исполненные сделки, вместо отката, как это сделал Cronos в недавнем инциденте.
  • Похищенные средства были переведены на Ethereum и консолидированы в виде примерно 1 980 ETH по адресу 0x5a18…69ea, тогда как Injective публиковала маркетинговый контент и не выпустила публичного заявления об инциденте во время остановки.
Injective потеряла $4,9 млн из-за эксплойта с коллизией ID рынков бинарных опционов

Injective, протокол блокчейна уровня 1, специализирующийся на децентрализованных финансах, 31 августа стала целью эксплойта, в результате которого через критическую уязвимость в системе расчётов бинарных опционов было похищено около $4,9 млн. Рынки бинарных опционов — где трейдеры делают ставки на исход «да/нет» по цене к заданному сроку экспирации — относятся к структурно наиболее сложным деривативам, которые может предлагать пермиссионный биржевой модуль, поскольку корректность расчётов зависит от взаимодействия доставки данных оракулом, логики возвратов и учёта страхового фонда без граничных ошибок.

Злоумышленник систематически злоупотреблял пермиссионным механизмом создания рынков, за 19 часов запустив 299 мгновенных рынков бинарных опционов, каждый из которых обслуживался контролируемым им самим оракулом, намеренно настроенным так, чтобы никогда не предоставлять цены. Символы оракулов были специально сконструированы для запуска пути возврата средств при отсутствии цены, а временные метки экспирации и расчётов разделялись считаными секундами.

A binary-options settlement bug has been exploited on @Injective according to @ErthlingPaddy. Attacker bridged ~$4.9M to Ethereum, the funds are unmoved. pic.twitter.com/fwnx6cQajJ — Defimon Alerts (@DefimonAlerts) September 1, 2026

Анализ цепочки показывает, что эксплойт основывался на самосопоставленных сделках между собственными субаккаунтами злоумышленника. Атакующий вносил залог, открывал лонг- и шорт-позиции по манипулированным ценам и использовал механизм возвратов, чтобы извлекать примерно вдвое больше внесённой суммы за цикл. В одной из задокументированных последовательностей примерно 105 000 USDC позволили вывести более 204 000 USDC. Полученные средства были затем переведены на Ethereum через CCTP, обменяны на ETH на Uniswap и консолидированы по адресу 0x5a18…69ea, где примерно 1 980 ETH — около $4,88 млн — оставались без движения на момент публикации.

Цепочка Injective была остановлена примерно на 3 часа 42 минуты — с блока 181 027 006 в 16:10 UTC до блока 181 027 007 в 19:52 UTC. Остановка цепочки — достигаемая путём координации валидаторов для приостановки производства блоков — является одним из немногих аварийных инструментов, доступных сетям на базе Cosmos SDK при активном эксплойте, но она сопряжена с собственными компромиссами, что иллюстрирует различие между реакцией Injective и Cronos. В отличие от Cronos, откатившего транзакции после недавнего инцидента, Injective продвинулась ровно на один блок через точку остановки, сохранив все исполненные сделки. Последняя попытка эксплойта провалилась лишь потому, что временная метка её расчётов истекла на фоне резко замедлившегося производства блоков, которое непосредственно перед вмешательством валидаторов упало до интервалов примерно в 38 минут.

Injective halted for ~4 hours today after a binary-options exploit drained multiple assets. In that window, the official @injective account posted twice — both marketing. "ICYMI our AI Agent SDK is live." "Bridge your ETH to Injective." Zero mention of the halt. No "funds are… — Paddy-earthling (@ErthlingPaddy) August 31, 2026

Технический изъян и критика за непрозрачность

Первопричина кроется в коллизии идентификаторов рынков в базовой логике Injective. Протокол генерирует market_id путём конкатенации oracleType, ticker, quoteDenom, oracleSymbol и oracleProvider без разделителей или префиксов длины. Эта схема хеширования позволила злоумышленнику создать страховой фонд в INJ, идентификатор которого совпал с идентификатором рынка бинарных опционов в USDC. Коллизии идентификаторов такого рода — хорошо известный класс ошибок в системах, строящих ключи из неструктурированных конкатенированных полей, поэтому многие протоколы используют идентификаторы с префиксами длины или разделением пространств имён.

Когда расчёты входили в путь возврата при отсутствии цены, система пыталась покрыть искусственно созданный дефицит USDC, используя необработанный целочисленный баланс привязанного фонда в INJ. Поскольку код считал минимальные балансы INJ достаточным покрытием дефицита в долларовом выражении, это обходило требуемый «хайркат» (списания) среди оставшихся позиций и позволяло полностью выводить искусственно завышенные балансы.

Инцидент возобновил критику решения Injective удалить свои основные репозитории цепочки с GitHub — шага, ранее обосновывавшегося сокращением поверхности атаки. Критики утверждают, что эксплойт демонстрирует принципиальные ограничения безопасности через сокрытие: злоумышленник полагался исключительно на публичную документацию SDK, устаревшие скомпилированные бинарные файлы до версии 1.17.2 и действующий тестнет Frontrunner, чтобы эмпирически реверс-инжинирить уязвимость. Между тем независимым аудиторам и исследователям-«белым шляпам» был закрыт доступ к исходному коду, необходимый для проактивного выявления этого изъяна. Этот эпизод добавляет аргументов в постоянную отраслевую дискуссию о закрытом коде блокчейнов, перекликаясь с прежними спорами о том, действительно ли сокрытие исходного кода существенно сдерживает решительных атакующих или в первую очередь мешает независимому аудиту.

Injective made its core chain code private — injective-core and injective-chain are both gone from GitHub (check for yourself: 404). The stated logic: harder for attackers to find bugs. This exploit is the counterargument. You don't need the source to find this. The attack… — Paddy-earthling (@ErthlingPaddy) August 31, 2026

К технической проблеме добавились коммуникационные провалы. На протяжении всей остановки официальные каналы Injective в социальных сетях публиковали маркетинговый контент с продвижением новых продуктов, не признавая инцидент и не успокаивая пользователей. Такой подход резко контрастировал с протоколами вроде MANTRA и Cronos, которые публично раскрыли недавние сбои.

Сообщение в цепочке с предложением награды было отправлено злоумышленнику с непроверенного смарт-кошелька, однако Injective не подтвердила официальную причастность, а личность отправителя остаётся неясной. На момент написания протокол не выпустил публичного заявления относительно эксплойта, его влияния на пользователей или планируемых мер по устранению последствий. Ключевые открытые вопросы для наблюдателей включают: сдвинутся ли консолидированные ETH по адресу 0x5a18…69ea, последует ли официальная награда или переговоры, а также раскроет ли Injective патч или восстановит публичный доступ к исходному коду в ответ на инцидент.