Ethereum два года работал с эксплойтом, вызывающим отказ сети
Разработчики Ethereum Foundation раскрыли информацию об уязвимости, позволяющей провести DoS-атаку на блокчейн второй по капитализации криптовалюты.
Уязвимость обнаружили еще в марте 2019 года, но закрыть ее удалось лишь с активацией хардфорка Berlin в апреле 2021 года.
По словам разработчиков, уязвимость была "общеизвестным секретом" - ранее ее публично раскрыли по ошибке. После апрельского обновления уровень угрозы снизился достаточно, чтобы рассказать о ней детально.
"Важно, чтобы сообщество могло понять причины изменений, негативно влияющих на пользовательский опыт, таких как повышение стоимости газа", - говорится в сообщении.
Разработчики объяснили, что состояние Ethereum фиксируется с помощью дерева хешей [Merkle Patricia Tree]. Каждый "лист" этого дерева - аккаунт в сети, поэтому с ростом блокчейна структура становится более плотной.
Между корневым хешем и счетами пользователей есть несколько "промежуточных" нод. Для обращения к конкретному адресу системе необходимо выполнить 8-9 операций.
Низкая стоимость этих транзакций и развитие сети создали риски DoS-атаки. Для ее реализации достаточно запустить поиск по несуществующим адресам.
Для решения этой проблемы разработчики изменили алгоритм расчета стоимости газа и интегрировали в клиент Geth механизм динамических снимков состояния [dynamic state snapshots]. Такие снимки представляют собой вторичную структуру данных для хранения состояния сети в формате плоских файлов.
С активацией Berlin эффективность атаки упала в 50 раз.