Ethereum-разработчики выявили вмешательство в развертывание Pectra на Sepolia

apgrejd-Pectra-v-seti-Ethereum.webp

Проблемы с активацией 5 марта хардфорка Pectra в тестнете Sepolia усугубили действия злоумышленника. Об этом рассказал разработчик Ethereum Мариус ван дер Вейден.



После развертывания обновления клиент Geth команды программиста начал сообщать об ошибках и добывать пустые блоки. Сбой вызвало неправильное генерирование события депозитным контрактом. На него была отправлена тестовая транзакция для проверки функциональности снятия средств.

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

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

Разработчик отметил, что злоумышленник использовал пограничный случай, который они упустили из виду. Стандарт ERC-20 позволяет любому производить нулевые переводы на другие адреса, даже при отсутствии токенов. Атакующий снова вызвал сбой подобной транзакцией.

Команда Ethereum заподозрила, что злоумышленник читает какие-то из их чатов, и решила провести обновление без огласки.

«Единственный способ остановить атаку — отфильтровать все транзакции, которые взаимодействуют с депозитным контрактом. Поэтому мы сделали частное исправление, которое развернули на нескольких собственных нодах», — объяснил ван дер Вейден.

Эти узлы составляли примерно 10% сети, что позволило снова предлагать полные блоки и использовать тестнет для дальнейшего скоординированного исправления.

«Мы не теряли финализацию во время инцидента. Как уже говорилось ранее, проблема возникла только на Sepolia, поскольку мы используем депозитный контракт с токен-замком в отличие от основной сети», — добавил разработчик.

Напомним, команда запланировала активацию Pectra в мейннете Ethereum на начало апреля.