Разработчики Ethereum выявили ошибку в клиенте Besu Ethereum, которая могла привести к "сбою консенсуса в сетях с несколькими реализациями EVM".
Гари Шульте сообщил о проблеме в репозиторий Hyperledger GitHub, и она была обнаружена Мартином Хольстом Свенде. Подразумевается, что "ни в одной производственной сети нет транзакций, которые могли бы вызвать этот сбой".
Ошибка, выявленная в ходе обзора кода The Merge
Свенде документально подтвердил, что обнаружил ошибку, когда "делал некоторые #ethereum fuzzing в рамках подготовки к #TheMerge". В ответ журналисту CryptoSlate Свенде заявил, что пользователи, работающие на узле Besu, могли застрять и "не иметь возможности следовать цепочке канонов". Кроме того, любая "сеть с преобладанием besu могла быть остановлена на корню".
Они бы застряли, не в состоянии следовать цепочке канонов. И/или, любая сеть с преобладанием besu (неETH-mainnet) могла бы быть остановлена на своем пути.
- M H (((Swende)))) (@mhswende) 27 сентября 2022 г.
Клиент Besu является вторым по популярности клиентом в сети Ethereum после Geth. По данным сайта ethernodes.org, клиент Besu используют 7,81% клиентов сети Ethereum.
Уязвимые версии клиента Besu
Версия 22.7.1 клиента Besu содержит исправление, гарантирующее, что "избыточный газ не будет выделяться на внутренние вызовы транзакций и исправляющее ошибки избыточного газа".
Версии ранее 22.1.3 также "предотвратят некорректное выполнение", однако Ethereum mainnet требует других функций, доступных только в более поздних версиях. Версии клиента 22.4.0 - 22.7.0 в настоящее время считаются уязвимыми к ошибке газа.
В результате пользователи клиентов Besu в основной сети должны обновить версию до исправленной.
Воздействие и разрешение
Данно Феррин подробно описал этот вопрос в статье на Hackmd, опубликованной 21 сентября. В анализе Феррина говорится, что
"Недостаток в обработке неподписанных данных как подписанных данных правильно закодированный смарт-контракт может создать вызов функции, которая вернет больше газа, чем было передано".
Дополнительную техническую информацию об ошибке можно найти в посте Феррина. Однако главным выводом является то, что ошибка была устранена без каких-либо проблем в сети Ethereum. Для того чтобы злоумышленник мог злонамеренно использовать ошибку, ему пришлось бы действовать точным образом.
"Для того, чтобы перевести это в разряд ошибок, нарушающих цепочку, необходим был специально разработанный звонок, включающий некоторые взаимодействия с правилом EIP-150 "все, кроме одного 64-го" и резервирование части доступного газа для вызывающего контракта".
Если бы ошибка не была обнаружена, в любой цепочке с высоким участием клиента Besu мог бы возникнуть "бесконечный цикл" смарт-контракта, при котором контракт "действительно выполнялся бы вечно".
Феррин заявил, что фаззинг позволил разработчикам выявить и исправить ошибку без проблем. Фаззинг - это метод, используемый разработчиками программного обеспечения, "который предполагает предоставление недостоверных, неожиданных или случайных данных в качестве входных данных для компьютерной программы".
"Самый большой урок, продемонстрированный этим эксплойтом, заключается в том, что сравнение данных трассировки при выполнении фаззинга выявляет больше ошибок, чем простое сравнение конечных результатов".
Ошибка с избытком газа не стала событием благодаря усердию разработчиков Ethereum, посвятивших себя защите сети. Однако потенциальный вред, который она могла нанести, демонстрирует сложность выполнения слияния без проблем.
Ошибка была исправлена в версии 22.7.1 с использованием "другого метода преобразования, который "зажимает" значения переполнения до максимальных ожидаемых значений, избегая проблем перевода подписи". Феррин прокомментировал, что пользователям, работающим на узлах в уязвимом диапазоне, следует обновиться до последней версии.

Также известный как Акиба, Лиам - журналист и редактор блокчейна на CryptoSlate. Он считает, что децентрализованная технология бухгалтерских книг обладает потенциалом для широкомасштабных позитивных изменений. По его прогнозам, в ближайшие 10 лет наступит рассвет новой эры технологических инноваций.