Vai al contenuto principale

Lista di controllo per la sicurezza dei contratti intelligenti

contratti intelligenti
sicurezza
Solidity
Intermedio
Trailofbits
7 settembre 2020
3 minuti di lettura

Lista di controllo per lo sviluppo di contratti intelligenti

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

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 rapporto 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 rimanere 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 usare 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ò consumare 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 DeFi esterni

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 lavorare su questa guida.

Unisciti al nostro Slack: Empire Hacking (opens in a new tab). Siamo sempre disponibili nei canali #crytic ed #ethereum se hai domande.

Ultimo aggiornamento della pagina: 7 febbraio 2025

Questo tutorial è stato utile?