Эксплойт ZetaChain на шлюзе стоимостью 334 тысячи долларов: как связанная уязвимость опустошила командные кошельки в 4 цепочках

Оглавление ZetaChain подтвердила целенаправленный эксплойт 26 апреля 2026 года, в результате которого убытки составили примерно 333 868 долларов США. Атака была нацелена на контракт GatewayEVM протокола посредством целенаправленной цепочки конструктивных недостатков. В результате инцидента средства внешних пользователей не были потеряны. Все три затронутых кошелька находились под контролем ZetaChain. С тех пор был развернут патч, и межсетевые транзакции остаются приостановленными до полного обновления оператора. Эксплойт был сосредоточен на функции произвольных вызовов в контракте ZetaChain GatewayEVM. Злоумышленник использовал флаг isArbitraryCall, чтобы обойти обычную проверку отправителя в сообщениях между цепочками. Это заставило программное обеспечение ZetaClient обнулить адрес отправителя, перенаправив вызовы через _executeArbitraryCall(). Эта функция выполняла необработанные внешние вызовы с минимальными ограничениями. Единственной защитой этой функции был список запретов, блокирующий селекторы onCall и onRevert. Критические функции ERC-20, такие как TransferFrom и Approval, остались разблокированными. Злоумышленник установил пункт назначения в качестве контракта токена ERC-20 и передал TransferFrom в качестве данных вызова. Поскольку шлюз уже хранил средства из кошельков жертв, он успешно выполнил перевод. Девять транзакций утечки произошли в четырех цепочках — Ethereum, Base, Arbitrum и BSC. Самый крупный разовый слив составил 110 291 доллар США в базовых долларах США. Комплексное сканирование Dune Analytics подтвердило отсутствие дополнительных жертв во всех пяти подключенных цепочках EVM. ZetaChain обратился к инциденту непосредственно на X, заявив, что «межсетевые переводы ZETA не были затронуты» и что «никакие средства пользователей не были затронуты — все затронутые кошельки контролировались ZetaChain». 27 апреля ZetaChain подвергся целенаправленному эксплойту, включавшему в себя целенаправленную подготовку, включая финансирование Tornado Cash и подделку адреса кошелька. Межсетевые переводы ZETA не были затронуты. Никакие средства пользователей не пострадали — все затронутые кошельки контролировались ZetaChain. А… — ZetaChain 🟩 (@ZetaChain) 29 апреля 2026 г. Это не была оппортунистическая атака. Хакер пополнил основной кошелек через Tornado Cash примерно за три дня до реализации эксплойта. Этот преднамеренный шаг скрыл происхождение средств перед операцией. Злоумышленник также перебрал адрес тщеславного кошелька, который очень напоминал реальный адрес жертвы. Поддельный адрес содержал 13 одинаковых шестнадцатеричных символов, совпадающих с реальным: четыре в префиксе и девять в суффиксе. Для его создания потребовалось примерно 4,5 квадриллиона пробных ключей, а затраты на вычисления на графическом процессоре составили от 300 до 2500 долларов. Этот поддельный адрес использовался для отправки транзакций жертве, создавая двойник в истории транзакций. Этот метод использует то, как интерфейсы кошелька усекают адреса для отображения. На ZetaChain также был развернут специально созданный дренажный контракт для организации межсетевых вызовов. Каждый слив завершился успешно без сбоев в пункте назначения. Вскрытие отметило эту закономерность, предполагая, что «хакер тщательно предварительно проверил состояние разрешений и балансы токенов каждой цели перед выполнением». ZetaChain приостановила все межсетевые транзакции в течение восьми минут после обнаружения атаки. В тот же день команда удалила одобрения бесконечных разрешений из потока депозитов ZetaHub. Новые депозиты теперь утверждают только точные суммы, необходимые для каждой транзакции. Патч для Zetaclient был разработан, протестирован в Testnet и в настоящее время распространяется на узлы операторов основной сети. Патч навсегда отключает произвольный путь кода вызова, который сделал возможным этот эксплойт. Операторам узлов-валидаторов не нужно предпринимать никаких действий — обновления требуют только узлы-наблюдатели. Все идентифицированные адреса злоумышленников были отмечены через сеть экстренного реагирования SEAL 911. Отчет также был подан в правоохранительные органы через IC3.gov. Украденные средства на Ethereum были обменены примерно на 139 ETH и переведены в консолидационный кошелек. ZetaChain также пересматривает свой процесс сортировки ошибок. Вскрытие подтвердило, что уязвимость была отмечена ранее, отметив, что «первоначальные отчеты были отклонены, поскольку произвольное поведение при вызове считалось умышленным». В протоколе добавлено, что инцидент с тех пор побудил пересмотреть процедуры сортировки связанных векторов атак. Пользователям, ранее уже взаимодействовавшим со шлюзом, рекомендуется отозвать разрешения ERC-20 с помощью таких инструментов, как Revoke.cash.