В коде хардфорка Constantinople для блокчейна Ethereum обнаружили критическую уязвимость. Разработчики вынуждены были отказаться от проведения хардфорка 16 января, а основные клиенты выпустили новые версии программного обеспечения.
Компания по аудиту смарт-контрактов ChainSecurity заявила, что уязвимость EIP-1283 позволяла хакерам похитить средства пользователей. Она даёт возможность множество раз войти в одну и ту же функцию и бесконечно выводить средства.
CTO аналитической фирмы CoinDesk Джоанес Эспаньол пояснил:
Представьте, что мой контракт имеет функцию вызова другого контракта. Если я хакер и могу запустить эту функцию в то время, как предыдущая по-прежнему выполняется, я получаю возможность вывода средств.
На конференции разработчики разработчиков Ethereum и представители других клиентов и проектов, работающих в блокчейне, решили перепроверить код ещё раз. За перенос хардфорка высказались Виталик Бутерин, разработчики Хадсон Джеймсон, Ник Джонсон и Эван ван Несс, а также релиз-менеджер Parity Афри Шоедон. Они пришли к единому мнению о том, что до обозначенного времени хардфорка проблему решить не успеют.
Основные клиенты Ethereum уже представили новые версии ПО. В частности, свежие релизы выпустили Go-Ethereum (Geth) и Parity. Они позволят предотвратить хардфорк, который должен был состояться на блоке 7,080,000. В целом же пользователи Geth и Parity могут продолжить работать на текущих версиях ПО при условии коррекции параметров конфигурации.