Home » Клиентски бъг в системата за доказване на залог на Ethereum е открит и поправен без инциденти

Клиентски бъг в системата за доказване на залог на Ethereum е открит и поправен без инциденти

by v

Разработчиците на Етериум откриха бъг, който може да доведе до засядане на EVM вериги поради грешка с излишък на газ в клиента Besu.

Разработчиците на Ethereum откриха грешка в клиента Besu Ethereum, която би могла да доведе до „провал на консенсуса в мрежи с множество реализации на EVM“.

Гари Шулте съобщи за проблема в хранилището Hyperledger GitHub и той беше открит от Мартин Холст Свенде. Приема се, че „в нито една производствена мрежа няма транзакции, които биха предизвикали този провал.“

Бъг, идентифициран по време на прегледа на кода на The Merge

Свенде е документирал, че е открил грешката, докато е „правил някои TheMerge“. В отговор нанашия журналист Свенде заяви, че потребителите, работещи с възел Besu, са могли да затънат и „да не могат да следват веригата на канона“. Освен това всяка „доминирана от Бесу мрежа би могла да бъде спряна в движение.“

Клиентът Besu е вторият най-популярен клиент в мрежата Ethereum след Geth. Според данните, достъпни чрез ethernodes.org, клиентът Besu се използва от 7,81% от клиентите на основната мрежа на Етериум.

Уязвими версии на клиента Besu

Версия 22.7.1 на клиента Besu съдържа поправка, която гарантира, че „излишъкът от газ няма да бъде разпределян за вътрешни извиквания на транзакции и коригира грешките на излишъка от газ“.

Версиите, по-ранни от 22.1.3, също ще „предотвратят неправилното изпълнение“, но Ethereum mainnet изисква други функции, налични само в по-късните версии. Версиите на клиентите от 22.4.0 до 22.7.0 понастоящем се считат за уязвими към грешката с газа.

В резултат на това потребителите на клиенти Besu в основната мрежа трябва да преминат към поправената версия.

Въздействие и разрешаване на проблема

Дано Ферин създаде пълно описание на проблема в статия в Hackmd, публикувана на 21 септември. В анализа на Ферин се посочва, че

„Недостатък в обработката на неподписани данни като подписани данни правилно кодиран интелигентен договор може да създаде извикване на функция, която ще върне повече газ, отколкото е подадена. „

Допълнителна техническа информация относно грешката може да бъде намерена в публикацията на Ферин. Основното, което може да се извлече, обаче, е, че грешката е била отстранена без проблем в основната мрежа на Ethereum. За да може някой лош играч да се възползва злонамерено от бъга, той би трябвало да действа по прецизен начин.

„За да се издигне този бъг до верижен бъг, е било необходимо умишлено подготвено повикване, включващо някои взаимодействия с правилото EIP-150 „всички, освен една 64-та“ и резервиране на част от наличния газ за извикващия договор. „

Ако бъгът не беше открит, всяка верига с голямо участие от страна на клиента Besu можеше да изпита „безкраен цикъл“ на интелигентния договор, при който договорът щеше да се „изпълнява наистина завинаги“.

Ферин заяви, че fuzzing е позволил на разработчиците да идентифицират и поправят грешката без проблем. Фъзингът е метод, използван от разработчиците на софтуер, „който включва предоставяне на невалидни, неочаквани или случайни данни като входни данни за компютърна програма.“

„Най-големият урок, демонстриран от този експлойт, е, че сравняването на данните от проследяването при изпълнението на fuzzing улавя повече грешки, отколкото просто сравняването на крайните резултати. „

Бъгът с излишъка на газ се превърна в необичайно събитие благодарение на усърдието на разработчиците на Ethereum, които се посветиха на защитата на мрежата. Въпреки това потенциалната вреда, която можеше да причини, показва сложността зад изпълнението на сливането без проблеми.

Грешката беше поправена във версия 22.7.1, като беше използван „различен метод за преобразуване, който ще „притиска“ стойностите на препълване до максималните очаквани стойности, избягвайки проблемите с подписания превод“. Ферин коментира, че потребителите, работещи с възли в уязвимия диапазон, трябва да актуализират до най-новата версия.

Related Posts

Leave a Comment