Природа эксплойта в клиенте Geth и как он мог затронуть сеть Ethereum

28 августа, 2021 / Технологии

eth geth

Вчера самый популярный программный клиент блокчейна Ethereum, Geth, также известный как Go Ethereum, столкнулся с серьезной уязвимостью. Ошибка затронула более старые версии клиентов Geth, в частности v1.10.7 и предшествующие.

Сообщается, что эксплойт затронул более 50% старых клиентов Ethereum, которые не установили последнее обновлееме от 24 августа. В результате эксплойта блокчейн Ethereum подвергся незапланированному хардфорку, разделившему блокчейн на две части. Так, 74% клиентов используют Geth, и из них 73% использовали более старую версию, в следствие чего некорректно работали 54% узлов Ethereum.

Команда Go Ethereum обнаружила уязвимость 18 августа, но не стала раскрывать ее природу, чтобы избежать использования другими. Тогда руководитель команды Ethereum Петер Силаджи сказал, что они раскроют вектор атаки в ближайшее время:

«Точный вектор атаки будет предоставлен позже, чтобы дать операторам узлов и зависимым проектам время обновить свои узлы и программное обеспечение».

Однако, злоумышленнику удалось найти экплойт и приступить к атаке старых клиентов, которые не обновились до последней версии.

Природа атаки и как она повлияла на блокчейн Ethereum

Идея рассказать сообществу об ошибке с треском провалилась, так как сразу нашлись те, кто смог идентифицировать проблему. Разработчики Ethereum считают, что атака стала возможной, только потому, что валидаторы узлов не обновились вовремя до необходимой версии. Злоумышленнику удалось зафиксировать изменения в предварительно скомпилированном контракте, добавив изменение в то же место в памяти в качестве функции.

Пользователь Twitter @SpillyGuy, дал полное описание эксплойта, а также объяснил природу атаки.

По его словам, в результате эксплойта случайно изменялось содержимое, а в итоге и составленный смарт-контракт.

Так, в сети Ethereum одновременно работали две цепочки, и если бы недействительная не была вовремя отклонена, это могло бы привести к 51% атаке, поскольку большинство валидаторов не обновили своих клиентов.

Отметим, что сеть Ethereum уже не впервые сталкивается с разделением цепочки из-за уязвимости в более старой клиентской версии Geth. В ноябре 2020 года была аналогичная проблема и тогда о ней не разглашали.

Актуально