5 марта проблемы с активацией хардфорка Pectra на тестнете Sepolia привели к действиям злоумышленника, что усугубило ситуацию. Разработчик Ethereum Мариус ван дер Вейден рассказал, что после развертывания обновления клиент Geth начал выдавать ошибки и генерировать пустые блоки. Причиной сбоя стало некорректное генерирование события депозитным контрактом, которое произошло из-за тестовой транзакции, отправленной для проверки функции снятия средств.

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

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

Команда Ethereum решила провести обновление без огласки, заподозрив, что злоумышленник может следить за их чатом. Для защиты от атаки было принято решение отфильтровать все транзакции, взаимодействующие с депозитным контрактом. Это частное исправление было развернуто на нескольких нодах, составляющих примерно 10% сети. Это позволило восстановить генерацию полных блоков и продолжить тестирование.

Ван дер Вейден отметил, что проблема касалась только тестнета Sepolia, где используется депозитный контракт с токен-замком, в отличие от основной сети Ethereum. Ситуация не привела к потере финализации, и команда продолжила работать над исправлением.

Запуск хардфорка Pectra в мейннете Ethereum планируется на начало апреля.

Источник