De langverwachte Constantinople upgrade van Ethereum is net uitgesteld nadat een kritieke kwetsbaarheid werd ontdekt in een van de geplande aanpassingen.
SmartSecurity Controlecentrum ChainSecurity merkte dinsdag op dat het Ethereum Improvement Proposal (EIP) 1283, indien geïmplementeerd, aanvallers een gat in de beveiliging zou kunnen geven om gebruikersfondsen te stelen. Tijdens een telefoongesprek kwamen ethereum ontwikkelaars, maar ook ontwikkelaars van andere projecten die het netwerk exploiteren, overeen om de harde fork- althans tijdelijk – uit te stellen terwijl ze het probleem evalueren.
Deelnemers waren onder meer ethereum maker Vitalik Buterin, ontwikkelaars Hudson Jameson, Nick Johnson en Evan Van Ness en Parity releasemanager Afri Schoedon. Een nieuwe fork datum wordt beslist tijdens een andere Ethereum dev call op vrijdag.
De belangrijkste ontwikkelaars van het project bespraken de kwetsbaarheid online en kwamen tot de conclusie dat het te lang zou duren om de bug te repareren voorafgaand aan de hare fork, die naar verwachting om 17:00 uur op ongeveer 04:00 uur UTC zou worden uitgevoerd.
Dit beveiligingslek, dat een re-entryaanval is genoemd, stelt een aanvaller in staat om dezelfde functie meerdere keren opnieuw in te schakelen zonder de gebruiker over de stand van zaken te informeren. In dit scenario zou een aanvaller in wezen “geld voor altijd terugtrekken”, zei Joanes Espanol, CTO van blockchain analysebureau Amberdata in een eerder interview met Coindesk.
Hij legde uit:
“Stel je voor dat mijn contract een functie heeft die een oproep doet naar een ander contract … Als ik een hacker ben en ik de functie een tijdje kan activeren terwijl de vorige functie nog steeds werd uitgevoerd, kan ik misschien geld opnemen.”
Dit is vergelijkbaar met een van de zwakke plekken in de nu beruchte DAO hack van 2016.
ChainSecurity’s bericht legde uit dat voorafgaand aan Constantinopel opslagoperaties op het netwerk 5.000 gas zouden kosten, meer dan het 2.300 gas dat gewoonlijk wordt verzonden wanneer een contract wordt aangeroepen met behulp van de functies “Overdracht” of “Verzenden”.
Constantinopel werd verwacht om vorig jaar al te activeren, maar werd vertraagd nadat er problemen waren gevonden tijdens het starten van de upgrades op het Ropsten-testnet.