Home » Ethereum proof-of-stake client bug gevangen en gepatcht zonder incidenten

Ethereum proof-of-stake client bug gevangen en gepatcht zonder incidenten

by Tim

Ethereum-ontwikkelaars hebben een bug ontdekt die ertoe kan leiden dat EVM-ketens vastlopen door een overmaat aan gas in de Besu-client.

Ethereum ontwikkelaars ontdekten een bug binnen de Besu Ethereum client die had kunnen leiden tot “consensus falen in netwerken met meerdere EVM implementaties.”

Gary Schulte meldde het probleem aan de Hyperledger GitHub repository en werd gevonden door Martin Holst Swende. Men heeft begrepen dat “geen productienetwerken transacties hebben die deze storing zouden veroorzaken.”

Bug geïdentificeerd tijdens The Merge code review

Swende documenteerde dat hij de bug vond terwijl hij “wat TheMerge.” In antwoord oponze journalist, verklaarde Swende dat gebruikers die een Besu node draaien, vast komen te zitten en “niet in staat zijn de canon keten te volgen.” Verder zou elk “Besu-gedomineerd netwerk gestopt kunnen worden.”

De Besu client is de tweede meest populaire client op het Ethereum netwerk na Geth. Volgens gegevens beschikbaar via ethernodes.org, wordt de Besu client gebruikt door 7.81% van de Ethereum mainnet clients.

Verwachte Besu client versies

Versie 22.7.1 van de Besu client bevat een fix om ervoor te zorgen dat “overtollig gas niet wordt toegewezen aan innerlijke transactieaanroepen en het corrigeren van de overtollige gas fouten.”

Versies eerder dan 22.1.3 zullen ook “onjuiste uitvoering voorkomen,” Ethereum mainnet vereist echter andere functies die alleen beschikbaar zijn in latere versies. Clientversies 22.4.0 tot 22.7.0 worden momenteel als kwetsbaar beschouwd voor de gasbug.

Als gevolg daarvan moeten Besu-clientgebruikers op het mainnet upgraden naar de gepatchte versie.

Impact en resolutie

Danno Ferrin maakte een volledige beschrijving van het probleem in een Hackmd-artikel dat op 21 september werd gepubliceerd. Ferrin’s analyse stelde dat

“Een fout in de behandeling van niet-ondertekende gegevens als ondertekende gegevens een goed gecodeerd smart contract kan een functieaanroep creëren die meer gas teruggeeft dan werd doorgegeven.”

Verder technische informatie over de bug is te vinden in Ferrin’s post. De belangrijkste conclusie is echter dat de bug is opgelost zonder enig probleem op het Ethereum mainnet. Voor een slechte acteur om de bug kwaadaardig uit te buiten, zouden ze op een precieze manier moeten handelen.

“Om dit te verheffen tot een chain-halting bug was een opzettelijk gemaakte aanroep nodig, waarbij enkele interacties met de EIP-150 “all but one 64th” regel en het reserveren van een deel van het beschikbare gas voor het aanroepende contract.”

Als de bug niet was gevonden, had elke keten met veel deelname van de Besu-client een smart contract “oneindige lus” kunnen meemaken waarbij het contract “echt eeuwig zou worden uitgevoerd.”

Ferrin verklaarde dat fuzzing de ontwikkelaars in staat stelde de bug te identificeren en zonder problemen te patchen. Fuzzing is een methode die door softwareontwikkelaars wordt gebruikt “waarbij ongeldige, onverwachte of willekeurige gegevens als invoer voor een computerprogramma worden gebruikt.”

“De grootste les die deze exploit aantoont is dat de vergelijking van traceergegevens in een fuzzing-uitvoering meer bugs opspoort dan het simpelweg vergelijken van de eindresultaten.”

De overtollige gas bug werd een non-event dankzij de ijver van Ethereum ontwikkelaars die zich inzetten om het netwerk te beschermen. Echter, de potentiële schade die het had kunnen veroorzaken toont de complexiteit achter het uitvoeren van de samenvoeging zonder problemen.

De bug werd gepatcht in versie 22.7.1 met behulp van “een andere conversiemethode die overflowwaarden “vastklemt” tot de maximaal verwachte waarden, waarbij de ondertekende vertaalproblemen worden vermeden.” Ferrin merkte op dat gebruikers die nodes binnen het kwetsbare bereik draaien, moeten updaten naar de meest recente versie.

Related Posts

Leave a Comment