Solidity åtgärdar ett fel i Yul-optimeraren som påverkar versionerna 0.8.19–0.8.37
Solidity har åtgärdat en Yul-optimeringsbugg med låg allvarlighetsgrad i version 0.8.38. Buggen påverkar kontrakt som kompilerats med Yul-optimeraren aktiverad i Solidity 0.8.19–0.8.37. Under särskilda förhållanden kan inaktuell bokföringsinformation få Yul-optimeraren att behandla två minnes- eller lagringsplatser som åtskilda trots att de överlappar. Det kan leda till att ett kontrakt returnerar ett gammalt värde eller utelämnar en nödvändig skrivning.
Problemet rapporterades av Daniel Boye och visades senare av Surya Prakash Akula kunna uppstå i vanlig Solidity-kod, utan inline-assembly. Kontrakt som kompileras med `--via-ir` kan påverkas i stor utsträckning; med standardflödet för evm assembly är exponeringen mer begränsad. Buggen kan inte uppstå när Yul-optimeraren är inaktiverad.
Solidity-teamets granskning av cirka 283 000 verifierade `via-ir`-kompileringar och 607 000 evm assembly-kompileringar visade inga skillnader i bytekod vid jämförelse mellan byggen med och utan korrigeringen. Enligt teamet tyder detta på att buggen är sällsynt, men det garanterar inte att inga driftsatta kontrakt påverkas. Utvecklare bör uppgradera till Solidity 0.8.38 eller senare och bedöma driftsatta kontrakt som kompilerats med berörda versioner. För handlare är detta en riktad varning om smartkontraktens tillförlitlighet, inte ett tecken på en omfattande störning i Ethereum-nätverket eller på marknaden.
Neutral
Meddelandet är ett säkerhets- och utvecklaruppgraderingsmeddelande, inte ett bevis på ett angrepp, ett nätverksavbrott eller en förlust av medel. Solidity bedömer felet som låg allvarlighetsgrad och uppger att deras granskning av nästan 890 000 verifierade kompileringar inte fann några skillnader i bytekod mellan byggen med respektive utan korrigeringen. Problemet kräver också särskilda förhållanden kring optimeraren och omfördelning av adresser, vilket begränsar dess sannolika räckvidd. Dessa omständigheter gör en omedelbar, marknadsomfattande påverkan på ETH eller bredare kryptopriser osannolik.
På kort sikt kan handlare hålla utkik efter upplysningar från projekt som använder Solidity 0.8.19–0.8.37, särskilt sådana som kompilerats med Yul-optimeraren eller `--via-ir`. Om ett brett använt protokoll rapporterar sårbara driftsatta kontrakt eller exploaterbara förluster kan förtroendet försvagas och leda till försäljning av det berörda projektets token eller en tillfällig ökning av volatiliteten. Ingen sådan incident rapporteras i den här artikeln, så en bredt pessimistisk tolkning saknar stöd.
På längre sikt bör korrigeringen i Solidity 0.8.38 och de rekommenderade verifieringsstegen minska den fortsatta exponeringen i takt med att team uppgraderar och testar berörda driftsättningar. Precis som vid andra offentliggöranden av kompilerarsårbarheter är de viktigaste marknadssignalerna bekräftad exploatering, berörda protokolls TVL, nödstopp och projektens åtgärder – inte enbart det faktum att ett kompilerarproblem har åtgärdats. Sammantaget är nyheten neutral för marknadsriktningen, men relevant för övervakning av smartkontraktsrisker.