150 millions de dollars bloqués sur le réseau Ethereum - Comment se protéger

La complexité est l'ennemi de la sécurité

Parity est une implémentation Ethereum écrite en rouille, dirigée par le très talentueux cofondateur d'Ethereum, Gavin Wood. L’implémentation fournit une interface utilisateur graphique facile à utiliser pour la création de portefeuilles à signatures multiples. Le contrat multi-signature qui sous-tend cette fonctionnalité présentait une vulnérabilité le 19 juillet 2017 qui a entraîné une perte de 30 millions de dollars. Le 7 novembre 2017, une deuxième vulnérabilité a été découverte dans le contrat de portefeuille, qui a entraîné un blocage de 150 millions de dollars dans Ether. Ethereum n'offre pas une solution simple pour les portefeuilles haute sécurité, mais vous pouvez prendre quelques mesures pour éviter d'être victime d'une telle attaque.

Le rapport de bug déposé par

Dans un environnement logiciel de production traditionnel, nous sommes en mesure de déployer du code sur une interface publique telle qu'un site Web. Si le code ne semble pas contenir la fonctionnalité que nous espérons, que se passe-t-il? Peut-être que personne ne remarque, peut-être que quelques personnes se plaignent, que nous pouvons mettre à jour le code en fin de journée et que le problème mineur est résolu Dans le monde d'Ethereum, une fois que nous déployons un morceau de code, il est là pour toujours, à voir et à jouer avec tout le monde. Dans un monde idéal, vous êtes le seul à avoir accès à ce code. Dans le monde de la blockchain, tout le monde y a accès. Cela signifie que si un élément de code est déployé sur le réseau Ethereum, il est dans la plupart des cas impossible de le mettre à jour.

Une conversation avec

Si nous mettons 1 million de dollars dans Ether dans un contrat intelligent et que le contrat intelligent contient une vulnérabilité, il se peut que certaines choses se produisent. Cela peut passer inaperçu, être remarqué par un pirate informatique qui décide de l'exploiter ou être découvert par le propriétaire du contrat et ce dernier sera en mesure de récupérer les fonds. Dans ce cas, il a été exploité par un individu prétendant "faire des recherches" sur le précédent hack de Parity.

L'attaquant

Alors, comment pouvons-nous nous protéger?

Principe de KISS - Keep it simple stupid

La plupart des contrats intelligents introduisent des vulnérabilités en essayant de prendre en compte les cas critiques et les optimisations. La première vulnérabilité de parité était due à une tentative d'optimisation de la quantité de gaz utilisée lors de l'exécution. La vulnérabilité de parité actuelle est due à l'inclusion de nouvelles fonctionnalités de bibliothèque non testées. Un contrat intelligent gérable comprendra le minimum de fonctionnalités nécessaires pour mener à bien la tâche. L'introduction de code pour optimiser une solution prématurée augmente la complexité du contrat, réduisant ainsi la sécurité.

Tests unitaires

En développement logiciel commun ainsi qu'en développement de contrat intelligent, il peut être pratique de négliger les tests unitaires adéquats. Lorsque le code est non révocable une fois qu'il est en production, un degré de diligence supérieur est requis. En règle générale, votre contrat smart doit contenir les tests unitaires adéquats permettant de vérifier la fonctionnalité de votre contrat smart ainsi que les cas critiques.

Audits de contrat intelligents

Tout contrat intelligent envoyé en production doit être soumis à un audit de sécurité. Un bon vérificateur de la sécurité des contrats intelligents aura l'expérience de la création de contrats intelligents dans le monde réel, d'une multitude de projets sur GitHub, et partagera une liste de contrôle des vulnérabilités communes qu'ils recherchent. Assurez-vous que l'auditeur puisse engager une conversation sur les différents vecteurs d'attaque associés à votre contrat intelligent. Cela peut ne pas sembler une approche formelle, mais l’industrie est encore très jeune et c’est comme cela qu’elle fonctionne pour le moment.

Le respect de ces consignes peut aider à réduire les risques et l’anxiété associés à l’envoi de contrats intelligents à Ethereum Mainnet.

Tester, auditer, déployer.