
La technologie blockchain a suscité l’intérêt des entreprises du monde entier. Ses avantages, notamment l'immuabilité et la transparence, ont conduit des entreprises traditionnelles en dehors du secteur financier, telles que BMW et Bosch, à expérimenter des contrats intelligents pour créer des chaînes d'approvisionnement plus efficaces et fabriquer des produits d'ingénierie plus intelligents.
Les contrats intelligents, qui sont essentiellement des logiciels codés dans une blockchain spécifique, formalisent et exécutent des accords entre plusieurs parties, éliminant ainsi le besoin d'un intermédiaire tiers de confiance, permettant un gain de temps et permettant une validation multipartite basée sur un consensus. Ils peuvent être utilisés dans diverses activités, telles que les testaments, les parties d’échecs et même le transfert d’actes.
Mais malgré tout le potentiel perturbateur et les capacités très vantées promises par la blockchain, le nombre de braquages ciblant les contrats intelligents a été multiplié par plus de 12 au cours des deux dernières années. S’ils sont si intelligents, pourquoi assistons-nous à une telle augmentation des braquages ?
Pour mieux comprendre, clarifions la relation entre blockchain et contrats intelligents.
Décentralisation
Pensez à un réseau blockchain comme la plateforme AWS d'Amazon et à chacun de ses contrats intelligents comme un serveur. Avec la blockchain, il n’existe pas un seul serveur centralisé que les pirates informatiques puissent exploiter, ce qui rend plus difficile pour les cybercriminels l’utilisation de méthodes de piratage traditionnelles, telles que les chevaux de Troie, les attaques physiques et les ransomwares. La blockchain les contrecarre en éliminant le point de défaillance unique d’un réseau.
Bien qu’un réseau blockchain ne puisse pas être piraté, de nombreuses applications distribuées et contrats intelligents facilités par la blockchain le peuvent.
Grâce au succès et à l’influence progressivement croissants de la finance décentralisée (DeFi), de grandes quantités de valeur sont acheminées via des contrats intelligents, ce qui les rend attrayants pour les pirates. Et cette menace ne fera probablement qu'augmenter à mesure que davantage d'actifs se déplacent sur la chaîne avec l'augmentation des actifs symboliques du monde réel. Le piratage constitue une menace sérieuse pour ce secteur en plein essor de la blockchain, car les actifs piratés des contrats intelligents sont extrêmement difficiles à récupérer.
Menaces sur les contrats intelligents
Comme tout code, les contrats intelligents sont sujets à l’erreur humaine. Ces erreurs peuvent prendre la forme de fautes de frappe, de fausses déclarations de spécifications ou d’erreurs plus graves qui peuvent être utilisées pour pirater ou « tromper » le contrat intelligent. Contrairement à la blockchain, rien ne garantit que les contrats ont été examinés par des pairs ou validés.
Si un codage erroné peut être évité grâce à un audit de contrat intelligent, d’autres menaces sont plus complexes. La vulnérabilité de visibilité par défaut, par exemple, est une erreur courante qui se produit lorsque la visibilité des fonctions n'est pas spécifiée et que certaines fonctions sont laissées publiques. Par exemple, les pirates pourraient accéder à la fonction Mint et créer des milliards de jetons pertinents. Heureusement, cette vulnérabilité peut être évitée en exécutant un audit garantissant que toutes les fonctions sont définies comme privées par défaut.
Une autre menace plus complexe et plus sérieuse causée par des erreurs de codage est l’attaque par réentrance. Cela se produit lorsqu’un attaquant profite des appels de fonctions externes du contrat intelligent et déploie un contrat intelligent malveillant pour interagir avec celui qui détient les fonds.
En 2016, l’incident DAO, survenu aux débuts d’Ethereum, a démontré à quel point ce type d’attaque peut être dangereux et a finalement conduit à la création d’Ethereum Classic. Prévenir les attaques par réentrée n'est pas simple, mais il existe des cadres et des protocoles qui peuvent atténuer les dégâts, notamment les CEI (vérification, effets et interactions), les gardes de réentrée et bien plus encore.
Si vous maîtrisez le code des contrats intelligents, la lecture du code lui-même est toujours un énorme avantage. Tout comme lire un contrat avant d’emménager dans un nouvel appartement vous protège de toute surprise, être capable de lire le code d’un contrat intelligent peut révéler des failles, des fonctions malveillantes ou des fonctionnalités qui ne fonctionnent pas ou n’ont pas de sens.
Cependant, si vous êtes un utilisateur final qui n’est pas particulièrement doué en technologie, utilisez uniquement des contrats intelligents avec un code accessible au public et largement utilisé. Contrairement aux contrats intelligents compilés, où le code est caché et où les utilisateurs ne peuvent pas le consulter, c'est l'option préférée.
Corriger les vulnérabilités des contrats intelligents
N'oublions pas que la plupart des administrateurs de contrats intelligents se laissent certains privilèges d'administrateur, généralement pour apporter des modifications après le lancement. Pour accéder à ces privilèges, les administrateurs doivent utiliser leurs clés privées. Ces clés privées constituent encore une autre vulnérabilité, et si elles ne sont pas conservées correctement (c'est-à-dire dans un coffre-fort hors ligne), les pirates qui y accèdent d'une manière ou d'une autre peuvent apporter des modifications au contrat intelligent et acheminer les fonds là où ils le souhaitent.
Dernièrement, le Parlement européen a exigé l'utilisation d'un mécanisme de coupe-circuit pour atténuer les dommages en cas de compromission d'un contrat intelligent. Alors que l'intention des régulateurs était de donner aux gens plus de protection sur leurs propres données personnelles, la loi a suscité des inquiétudes au sein de la communauté Web3.
S’il n’est pas mis en œuvre correctement, un kill switch pourrait détruire l’intégralité du contrat intelligent et toute valeur qui y est stockée. Une meilleure implémentation serait d'activer une fonction de pause qui, en cas de menace de sécurité, pourrait geler le contrat intelligent et le réactiver une fois le problème résolu.
