Passer au contenu principal

Liste de contrôle de sécurité des contrats intelligents

contrats intelligents
sécurité
Solidity
Intermédiaire
Trailofbits
7 septembre 2020
3 minutes de lecture

Liste de contrôle pour le développement de contrats intelligents

Voici un processus de haut niveau que nous recommandons de suivre lors de la rédaction de vos contrats intelligents.

Vérifiez les problèmes de sécurité connus :

  • Révisez vos contrats avec Slither (opens in a new tab). Il possède plus de 40 détecteurs intégrés pour les vulnérabilités courantes. Exécutez-le à chaque validation de nouveau code et assurez-vous d'obtenir un rapport vierge (ou utilisez le mode triage pour ignorer certains problèmes).
  • Révisez vos contrats avec Crytic (opens in a new tab). Il vérifie 50 problèmes que Slither ne détecte pas. Crytic peut également aider votre équipe à rester synchronisée, en mettant facilement en évidence les problèmes de sécurité dans les Pull Requests sur GitHub.

Prenez en compte les fonctionnalités spécifiques de votre contrat :

Inspectez visuellement les fonctionnalités de sécurité critiques de votre code :

Documentez les propriétés de sécurité critiques et utilisez des générateurs de tests automatisés pour les évaluer :

  • Apprenez à documenter les propriétés de sécurité de votre code. C'est difficile au début, mais c'est l'activité la plus importante pour obtenir un bon résultat. C'est également une condition préalable à l'utilisation de l'une des techniques avancées de ce tutoriel.
  • Définissez les propriétés de sécurité dans Solidity, pour les utiliser avec Echidna (opens in a new tab) et Manticore (opens in a new tab). Concentrez-vous sur votre machine d'état, les contrôles d'accès, les opérations arithmétiques, les interactions externes et la conformité aux normes.
  • Définissez les propriétés de sécurité avec l'API Python de Slither. Concentrez-vous sur l'héritage, les dépendances de variables, les contrôles d'accès et d'autres problèmes structurels.
  • Exécutez vos tests de propriétés à chaque commit avec Crytic (opens in a new tab). Crytic peut consommer et évaluer les tests de propriétés de sécurité afin que tous les membres de votre équipe puissent facilement voir qu'ils réussissent sur GitHub. Les tests qui échouent peuvent bloquer les commits.

Enfin, soyez attentif aux problèmes que les outils automatisés ne peuvent pas facilement trouver :

  • Manque de confidentialité : tout le monde peut voir vos transactions pendant qu'elles sont en attente dans le pool
  • Transactions de type front-running
  • Opérations cryptographiques
  • Interactions risquées avec des composants externes de la finance décentralisée (DeFi)

Demander de l'aide

Les heures de permanence d'Ethereum (opens in a new tab) ont lieu tous les mardis après-midi. Ces sessions individuelles d'une heure sont l'occasion de nous poser toutes vos questions sur la sécurité, de résoudre des problèmes à l'aide de nos outils et d'obtenir les commentaires d'experts sur votre approche actuelle. Nous vous aiderons à parcourir ce guide.

Rejoignez notre Slack : Empire Hacking (opens in a new tab). Nous sommes toujours disponibles dans les canaux #crytic et #ethereum si vous avez des questions.