Solidity corregge un bug dell’ottimizzatore Yul che interessa le versioni 0.8.19–0.8.37

Solidity ha corretto un bug di bassa gravità nell’ottimizzatore Yul nella versione 0.8.38. Il bug riguarda i contratti compilati con l’ottimizzatore Yul attivato in Solidity 0.8.19–0.8.37. In determinate condizioni, una registrazione non aggiornata può indurre l’ottimizzatore Yul a considerare distinte due posizioni in memoria o nello storage che in realtà si sovrappongono. Questo può far sì che un contratto restituisca un valore obsoleto o perda una scrittura necessaria. Il problema è stato segnalato da Daniel Boye e in seguito Surya Prakash Akula ha dimostrato che può verificarsi anche con normale codice Solidity, senza assembly inline. I contratti compilati con `--via-ir` potrebbero essere interessati in modo esteso; con la pipeline predefinita di assembly EVM, l’esposizione è più limitata. Il bug non può verificarsi quando l’ottimizzatore Yul è disattivato. L’analisi di Solidity su circa 283.000 compilazioni verificate `via-ir` e 607.000 compilazioni di assembly EVM non ha rilevato differenze nel bytecode confrontando le build con e senza la correzione. Il team afferma che ciò suggerisce che il bug sia raro, ma non garantisce che nessun contratto già distribuito ne sia interessato. Gli sviluppatori dovrebbero aggiornare a Solidity 0.8.38 o versioni successive e valutare i contratti distribuiti compilati con versioni interessate. Per i trader, si tratta di un avviso mirato sull’affidabilità degli smart contract, non di una prova di un’interruzione generalizzata della rete Ethereum o dei mercati.
Neutral
L’annuncio è un avviso di sicurezza e di aggiornamento per gli sviluppatori, non una prova di un exploit, di un’interruzione della rete o di una perdita di fondi. Solidity valuta il bug come di bassa gravità e afferma che la scansione di quasi 890.000 compilazioni verificate non ha rilevato differenze nel bytecode tra le build con la correzione e quelle senza. Inoltre, il problema richiede condizioni specifiche relative all’ottimizzatore e alla riassegnazione degli indirizzi, il che ne limita la probabile portata. Questi elementi rendono improbabile un effetto immediato e generalizzato su ETH o sui prezzi del mercato crypto nel suo complesso. Nel breve termine, i trader potrebbero seguire le comunicazioni dei progetti che utilizzano Solidity 0.8.19–0.8.37, soprattutto se compilati con l’ottimizzatore Yul o con `--via-ir`. Se un protocollo ampiamente utilizzato segnalasse contratti vulnerabili già distribuiti o perdite dovute a un exploit, la fiducia potrebbe indebolirsi e innescare vendite dei token dei singoli progetti o un aumento temporaneo della volatilità. L’articolo non segnala incidenti di questo tipo, quindi non è giustificata un’interpretazione generalmente ribassista. Nel lungo termine, la correzione introdotta in Solidity 0.8.38 e i passaggi di verifica raccomandati dovrebbero ridurre l’esposizione man mano che i team aggiornano e testano le implementazioni interessate. Come per le altre divulgazioni di vulnerabilità dei compilatori, i principali indicatori di mercato sono la conferma di uno sfruttamento, il TVL dei protocolli interessati, le sospensioni di emergenza e gli interventi correttivi dei progetti, non la sola esistenza di un problema del compilatore per il quale è già disponibile una correzione. Nel complesso, la notizia è neutrale per la direzione del mercato, pur essendo rilevante per il monitoraggio dei rischi legati agli smart contract.