Che cos'è un security audit di smart contract?
Home
Articoli
Che cos'è un security audit di smart contract?

Che cos'è un security audit di smart contract?

Intermedio
Pubblicato Mar 1, 2022Aggiornato Apr 27, 2023
8m

TL;DR

Un security audit di smart contract fornisce un'analisi dettagliata degli smart contract di un progetto. Tali audit sono importanti per salvaguardare i fondi investiti all'interno di questi contratti. Poiché tutte le transazioni sulla blockchain sono definitive, i fondi non possono essere recuperati in caso di furto. In genere, chi effettua un audit esaminerà il codice degli smart contract, produrrà un report e lo fornirà al team del progetto affinché possa lavorare sugli errori emersi. Verrà quindi pubblicato un report finale, che descrive in dettaglio eventuali errori in sospeso e il lavoro che è già stato svolto per risolvere i problemi di prestazioni o sicurezza.


Introduzione

I security audit di smart contract sono molto comuni nell'ecosistema della finanza decentralizzata (DeFi). Se hai investito in un progetto blockchain, la tua decisione potrebbe essersi basata, in parte, sui risultati di una revisione del codice di un smart contract.

Sebbene la maggior parte delle persone comprenda l'importanza degli audit per la cybersecurity, non molti si mettono a controllare le linee di codice. Guardiamo i metodi, gli strumenti e i risultati che generalmente emergono nei security audit di uno smart contract, in modo da poter prendere decisioni più informate.


Cos'è un audit di smart contract?

Un security audit di smart contract esamina e commenta il codice dello smart contract di un progetto. In genere, questi contratti sono scritti in Solidity e forniti tramite GitHub. I security audit sono particolarmente utili per i progetti DeFi che potrebbero gestire le transazioni blockchain dal valore di milioni di dollari o di un'enorme quantità di partecipanti. Di solito, gli audit seguono un processo diviso in quattro fasi:

1. Gli smart contract vengono forniti all'audit team per l'analisi iniziale.

2. L'audit team presenta i risultati ai referenti del progetto, indicando le problematiche su cui devono agire.

3. Il team di progetto apporta le modifiche in base ai problemi trovati.

4. L'audit team rilascia il report finale, considerando eventuali modifiche o errori in sospeso.

Per molti utenti crypto, gli audit degli smart contract sono essenziali, quando si investe in nuovi progetti DeFi. L'audit è diventato uno standard per i progetti che vogliono essere presi sul serio. Alcuni provider di audit sono anche considerati dei leader di settore, rendendo i loro controlli più preziosi agli occhi degli investitori.


Perché abbiamo bisogno degli smart contract audit?

Vista la grande quantità di valore scambiato o bloccato negli smart contract, questi ultimi diventano obiettivi appetibili per gli attacchi da parte degli hacker. Piccoli errori nel codice possono portare al furto di enormi somme di denaro. Ad esempio, l'hack di the DAO sulla  blockchain Ethereum ha portato a una perdita di circa 60 milioni di dollari in ETH e ad un hard fork su rete Ethereum.

Visto che le transazioni blockchain sono irreversibili, è essenziale assicurarsi che il codice di un progetto sia sicuro. La natura altamente sicura della tecnologia blockchain rende difficile recuperare dei fondi e risolvere dei problemi a posteriori; quindi è meglio prevenire, a tutti i costi, tali vulnerabilità.


Come funziona l'audit di uno smart contract?

Il processo di audit di un smart contract è abbastanza standard tra i fornitori di tale servizio. Sebbene l'approccio di ciascun revisore possa differire leggermente, il processo tipico è il seguente:

1. Determinare l'ambito dell'audit. Gli smart contract e le specifiche di progetto sono definiti dal tipo di progetto (il loro scopo previsto) e dall'architettura generale. Una specifica aiuta l'audit team a comprendere gli obiettivi del progetto, quando viene scritto e utilizzato il codice.

2. Fornire una quotazione iniziale in base alla quantità di lavoro necessaria.

3. Eseguire dei test. La tipologia esatta cambierà a seconda del team di auditing, dei loro strumenti di analisi e dei loro metodi. Di solito vengono eseguiti test sia manuali che automatici.

4. Creare una prima bozza di report con gli errori trovati e fornirla al team di progetto per dei feedback e per le correzioni di follow-up.

5. Pubblicare il report finale, considerando qualsiasi azione intrapresa dal team per risolvere i problemi sollevati.


Metodi di audit degli smart contract

Efficienza del gas 

Gli audit di smart contract non si concentrano solo sulla sicurezza della blockchain. Esaminano anche l'efficienza e l'ottimizzazione. Alcuni smart contract eseguono una serie complicata di transazioni per completare la loro funzione prevista. Essendo le commissioni gas su reti come Ethereum relativamente costose, gli smart contract efficienti possono far risparmiare molto sui costi di transazione.

Ottimizzare le prestazioni è anche un indicatore delle competenze dello sviluppatore. I passaggi inefficienti comportano più punti di errore e andrebbero evitati. Quando i costi del gas sono elevati, gli smart contract potrebbero non essere eseguiti, a maggior ragione se viene utilizzato un basso limite del gas.

Vulnerabilità nei contratti

La maggior parte del lavoro negli audit, comporta il controllo delle vulnerabilità legate alla sicurezza del contratto. Mentre alcuni problemi possono essere facili da vedere, molti exploit coinvolgono tecniche e strategie avanzate per rubare i fondi. Ad esempio, la manipolazione di mercato può essere raggiunta tramite l'utilizzo di smart contract deboli dal punto di vista della sicurezza, così da eseguire attacchi flash loan. Per individuare questi problemi, i revisori eseguono un processo di break testing e simulano attacchi malevoli verso tale smart contract. Le vulnerabilità comuni includono:

1. Reentrancy issue: quando uno smart contract effettua una chiamata esterna a un altro contratto esterno prima della risoluzione di qualsiasi effect. Il contratto esterno può quindi chiamare ricorsivamente lo smart contract originale e interagire con esso, in modi che non dovrebbe essere in grado di fare, dato ad esempio il fatto che il saldo del contratto originale non è ancora stato aggiornato.
2. Integer overflows and underflows: quando uno smart contract esegue un'operazione aritmetica, ma l'output supera la capacità di storage (in genere 18 posizioni decimali). Questo può comportare il calcolo di importi errati.
3. Opportunità di front running: un codice mal strutturato può fornire la possibilità di anticipare gli acquisti o le vendite di mercato. Questo, a sua volta, può consentire ad altri di utilizzare le informazioni e fare trading a proprio vantaggio.

Difetti di sicurezza delle piattaforme

La maggior parte degli audit includono l'analisi della rete che ospita i contratti e persino l'API utilizzata per interagire con la DApp. Un progetto può essere vulnerabile a un attacco DDoS o avere l'interfaccia utente del sito Web compromessa, il che significa che gli utenti collegheranno effettivamente i loro wallet ad applicazioni blockchain dannose.


Cos'è un audit report?

L'audit report viene fornito al termine del processo di controllo. Per trasparenza, ci si aspetta che i progetti condividano i loro risultati con la comunità. La maggior parte dei report categorizza i problemi in base alla gravità, come critici, principali, minori, ecc. Il report elencherà anche lo stato dei problemi, dando ai progetti tempo per risolverli prima del rilascio del report finale.

Insieme a un riepilogo esecutivo, un report standard conterrà suggerimenti, esempi di codice ridondante e una suddivisione completa di dove sono presenti tali errori. Il progetto ha tempo di agire in base ai risultati del report, prima che venga rilasciata la versione finale.


Come posso chiedere un audit di uno smart contract?

Un certo numero di provider di audit per smart contract è diventato ben noto per il loro lavoro. Due sono particolarmente popolari e ottenere un loro audit richiederà un preventivo iniziale e una consegna di informazioni.

CertiK

CertiK è un leader del settore quando parliamo di audit di smart contract. Centinaia di progetti hanno sottoposto i loro smart contract a un audit con CertiK. PancakeSwap, il più grande market maker automatizzato (AMM) di BSC ne è un esempio. Di seguito è riportata una sezione dell'audit di Certik su PancakeSwap.


Inoltre, la stragrande maggioranza dei progetti supportati da Binance Labs ha svolto audit dei propri smart contract con CertiK. CertiK rilascia una classifica dei progetti controllati che ti consente di confrontarli tra loro, utilizzando anche un punteggio di sicurezza. Nota che, oltre a Ethereum, CertiK si occupa anche di progetti su BSC e Polygon.


ConsenSys Diligence

Gestito da Joseph Lubin, co-fondatore di Ethereum, ConsenSys è uno dei più grandi nomi del settore crypto, nello sviluppo della blockchain. Attraverso ConsenSys Diligence, l'azienda offre audit di smart contract su Ethereum. Inoltre, fornisce un servizio automatizzato che controlla gli smart contract Ethereum Virtual Machine (EVM) in cerca di errori comuni.


Quanto costa un audit di smart contract?

Il costo esatto di un audit dipende dal numero di contratti da controllare. In genere, un audit costerà migliaia di dollari. Un progetto di grandi dimensioni può facilmente costare oltre 10.000$. L'azienda di audit che gestisce il controllo e la sua reputazione avranno anche un impatto su quanto paghi.


In chiusura

Fortunatamente per gli investitori e gli utenti, gli audit di smart contract sono diventati un golden standard. Tuttavia, quando ogni progetto possiede un audit, questo non rappresenta più un indicatore di valore. Ecco perché è estremamente importante leggere personalmente un audit. Anche se non disponi delle conoscenze tecniche, è utile dare un'occhiata ai commenti e alla gravità dei potenziali problemi.

Quando ti imbatti in un audit, adesso dovresti almeno avere un po' più chiaro come comprenderne il contenuto. Come sempre, assicurati, per qualsiasi decisione di investimento, di tenere conto di tutte le informazioni disponibili.