Vulnerabilità nella Verifica degli Indirizzi nei Contratti Intelligenti di Ethereum
Uno studio sui difetti di sicurezza nella verifica degli indirizzi dei contratti smart e un metodo di rilevamento proposto.
― 6 leggere min
Indice
- L'importanza della verifica degli indirizzi
- Metodi attuali di verifica degli indirizzi
- Un nuovo approccio alla rilevazione delle vulnerabilità nella verifica degli indirizzi
- Risultati dalle valutazioni dei contratti
- Capacità di rilevamento in tempo reale
- Meccanismi di verifica degli indirizzi
- Sfide nella verifica degli indirizzi
- Conclusione
- Fonte originale
- Link di riferimento
Nel mondo della tecnologia blockchain, Ethereum si distingue come una piattaforma leader che permette la creazione di smart contract. Questi contratti sono accordi auto-esecutivi con i termini scritti direttamente nel codice. Un aspetto importante degli smart contract è la verifica degli indirizzi, che è cruciale per la loro sicurezza e funzionalità. La verifica degli indirizzi garantisce che solo indirizzi legittimi possano interagire con lo smart contract, prevenendo attacchi potenziali e abusi di fondi.
È stato osservato che difetti nel modo in cui gli indirizzi vengono verificati possono creare seri rischi per la sicurezza. Ci sono stati casi nella comunità dove una verifica degli indirizzi debole ha portato a perdite finanziarie significative. Tuttavia, queste Vulnerabilità non sono state studiate a fondo, lasciando un vuoto nella nostra comprensione. Questo articolo ha l'obiettivo di fare luce su queste vulnerabilità e introdurre un metodo per rilevarle in modo efficace.
L'importanza della verifica degli indirizzi
Quando uno smart contract viene distribuito su Ethereum, interagisce spesso con vari indirizzi, sia per trasferire fondi che per chiamare funzioni. Se uno sviluppatore non controlla correttamente un indirizzo prima di usarlo, può portare a risultati inaspettati e dannosi. Ad esempio, un attaccante potrebbe sfruttare un difetto nel processo di verifica per deviare fondi dallo smart contract al proprio conto. Di conseguenza, garantire che gli indirizzi usati nelle transazioni siano validi è essenziale per la sicurezza di qualsiasi smart contract.
In Ethereum, ci sono due tipi di account: account di proprietà esterna (EOA) e smart contract. Le EOA sono controllate da una chiave privata, mentre gli smart contract sono governati dal codice. Le interazioni tra questi account avvengono attraverso transazioni, che portano dati necessari per eseguire funzioni all'interno degli smart contract.
Date le scommesse finanziarie coinvolte, identificare e affrontare potenziali vulnerabilità negli smart contract è una priorità assoluta. Rapporti recenti indicano che ci sono stati molti attacchi significativi contro contratti Ethereum ben noti, con miliardi di dollari persi.
Metodi attuali di verifica degli indirizzi
Molti strumenti sono attualmente in uso per analizzare e verificare la sicurezza degli smart contract. La maggior parte di questi strumenti si concentra sull'identificazione automatica delle vulnerabilità utilizzando vari metodi, tra cui Analisi Statica e dinamica.
Analisi statica: Questo metodo esamina il codice senza eseguirlo. Strumenti come Mythril e Slither analizzano il codice degli smart contract per trovare potenziali vulnerabilità. Utilizzano l'esecuzione simbolica, che cerca di esplorare tutti i possibili percorsi di esecuzione per identificare problemi.
Analisi Dinamica: A differenza dell'analisi statica, questo metodo testa il contratto in tempo reale, eseguendolo con vari input per vedere come si comporta. Anche se questo può far emergere problemi che l'analisi statica potrebbe perdere, è spesso intensivo in termini di risorse e può richiedere tempo.
Nonostante le varie tecniche in uso, nessuno degli strumenti esistenti individua efficacemente vulnerabilità legate specificamente alla verifica degli indirizzi. Di conseguenza, gli attaccanti possono sfruttare questa debolezza, portando a perdite finanziarie.
Un nuovo approccio alla rilevazione delle vulnerabilità nella verifica degli indirizzi
Per affrontare il problema delle vulnerabilità nella verifica degli indirizzi, proponiamo un nuovo framework. Questo framework è costruito su un metodo leggero di analisi di traccia che opera attraverso la simulazione statica del bytecode di Ethereum. Questo approccio consente di identificare vulnerabilità senza dover eseguire il codice, rendendolo più efficiente.
Il nostro framework utilizza una strategia di rilevazione a tre fasi per migliorare la precisione e ridurre i falsi positivi. La prima fase esamina il modo in cui gli indirizzi vengono validati. La seconda fase verifica se l'indirizzo può essere utilizzato in chiamate esterne. La terza fase valuta se possono verificarsi cambiamenti di stato on-chain a causa di quelle chiamate.
Utilizzando questo approccio strutturato, possiamo analizzare gli smart contract in modo più efficace e scoprire vulnerabilità che altrimenti potrebbero rimanere inosservate.
Risultati dalle valutazioni dei contratti
Per testare l'efficacia del nostro metodo, lo abbiamo applicato a un numero significativo di contratti Ethereum, per un totale di oltre cinque milioni. Questa valutazione su larga scala ci ha permesso di identificare numerosi contratti con vulnerabilità precedentemente non divulgate. Le nostre scoperte hanno rivelato che ci sono stati 812 contratti vulnerabili all'interno del set analizzato, con un valore totale bloccato superiore a 11,2 miliardi di dollari.
Inoltre, quando abbiamo confrontato il nostro metodo con strumenti esistenti, abbiamo notato miglioramenti sia in efficienza che in accuratezza. Il nostro approccio ha ridotto significativamente il tempo necessario per analizzare i contratti mantenendo alti tassi di precisione e richiamo. Di conseguenza, ha superato gli strumenti tradizionali che hanno avuto difficoltà con compiti simili.
Capacità di rilevamento in tempo reale
Uno dei principali vantaggi del nostro framework è la sua capacità di funzionare come un rilevatore in tempo reale. Questo significa che può valutare i contratti man mano che vengono distribuiti e fornire feedback immediato agli sviluppatori. Facendo questo, possiamo aiutare a catturare vulnerabilità prima che possano essere sfruttate nel mondo reale.
Ad esempio, durante un test pratico, il nostro framework ha sollevato un avviso su un contratto vulnerabile 1,5 ore prima che si verificasse un attacco reale. Questo dimostra che avvisi tempestivi possono consentire agli sviluppatori di intraprendere azioni preventive, potenzialmente risparmiando perdite finanziarie significative.
Meccanismi di verifica degli indirizzi
La verifica degli indirizzi può avvenire attraverso vari metodi, e molti contratti utilizzano queste tecniche. I metodi più comuni includono:
Confronti hard-coded: In questo metodo, il contratto confronta direttamente l'indirizzo passato con un indirizzo valido conosciuto. Se non corrispondono, si verifica un errore.
Validazione tramite mapping: Questo approccio utilizza una struttura di mapping per mantenere un elenco di indirizzi approvati. Una funzione verifica l'indirizzo fornito contro questo mapping per verificarne la validità.
Liste di indirizzi enumerate: In questo caso, gli indirizzi validi sono memorizzati in un array. Il contratto controlla se l'indirizzo passato esiste all'interno di questo array.
Anche se questi metodi servono a migliorare la sicurezza, non sono infallibili. Attaccanti esperti possono spesso trovare modi per eludere questi controlli, specialmente se uno dei metodi è implementato male.
Sfide nella verifica degli indirizzi
Identificare e risolvere vulnerabilità nella verifica degli indirizzi presenta diverse sfide:
Mancanza di informazioni semantiche: Il bytecode degli smart contract è spesso difficile da interpretare. Questa mancanza di chiarezza può rendere difficile determinare se un indirizzo viene verificato correttamente.
Complessità delle interazioni: Gli smart contract spesso chiamano altri contratti, portando a dipendenze complicate. Tracciare con successo queste interazioni richiede tecniche di analisi avanzate.
Gestione dinamica dei dati: I contratti usano frequentemente allocazioni di memoria dinamica, complicando ulteriormente l'analisi e rendendo più difficile tracciare la propagazione degli indirizzi.
A causa di queste sfide, gli strumenti tradizionali faticano a identificare difetti specifici nella verifica degli indirizzi.
Conclusione
La sicurezza degli smart contract è di fondamentale importanza poiché gestiscono asset finanziari significativi. La verifica degli indirizzi è un componente critico di questa sicurezza, ma vulnerabilità in quest'area possono portare a conseguenze gravi. Il nostro framework proposto offre una soluzione promettente per rilevare e affrontare queste vulnerabilità in modo più efficace rispetto agli strumenti esistenti.
Adottando un approccio semplice ed efficiente basato sull'analisi di traccia, possiamo migliorare significativamente la sicurezza degli smart contract su Ethereum. Questo lavoro evidenzia la necessità di una continua ricerca in quest'area e l'importanza di mantenere pratiche di sicurezza solide mentre l'ecosistema blockchain continua a evolversi.
Titolo: All Your Tokens are Belong to Us: Demystifying Address Verification Vulnerabilities in Solidity Smart Contracts
Estratto: In Ethereum, the practice of verifying the validity of the passed addresses is a common practice, which is a crucial step to ensure the secure execution of smart contracts. Vulnerabilities in the process of address verification can lead to great security issues, and anecdotal evidence has been reported by our community. However, this type of vulnerability has not been well studied. To fill the void, in this paper, we aim to characterize and detect this kind of emerging vulnerability. We design and implement AVVERIFIER, a lightweight taint analyzer based on static EVM opcode simulation. Its three-phase detector can progressively rule out false positives and false negatives based on the intrinsic characteristics. Upon a well-established and unbiased benchmark, AVVERIFIER can improve efficiency 2 to 5 times than the SOTA while maintaining a 94.3% precision and 100% recall. After a large-scale evaluation of over 5 million Ethereum smart contracts, we have identified 812 vulnerable smart contracts that were undisclosed by our community before this work, and 348 open source smart contracts were further verified, whose largest total value locked is over $11.2 billion. We further deploy AVVERIFIER as a real-time detector on Ethereum and Binance Smart Chain, and the results suggest that AVVERIFIER can raise timely warnings once contracts are deployed.
Autori: Tianle Sun, Ningyu He, Jiang Xiao, Yinliang Yue, Xiapu Luo, Haoyu Wang
Ultimo aggiornamento: 2024-05-30 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2405.20561
Fonte PDF: https://arxiv.org/pdf/2405.20561
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.