Simple Science

Scienza all'avanguardia spiegata semplicemente

# Informatica# Crittografia e sicurezza# Tecnologie emergenti# Ingegneria del software

Navigare i rischi dei smart contract proxy

I contratti proxy in Ethereum offrono vantaggi ma presentano anche seri problemi di sicurezza.

Cheng-Kang Chen, Wen-Yi Chu, Muoi Tran, Laurent Vanbever, Hsu-Chun Hsiao

― 7 leggere min


Rischi dei contrattiRischi dei contrattiproxy svelatisicurezza.presentano seri rischi per laI contratti proxy su Ethereum
Indice

Nel mondo delle criptovalute, Ethereum si distingue come una piattaforma popolare che supporta varie applicazioni online. Una delle funzionalità più importanti di Ethereum è la sua capacità di eseguire smart contract. Questi contratti sono programmi auto-esecutivi che svolgono automaticamente compiti quando vengono soddisfatte determinate condizioni. Tuttavia, c'è uno schema di design chiamato proxy pattern che permette agli sviluppatori di creare contratti che possono essere aggiornati senza perdere il loro stato. Anche se sembra vantaggioso, presenta anche dei rischi, soprattutto per quanto riguarda la sicurezza.

Che cosa sono i Proxy Smart Contracts?

I proxy smart contracts sono contratti che separano la logica del programma dai dati che memorizzano. Questo significa che il codice effettivo che esegue le azioni può essere cambiato senza alterare i dati memorizzati nel contratto. Utilizzando un proxy, gli sviluppatori possono aggiornare la parte logica mantenendo lo stesso indirizzo e stato, il che è attraente per progetti in corso che necessitano di aggiornamenti.

Tuttavia, questo design ha i suoi svantaggi. Due tipi significativi di problemi possono sorgere dall'uso dei contratti proxy: collisioni di funzione e collisioni di memorizzazione.

Collisioni di Funzione

Le collisioni di funzione si verificano quando due funzioni condividono lo stesso nome o firma sia nel proxy che nei contratti logici. Quando ciò accade, porta a confusione. Il proxy potrebbe cercare di eseguire la propria funzione invece di quella prevista dal contratto logico. Questo può causare problemi operativi ed essere sfruttato da attaccanti.

Ad esempio, immagina che un contratto proxy abbia una funzione per gli utenti per prelevare soldi. Se c'è un'altra funzione nel contratto logico con lo stesso nome, il proxy potrebbe non chiamare quella giusta, portando a trasferimenti di fondi indesiderati. Attori malintenzionati possono approfittare di questa confusione per rubare fondi.

Collisioni di Memorizzazione

Le collisioni di memorizzazione si verificano quando due contratti diversi occupano involontariamente lo stesso slot di memorizzazione. Poiché sia il proxy che i contratti logici condividono lo stesso spazio di memorizzazione, se non sono gestiti correttamente, potrebbero finire per sovrascrivere i dati dell'altro. Questo sovrapporsi può portare a vulnerabilità serie in cui gli attaccanti sfruttano lo spazio condiviso per modificare informazioni importanti, come chi possiede un determinato contratto.

Ad esempio, se un contratto proxy memorizza l'indirizzo di un proprietario e il contratto logico cerca di memorizzare un valore booleano nello stesso spazio, potrebbe sovrascrivere l'indirizzo del proprietario con informazioni false. Questo tipo di problema può portare ad accessi e controlli non autorizzati sul contratto.

L'importanza di Trovare Collisioni

Dato i rischi associati alle collisioni di funzione e memorizzazione, identificare tali vulnerabilità è fondamentale per proteggere gli utenti e i loro beni. Esistono molti strumenti e metodi per questo scopo, ma spesso non coprono tutti i contratti sulla rete Ethereum. Molti strumenti esistenti possono analizzare solo contratti pubblicamente accessibili o quelli utilizzati in transazioni passate.

Questa limitazione è preoccupante perché una parte significativa dei contratti su Ethereum non ha codice sorgente o storia delle transazioni disponibili. Pertanto, è necessario un approccio completo per identificare le collisioni.

La Necessità di un Nuovo Strumento

Per affrontare questi problemi, è stato sviluppato un nuovo strumento automatizzato in grado di identificare i proxy smart contracts e controllare le vulnerabilità da collisione. Questo strumento utilizza tecniche avanzate per valutare i contratti che mancano sia di codice sorgente che di storia delle transazioni. Analizza milioni di smart contracts in modo efficiente e accurato, fornendo una copertura più ampia rispetto agli strumenti esistenti.

Come Funziona lo Strumento

Lo strumento ha un processo in due fasi per identificare i contratti proxy. Prima, smonta il bytecode di uno smart contract per cercare specifici opcodes che indicano se il contratto funge da proxy. Se un contratto ha il giusto opcode, passa alla seconda fase, in cui simula l'esecuzione del contratto per verificare se si comporta come un proxy.

Una volta confermato un contratto proxy, lo strumento cercherà contratti logici associati e controllerà eventuali collisioni. Utilizza varie tecniche, come l'esecuzione simbolica e il slicing del programma, per controllare efficacemente le collisioni di memorizzazione.

Risultati dell'Utilizzo dello Strumento

Lo strumento ha analizzato milioni di contratti attivi sulla rete Ethereum e ha scoperto un numero impressionante di contratti proxy e vulnerabilità associate. L'analisi ha rivelato che oltre la metà dei contratti attivi sono contratti proxy, e molti di essi sono effettivamente suscettibili a collisioni di funzione e memorizzazione.

Statistiche dei Contratti Proxy

Secondo l'analisi, sono stati identificati circa 19,5 milioni di contratti proxy, una percentuale significativa dei quali non pubblica il proprio codice sorgente. Questa statistica è allarmante poiché evidenzia una mancanza di trasparenza in molti di questi contratti. Circa 1,5 milioni di contratti proxy nascosti sono stati scoperti, che non possiedono codice sorgente o dati di transazione accessibili.

Statistiche delle Vulnerabilità da Collisione

Inoltre, lo strumento ha rilevato circa 1,5 milioni di casi di collisioni di funzione nei contratti proxy identificati. Importante, la stragrande maggioranza di queste collisioni deriva dalla duplicazione dei contratti, dove molti contratti proxy condividono lo stesso codice. Inoltre, sono state identificate anche diverse istanze di collisioni di memorizzazione sfruttabili, sollevando preoccupazioni per le entità che gestiscono questi contratti.

La Crescita dei Contratti Proxy

L'analisi ha anche osservato una crescita notevole nel numero di contratti proxy distribuiti nel corso degli anni. Prima del 2020, circa 2 milioni di contratti proxy erano stati introdotti, ma nel 2023, i numeri di distribuzione sono schizzati alle stelle, con milioni creati solo nei primi mesi dell'anno. Questa tendenza indica un forte spostamento verso l'uso dei contratti proxy nell'ecosistema di Ethereum.

Molti sviluppatori sono attratti dal proxy pattern per la flessibilità che offre per aggiornamenti e funzionalità dei contratti. Tuttavia, questo aumento dell'uso significa anche più potenziali vulnerabilità che devono essere monitorate e gestite efficacemente.

Pratiche di Sicurezza per i Contratti Proxy

Mentre l'uso dei contratti proxy continua a crescere, implementare pratiche di sicurezza robuste rimane essenziale. Gli sviluppatori sono invitati a seguire le migliori pratiche per evitare collisioni di funzione e memorizzazione. Questo include separare chiaramente i nomi delle funzioni, garantire firme uniche e gestire attentamente i layout di memorizzazione.

L'introduzione di nuovi schemi di design dei proxy, come il Transparent Upgradeable Proxy, mira a minimizzare la probabilità di collisioni implementando un approccio più strutturato alle chiamate di funzione. Distinguendo tra i tipi di chiamante, questi design aiutano a prevenire esecuzioni di funzione indesiderate, migliorando così la sicurezza del contratto.

Sfide per Garantire la Sicurezza

Nonostante i migliori sforzi per mettere in sicurezza i contratti proxy, diverse sfide persistono. Molti sviluppatori non revisionano a fondo i loro contratti o si affidano troppo agli strumenti esterni per l'analisi. Questa dipendenza può portare a vulnerabilità che sfuggono al controllo, soprattutto quando gli strumenti di sicurezza esistenti non possono analizzare contratti a causa dell'assenza di codice sorgente o storia delle transazioni.

Poiché gli attori malintenzionati diventano più sofisticati, cresce l'urgenza di strumenti di analisi completi. Lo sviluppo e il miglioramento continui di Strumenti Automatizzati possono fornire una migliore copertura, portando a un ambiente più sicuro per tutti gli utenti di Ethereum.

Conclusione

I proxy smart contracts su Ethereum offrono flessibilità e aggiornabilità, ma introducono anche rischi di sicurezza significativi. Comprendere questi rischi, in particolare con le collisioni di funzione e memorizzazione, è vitale sia per gli sviluppatori che per gli utenti.

L'emergere di strumenti automatizzati che possono identificare queste vulnerabilità è un passo positivo verso la sicurezza dell'ecosistema di Ethereum. Con l'aumento della popolarità dei contratti proxy, la vigilanza continua e pratiche migliorate saranno cruciali per proteggere gli utenti e i loro beni da potenziali sfruttamenti.

Essere proattivi e implementare misure di sicurezza efficaci può garantire che i benefici dei contratti proxy superino di gran lunga i rischi coinvolti.

Fonte originale

Titolo: Proxion: Uncovering Hidden Proxy Smart Contracts for Finding Collision Vulnerabilities in Ethereum

Estratto: The proxy design pattern allows Ethereum smart contracts to be simultaneously immutable and upgradeable, in which an original contract is split into a proxy contract containing the data storage and a logic contract containing the implementation logic. This architecture is known to have security issues, namely function collisions and storage collisions between the proxy and logic contracts, and has been exploited in real-world incidents to steal users' millions of dollars worth of digital assets. In response to this concern, several previous works have sought to identify proxy contracts in Ethereum and detect their collisions. However, they all fell short due to their limited coverage, often restricting analysis to only contracts with available source code or past transactions. To bridge this gap, we present Proxion, an automated cross-contract analyzer that identifies all proxy smart contracts and their collisions in Ethereum. What sets Proxion apart is its ability to analyze hidden smart contracts that lack both source code and past transactions. Equipped with various techniques to enhance efficiency and accuracy, Proxion outperforms the state-of-the-art tools, notably identifying millions more proxy contracts and thousands of unreported collisions. We apply Proxion to analyze over 36 million alive contracts from 2015 to 2023, revealing that 54.2% of them are proxy contracts, and about 1.5 million contracts exhibit at least one collision issue.

Autori: Cheng-Kang Chen, Wen-Yi Chu, Muoi Tran, Laurent Vanbever, Hsu-Chun Hsiao

Ultimo aggiornamento: Sep 20, 2024

Lingua: English

URL di origine: https://arxiv.org/abs/2409.13563

Fonte PDF: https://arxiv.org/pdf/2409.13563

Licenza: https://creativecommons.org/licenses/by/4.0/

Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.

Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.

Articoli simili