Une brève introduction à l'audit de sécurité des contrats intelligents


Il semble qu'une nouvelle faille de sécurité se produise chaque jour. Mais comme pour toutes les choses de la vie, il est utile d'être informé et de connaître les risques avant de faire ce saut dans quelque chose de dangereux. Un contrat intelligent est un protocole de transaction informatisé qui s'exécute sur la blockchain. Cet article examinera les problèmes de sécurité courants de la blockchain et les risques de sécurité posés par les contrats intelligents et comment atténuer ces risques à l'aide d'un audit de sécurité des contrats intelligents.

Qu'est-ce qu'un audit de sécurité Smart Contract  ?

Les audits de sécurité des contrats intelligents sont effectués par une équipe tierce de programmeurs et de spécialistes de la blockchain. Il s'agit d'une revue méthodique du code à la recherche d'éventuels bugs ou failles. De telles failles pourraient être exploitées pour voler de l'argent, des informations personnelles, etc.

Les contrats intelligents sont connus pour contenir des vulnérabilités qui peuvent entraîner d'énormes pertes financières lorsqu'ils sont déployés sur la blockchain. Ces vulnérabilités des contrats intelligents peuvent également entraîner des violations de données et une perte de confidentialité. Les audits de sécurité des contrats intelligents sont indispensables pour tous les contrats intelligents qui seront utilisés pour stocker ou transférer de la valeur.

Pourquoi l'audit de sécurité des contrats intelligents est-il nécessaire  ?

Les audits de sécurité des contrats intelligents sont importants pour trois raisons. D'abord, les contrats intelligents contiennent du code qui est immuable et ne peut pas être modifié une fois qu'il est lancé sur la blockchain. Il n'y a pas d'autorité centrale régissant ces contrats. Par conséquent, si une vulnérabilité existe dans le contrat d'origine, chaque copie de ce contrat devient également vulnérable.

Les développeurs de contrats intelligents devraient revenir dans le code et apporter des corrections, ce qui nécessiterait un hard fork. Cela signifie que toute modification du contrat pourrait entraîner une interruption du réseau. Cela peut également créer de la confusion parmi les utilisateurs de contrats intelligents.

Seconde, les contrats intelligents ne sont pas à l'abri des vulnérabilités de sécurité des applications Web. Les contrats intelligents peuvent être piratés ou interagir avec une logique métier défectueuse les amenant à se comporter de manière inattendue. Par exemple, le hack DAO de 2016 où plus de 55 millions de dollars ont été volés dans un fonds d'investissement construit sur Ethereum.

Troisième, cela aide également à maintenir la confiance des clients. Les audits garantissent que vos contrats intelligents ne peuvent pas être exploités ou violés, entraînant une perte de fonds pour les clients.

Vulnérabilités de sécurité des contrats intelligents

(1) Condition de course

Une condition de concurrence survient lorsque plusieurs transactions se produisent en même temps. des portefeuilles ou des jetons.

Pour exploiter cette faiblesse sans autorisation, un attaquant pourrait soumettre sa transaction en même temps qu'un autre utilisateur. Ensuite, ils peuvent tous les deux finir par dépenser les mêmes fonds.

Cela peut entraîner une double dépense. Les attaquants sont capables d'exploiter cette faiblesse sans autorisation et d'effectuer plusieurs retraits d'un échange décentralisé ou de vider les portefeuilles de leur contenu.

Pour éviter les conditions de concurrence, il est préférable que les contrats intelligents incluent des mécanismes de sécurité qui n'autorisent qu'une seule transaction à la fois.

(2) Dépendance d'ordre de transaction (TOD)

Il est possible que les contrats intelligents s'exécutent à des moments différents. Cela signifie que les transactions peuvent ne pas être traitées dans l'ordre dans lequel elles ont été soumises.

Cela conduit à un facteur de deuil où les utilisateurs d'un contrat intelligent pourraient soumettre leur propre transaction avant d'autres, qui attendent une confirmation et leur font perdre leurs jetons ou leurs pièces.

Même Ethereum n'est pas conçu pour empêcher TOD, ce qui signifie qu'il peut être exploité par des attaquants. Les contrats intelligents qui stockent de la valeur doivent faire l'objet d'un audit de sécurité des contrats intelligents soigneusement inspecté pour détecter les vulnérabilités TOD.

(3) Rentrée

Les contrats intelligents qui incluent des fonctions importantes telles que le retrait de fonds peuvent être vulnérables aux attaques. Un pirate peut envoyer des demandes répétées au contrat intelligent et retirer plus de jetons que prévu.

Il s'agit d'une attaque de réentrée et les pirates peuvent exploiter cette faiblesse en parcourant la pile d'appels jusqu'à ce qu'ils atteignent la fonction souhaitée dans leur contrat intelligent.

Le pirate enverrait alors des demandes de paiement répétées, drainant les fonds des contrats intelligents ciblés sans autorisation ni limites.

Pour éviter cette faiblesse, les contrats intelligents devraient inclure des mécanismes de sécurité qui empêchent la réentrée afin de sécuriser le contrat intelligent et d'éviter de drainer des fonds des portefeuilles.

(4) Rejouer l'attaque

Les contrats intelligents qui stockent de la valeur, comme un ICO ou un échange décentralisé, peuvent être vulnérables aux attaques où un pirate informatique rejoue les transactions et envoie la même transaction plusieurs fois.

Il s'agit d'une attaque par rejeu et les pirates peuvent exploiter cette faiblesse sans autorisation en envoyant deux fois leurs propres transactions, ce qui entraîne une double dépense de jetons ou de pièces.

Pour éviter cette faiblesse, les contrats intelligents devraient inclure des mécanismes de sécurité empêchant les attaques par rejeu afin de sécuriser le contrat intelligent et d'éviter les doubles dépenses.

Comment effectuer un audit de sécurité des contrats intelligents  ?

Les audits Smart Contract sont effectués selon les étapes suivantes  :

  • Identifiez les mécanismes de sécurité à inclure dans votre contrat intelligent
  • Effectuez des tests de sécurité qui incluent des tests de contrats intelligents à l'aide de cadres de contrats intelligents et d'outils tels que Truffle Suite
  • Effectuez une prime de bogue sur le contrat intelligent une fois qu'il est prêt à être publié
  • Effectuer des tests externes pour les contrats intelligents

Conclusion

Il est important pour vous, en tant que développeur ou propriétaire d'entreprise cherchant à vous lancer dans la mise en œuvre de votre propre système intelligent basé sur des contrats, de vous assurer d'effectuer un audit avant de le déployer en production. Cela vous aidera à éviter les bugs embarrassants et les failles de sécurité qui pourraient avoir des conséquences désastreuses sur la réputation de votre entreprise s'ils étaient révélés publiquement.

Les déclarations,/ de la société et ne représentent pas ceux de Coinworldstory. un projet de blockchain ou un Ico, en particulier ceux qui garantissent des bénéfices. De plus. Veuillez respecter la loi de votre pays et prendre conseil auprès de votre conseiller.