Solidity verhelpt een bug in de Yul-optimizer die versies 0.8.19–0.8.37 treft
Solidity heeft in versie 0.8.38 een fout met een lage ernst in de Yul-optimalisator verholpen. De fout treft contracten die zijn gecompileerd met de Yul-optimalisator ingeschakeld in Solidity 0.8.19–0.8.37. Onder bepaalde omstandigheden kan verouderde administratie ertoe leiden dat de Yul-optimalisator twee geheugen- of opslaglocaties als afzonderlijk beschouwt, terwijl ze elkaar in werkelijkheid overlappen. Daardoor kan een contract een verouderde waarde teruggeven of een noodzakelijke schrijfbewerking overslaan.
Daniel Boye meldde het probleem; later liet Surya Prakash Akula zien dat het ook kan optreden in gewone Solidity-code, zonder inline-assembly. Contracten die met `--via-ir` zijn gecompileerd, kunnen breed getroffen worden; bij de standaard EVM-assembly-pijplijn is het risico beperkter. De fout kan niet optreden wanneer de Yul-optimalisator is uitgeschakeld.
Solidity onderzocht ongeveer 283.000 geverifieerde `via-ir`-compilaties en 607.000 EVM-assembly-compilaties. Daarbij werden geen verschillen in de bytecode gevonden tussen builds met en zonder de oplossing. Volgens het team wijst dit erop dat de fout zeldzaam is, maar het garandeert niet dat geen enkel gedeployd contract getroffen is. Ontwikkelaars moeten upgraden naar Solidity 0.8.38 of later en gedeployde contracten beoordelen die met getroffen versies zijn gecompileerd. Voor traders is dit een gerichte waarschuwing over de betrouwbaarheid van smart contracts, geen aanwijzing voor een grootschalige verstoring van het Ethereum-netwerk of de markt.
Neutral
De aankondiging is een beveiligings- en upgradebericht voor ontwikkelaars, geen bewijs van een exploit, een netwerkstoring of verlies van tegoeden. Solidity beoordeelt de bug als laag in ernst en meldt dat de scan van bijna 890.000 geverifieerde compilaties geen verschillen in bytecode heeft gevonden tussen builds met en zonder de fix. Voor het probleem zijn bovendien specifieke omstandigheden vereist rond de optimizer en het opnieuw toewijzen van adressen, waardoor de waarschijnlijke reikwijdte beperkt is. Deze details maken een onmiddellijk, marktbreed effect op ETH of op de bredere cryptoprijzen onwaarschijnlijk.
Op korte termijn kunnen handelaren berichten volgen van projecten die Solidity 0.8.19–0.8.37 gebruiken, met name projecten die zijn gecompileerd met de Yul-optimizer of met `--via-ir`. Als een veelgebruikt protocol meldt dat gedeployde contracten kwetsbaar zijn of dat er verliezen door een exploit zijn ontstaan, kan het vertrouwen afnemen. Dat kan leiden tot verkoop van tokens van specifieke projecten of tot een tijdelijke toename van de volatiliteit. Dit artikel meldt geen dergelijk incident, dus een breed negatieve interpretatie is niet onderbouwd.
Op langere termijn zouden de fix in Solidity 0.8.38 en de aanbevolen verificatiestappen de aanhoudende blootstelling moeten verminderen, naarmate teams de getroffen deployments upgraden en testen. Net als bij andere bekendmakingen van compilerkwetsbaarheden zijn de belangrijkste marktsignalen een bevestigde exploit, de TVL van getroffen protocollen, noodpauzes en herstelmaatregelen van projecten — niet alleen het bestaan van een compilerprobleem waarvoor inmiddels een patch beschikbaar is. Al met al is het nieuws neutraal voor de marktrichting, maar relevant voor het monitoren van risico’s rond smart contracts.