Passer au contenu principal

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

contrats intelligentssécuritésolidity
Intermédiaire
Trailofbits
Créer des contrats sécurisés(opens in a new tab)
7 septembre 2020
3 minutes de lecture minute read

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

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

Recherchez les vulnérabilités connues :

  • Vérifiez vos contrats avec Slither(opens in a new tab). Cet outil intègre plus de 40 détecteurs pour les vulnérabilités connues. Exécutez-le à chaque enregistrement d'un nouveau code et assurez-vous que son rapport soit positif (ou utilisez le mode triage pour mettre sous silence certains problèmes).
  • Vérifiez vos contrats avec Crytic(opens in a new tab). Il vérifie 50 vulnérabilités que Slither ne détecte pas. Cryptic peut également aider votre équipe à rester le maître du jeu en faisant apparaître facilement les problèmes de sécurité dans les Pull Requests sur GitHub.

Considérez les caractéristiques spéciales de votre contrat :

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

Documentez les propriétés critiques de sécurité 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épart, mais c'est l'activité la plus importante pour obtenir un bon résultat. C'est également un prérequis à l'utilisation des techniques avancées de ce tutoriel.
  • Definissez les propriétés de sécurité en Solidity, pour les utiliser avec Echidna(opens in a new tab) et Manticore(opens in a new tab). Concentrez-vous sur votre automate, 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 des variables, les contrôles d'accès et d'autres problèmes structurels.
  • Exécutez vos tests de propriété sur chaque commit avec Crytic(opens in a new tab). Crytic peut consommer et évaluer les tests de propriétés de sécurité pour que tout le monde dans votre équipe puisse facilement voir qu'ils passent sur GitHub. Les tests en échec peuvent bloquer les commits.

Enfin, soyez attentifs 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 mises en file d'attente dans le pool
  • Vol de priorité des transactions
  • Opérations cryptographiques
  • Interactions risquées avec les composants DeFi externes

Demandez de l'aide

Les heures de bureau d'Ethereum(opens in a new tab) se déroulent tous les mardis après-midi. Ces sessions en tête à tête sont l'occasion de nous poser toutes vos questions sur la sécurité, de dépannage à l'aide de nos outils et d'obtenir des commentaires d'experts sur votre approche actuelle. Nous vous aiderons à travailler à travers 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.

Dernière modification: @plamarque(opens in a new tab), 15 août 2023

Ce tutoriel vous a été utile ?