Разработчики криптовалюты Ethereum отложили (https://blog.ethereum.org/2019/01/15/security-alert-ethereum.../) на неопределённый срок запланированный на 17 января технический форк блокчейна, необходимый для обновления версии платформы ("Constantinople"). Решение принято в связи с выявлением (https://medium.com/chainsecurity/constantinople-enables-new-...) критической уязвимости в реализации умных контрактов, позволяющей похитить средства.
Выявившие проблему исследователи утверждают, что проблема специфична для ветки "Constantinople", которая ещё не введена в строй. Чтобы отложить планировавшийся форк блокчейна администраторам узлов, майнерам и биржам рекомендуется срочно обновить Geth (https://github.com/ethereum/go-ethereum) до выпуска 1.8.21 (https://github.com/ethereum/go-ethereum/releases/tag/v1.8.21), откатиться на версию 1.8.19 или запускать приложение с опцией "--override.constantinople=9999999". При использовании клиента Parity (https://www.parity.io/ethereum/) необходимо обновить программу до версии 2.2.7-stable/2.3.0-beta или откатиться на выпуск 2.2.4-beta. Обычным пользователям криптокошельков, не участвующим в формировании сети и обслуживающим узлы обновлять приложения не обязательно.
Владельцам умных контрактов рекомендуется проверить свои контракты на предмет подверженности уязвимости. Проблема вызвана снижением стоимости внутренних транзаций ("газ") для операций SSTORE, предложенным в спецификации EIP-1283 (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1283.md). Из-за данного изменения после обновления платформы до ветки "Constantinople" некоторые уже существующие умные контракты станут подвержены атаке на реентерабельность (re-entrancy, состояние контракта может измениться в процессе его выполнения в условиях когда новое обращение к контракту возможно до завершения обработки предыдущего).
В ходе аудита изменения блокчейна после форка "Constantinople" исследователи безопасности пришли к выводу, что вероятность проведения re-entrancy атаки полностью не исключается для некоторых видов контрактов, в которых перед операторами изменения состояния используются функции transfer() и send(). Например, проблема может затрагивать контракты, в которых несколько участников совместно получают средства, решают как разделить полученные средства и инициируют выплату этих средств.
В случае успешной атаки злоумышленник может похитить средства у пользователей, заключивших с ним умный контракт, в обход условий контракта и без получения согласия пользователя. До введения в строй ветки "Constantinople" контракты не подвержены уязвимости, т.е. пользователям Ethereum ничего не угрожает. Анализ существующих умных контрактов пока не выявил экземпляров, которые могли бы использоваться для совершения подобных атак.
URL: https://blog.ethereum.org/2019/01/15/security-alert-ethereum.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=49963