Разработчики криптовалюты Ethereum отложили на неопределённый срок запланированный на 17 января технический форк блокчейна, необходимый для обновления версии платформы («Constantinople»). Решение принято в связи с выявлением критической уязвимости в реализации умных контрактов, позволяющей похитить средства.
Выявившие проблему исследователи утверждают, что проблема специфична для ветки «Constantinople», которая ещё не введена в строй. Чтобы отложить планировавшийся форк блокчейна администраторам узлов, майнерам и биржам рекомендуется срочно обновить Geth до выпуска 1.8.21, откатиться на версию 1.8.19 или запускать приложение с опцией «—override.constantinople=9999999». При использовании клиента Parity необходимо обновить программу до версии 2.2.7-stable/2.3.0-beta или откатиться на выпуск 2.2.4-beta. Обычным пользователям криптокошельков, не участвующим в формировании сети и обслуживающим узлы обновлять приложения не обязательно.
Владельцам умных контрактов рекомендуется проверить свои контракты на предмет подверженности уязвимости. Проблема вызвана снижением стоимости внутренних транзаций («газ») для операций SSTORE, предложенным в спецификации EIP-1283. Из-за данного изменения после обновления платформы до ветки «Constantinople» некоторые уже существующие умные контракты станут подвержены атаке на реентерабельность (re-entrancy, состояние контракта может измениться в процессе его выполнения в условиях когда новое обращение к контракту возможно до завершения обработки предыдущего).
В ходе аудита изменения блокчейна после форка «Constantinople» исследователи безопасности пришли к выводу, что вероятность проведения re-entrancy атаки полностью не исключается для некоторых видов контрактов, в которых перед операторами изменения состояния используются методы transfer() и send(). Например, проблема может затрагивать контракты, в которых несколько участников совместно получают средства, решают как разделить полученные средства и инициируют выплату этих средств.
В случае успешной атаки злоумышленник может похитить средства у пользователей, заключивших с ним умный контракт, в обход условий контракта и без получения согласия пользователя. До введения в строй ветки «Constantinople» контракты не подвержены уязвимости, т.е. пользователям Ethereum ничего не угрожает. Анализ существующих умных контрактов пока не выявил экземпляров, которые могли бы использоваться для совершения подобных атак.