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 (opens in a new tab). 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 (opens in a new tab). 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 (opens in a new tab) e Manticore (opens in a new tab). 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 (opens in a new tab). 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 (opens in a new tab) 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 (opens in a new tab). Siamo sempre disponibili nei canali #crytic ed #ethereum se hai delle domande.