Vai al contenuto principale

Lista di controllo per la sicurezza degli smart contract

smart contract
sicurezza
solidity
Intermedio
Trailofbits
7 settembre 2020
3 minuti di lettura

Lista di controllo per lo sviluppo di smart contract

Ecco un processo ad alto livello che consigliamo di seguire durante la scrittura dei tuoi smart contract.

Controlla i problemi di sicurezza noti:

  • Esamina i tuoi contratti con Slither (si apre in una nuova scheda). Ha più di 40 rilevatori integrati per le vulnerabilità comuni. Eseguilo a ogni check-in con nuovo codice e assicurati che ottenga un report pulito (o usa la modalità triage per silenziare determinati problemi).
  • Esamina i tuoi contratti con Crytic (si apre in una nuova scheda). Controlla 50 problemi che Slither non rileva. Crytic può anche aiutare il tuo team a tenersi reciprocamente aggiornato, facendo emergere facilmente i problemi di sicurezza nelle Pull Request su GitHub.

Considera le funzionalità speciali del tuo contratto:

Ispeziona visivamente le funzionalità di sicurezza critiche del tuo codice:

Documenta le proprietà di sicurezza critiche e usa generatori di test automatizzati per valutarle:

  • Impara a documentare le proprietà di sicurezza per il tuo codice. All'inizio è difficile, ma è l'attività singola più importante per ottenere un buon risultato. È anche un prerequisito per utilizzare una qualsiasi delle tecniche avanzate in questo tutorial.
  • Definisci le proprietà di sicurezza in Solidity, per l'uso con Echidna (si apre in una nuova scheda) e Manticore (si apre in una nuova scheda). Concentrati sulla tua macchina a stati, sui controlli di accesso, sulle operazioni aritmetiche, sulle interazioni esterne e sulla conformità agli standard.
  • Definisci le proprietà di sicurezza con l'API Python di Slither. Concentrati sull'ereditarietà, sulle dipendenze delle variabili, sui controlli di accesso e su altri problemi strutturali.
  • Esegui i tuoi test delle proprietà a ogni commit con Crytic (si apre in una nuova scheda). Crytic può elaborare e valutare i test delle proprietà di sicurezza in modo che tutti nel tuo team possano facilmente vedere che passano su GitHub. I test falliti possono bloccare i commit.

Infine, fai attenzione ai problemi che gli strumenti automatizzati non possono trovare facilmente:

  • Mancanza di privacy: tutti gli altri possono vedere le tue transazioni mentre sono in coda nel pool
  • Transazioni di front running
  • Operazioni crittografiche
  • Interazioni rischiose con componenti esterni della finanza decentralizzata (DeFi)

Chiedi aiuto

Gli orari di ricevimento di Ethereum (si apre in una nuova scheda) si tengono ogni martedì pomeriggio. Queste sessioni individuali di 1 ora sono un'opportunità per farci qualsiasi domanda tu abbia sulla sicurezza, risolvere problemi usando i nostri strumenti e ottenere feedback dagli esperti sul tuo approccio attuale. Ti aiuteremo a completare questa guida.

Unisciti al nostro Slack: Empire Hacking (si apre in una nuova scheda). Siamo sempre disponibili nei canali #crytic ed #ethereum se hai delle domande.