BLOG

L'importance de DevSecOps dans la blockchain, les protocoles décentralisés et les applications

Vignette de Kevin Jones
Kevin Jones
Publié le 27 octobre 2022

La sécurité a toujours été l’un des aspects les plus importants des technologies de l’information, et aujourd’hui, de nombreuses organisations et leurs développeurs adoptent une mentalité privilégiant la sécurité lors de la création applications. Ces principes et actions sont souvent décrits collectivement sous le nom de « DevSecOps », qui englobe l’ensemble de la culture et de l’approche de la sécurité des application . DevSecOps signifie développement, sécurité et opérations. Son objectif est d’intégrer une mentalité de sécurité avant tout dans tous les aspects des technologies de l’information et de l’infrastructure.

L’un des domaines les plus récents et les plus passionnants des technologies de l’information est la blockchain, qui s’accompagne d’un écosystème géant de protocoles et applications décentralisés qui visent à nous emmener vers une version mise à jour du Web, ce que beaucoup appellent Web3.

Qu'est-ce que le Web3 et qu'est-ce qu'une application décentralisée exactement ?

Le terme Web3 englobe divers concepts qui se concentrent sur des aspects de l'architecture des application et de l'expérience utilisateur :

  • Décentralisation
  • Ouverture
  • Immutabilité
  • Programmabilité
  • Transparence

Ces concepts fondamentaux visent à redonner aux utilisateurs le contrôle de leur identité grâce à la cryptographie à clé publique et à accroître l’adoption de l’économie peer-to-peer via divers mécanismes et protocoles de blockchain. De nombreuses blockchains et leurs protocoles environnants peuvent traiter des transactions avancées et gérer l’état à l’aide de contrats intelligents exécutés dans des environnements virtualisés isolés.

Ceux-ci sont ensuite synchronisés sur tous les nœuds du réseau via un mécanisme appelé algorithme de consensus. Il s’agit d’un mécanisme qui permet aux utilisateurs ou aux nœuds de se coordonner dans un environnement distribué pour garantir que tous les nœuds du système peuvent s’entendre sur une source unique de vérité, même si certains agents échouent. De plus, de nombreuses blockchains fonctionnent de manière résistante à la censure en gardant leurs protocoles ouverts et sans autorisation.

À quoi ressemble le paysage?

Il existe un risque supplémentaire dans une architecture basée sur la blockchain, car l’épine dorsale du réseau est généralement alimentée par une cryptomonnaie numérique basée sur des jetons et porte généralement une valeur monétaire. Ces jetons sont détenus dans des adresses, généralement stockées dans des comptes détenus en externe ou dans des contrats intelligents. Et comme la confiance est également distribuée grâce à l’utilisation de la cryptographie à clé publique, chaque adresse sur le réseau est sujette à une attaque.

Le solde de chaque compte est distribué sur le réseau dans ce qu'on appelle le grand livre public, visible par tous, ce qui laisse une fenêtre ouverte aux pirates pour cibler des utilisateurs ou des contrats spécifiques. Cela fait de la confidentialité et de l’anonymat des aspects particulièrement importants pour la blockchain. Souvent, les personnes qui gèrent ces comptes sont soit la cible d’attaques, soit autorisées, du fait de leur position, à agir de manière illicite, avec des menaces telles que :

  • Ingénierie sociale
  • Confiance ou clés mal gérées
  • Détournement de fonds et fraude
  • Escroqueries

De plus, l’empreinte technologique de ces différentes technologies blockchain, protocoles et applications décentralisées est déjà importante et croît rapidement. Il est donc important de réfléchir aux implications de cet écosystème en pleine croissance en matière de sécurité. Tout ce qui est construit avec un concept de base de décentralisation a un paysage élargi et donc plus de points d’attaque qui doivent être soigneusement analysés et sécurisés.

Voici quelques sujets qui méritent d’être pris en compte lors de l’audit de la sécurité de vos applications décentralisées et de votre infrastructure technologique :

  • Blockchains de couche 1 (Bitcoin et Ethereum)
  • Blockchains de couche 2 (Sidechains et Rollups)
  • Contrats intelligents
  • Compilateurs
  • Portefeuilles logiciels
  • Portefeuilles matériels
  • Clients Blockchain (mineurs et validateurs)
  • Bourses de garde (centralisées)
  • Échanges DeFi (décentralisés)
  • Fournisseurs
  • Places de marché (NFT)

Vecteurs d'attaque courants dans les contrats intelligents

Lorsque nous parlons de DevSecOps dans le cycle de développement d’une application, nous faisons généralement référence au développement axé sur la sécurité. C'est ce qu'on appelle communément l'acte de déplacer la sécurité vers la gauche. C’est l’un des aspects les plus importants de la culture DevSecOps, car tout commence par la réflexion des développeurs sur la sécurité en tant que code. Étant donné que les contrats intelligents basés sur la blockchain peuvent stocker de la valeur et agir comme une banque, cela rend le code qu'ils contiennent particulièrement vulnérable aux attaques et ils doivent être écrits avec une sécurité stricte à l'esprit.

L’industrie a été témoin de plusieurs piratages ciblant les contrats intelligents autour des vulnérabilités, généralement axés sur l’exploitation du code. L'un des plus grands piratages de l'histoire a eu lieu l'année dernière lorsque Poly Network, un protocole inter-chaînes, a signalé qu'un attaquant avait piraté un contrat intelligent, transférant l'équivalent de 610 millions de dollars américains en déplaçant divers actifs vers des adresses de portefeuille externes contrôlées par le pirate.

Le développement de contrats intelligents présente de nombreuses vulnérabilités, mais certaines des attaques les plus fréquentes sont les suivantes :

  • Dépassement de capacité et dépassement de capacité : se produit généralement lorsque des opérations arithmétiques amènent les entiers non signés à atteindre leur taille d'octet maximale, ce qui provoque un « enroulement » de la valeur et peut entraîner un comportement inattendu dans la logique métier de votre application.
  • Réentrée de contrat – L’action d’exploiter un contrat en y entrant à plusieurs reprises, où l’attaquant retire généralement plus de fonds que ce qui devrait être autorisé.
  • Front running des transactions – Il s’agit du processus par lequel une personne utilise la technologie ou un avantage du marché pour obtenir une connaissance préalable des transactions à venir.
  • Des secrets mal gérés.
  • Contrôle d'accès mal mis en œuvre.

Que pouvez-vous faire pour égaliser les règles du jeu ?

  • Construire une culture de sécurité avant tout . Les concepts DevSecOps constituent un excellent point de départ pour les organisations qui cherchent à créer une culture axée sur la sécurité.
  • Réaliser des audits . Les audits offrent une nouvelle perspective sur la logique de application et les processus opérationnels, aident à exposer les vulnérabilités du code et inspirent confiance aux utilisateurs de votre application. MythX et Slither sont d'excellents outils pour auditer les contrats intelligents Ethereum.
  • Offrez des primes aux bugs et effectuez des tests d'intrusion participatifs . La sécurité participative est une méthode éprouvée pour vous aider à renforcer votre empreinte de sécurité. En plaçant votre entreprise dans des programmes de bug bounty et en effectuant des tests de pénétration de vos applications et de votre infrastructure, vous pouvez garder une longueur d'avance sur les vulnérabilités et les piratages.
  • Adoptez une stratégie open source. La transparence de votre application est importante dans une technologie comme la blockchain, car elle permet aux participants d'accepter en fonction de la vérification et des audits de votre code. De plus, le fait d’avoir des composants open source permet une plus grande responsabilisation de votre projet dans un cadre communautaire.
  • Implémenter la multi-signature pour les opérations administratives. La mise en œuvre de contrats intelligents qui adoptent une architecture multi-signature pour les fonctions administratives telles que le transfert de propriété, de fonds et d’autres opérations critiques fournira une couche de sécurité supplémentaire pour votre application.

Conclusion

La blockchain, les applications décentralisées et les différents protocoles qui les entourent connaissent une croissance rapide. Ces nouvelles méthodes passionnantes de déploiement applications ont le potentiel de perturber de nombreux secteurs différents. Cependant, il est impératif que nous nous concentrions sur une mentalité axée sur la sécurité et que nous mettions en œuvre une culture DevSecOps partout où cela est possible.

Lectures complémentaires

Une bonne première étape dans le voyage de chacun vers la blockchain est le livre blanc associé au protocole sur lequel vous construisez : 

Ensuite, étudiez les piratages et les vulnérabilités précédents, allant même jusqu’à essayer de reproduire le piratage dans votre environnement de développement.

Pour obtenir une expérience d'apprentissage pratique en matière de sécurité sur Ethereum, je recommande les programmes de capture du drapeau (CTF) suivants dans lesquels les vulnérabilités ou « drapeaux » sont cachés dans des programmes ou des sites Web volontairement vulnérables pour enseigner les principes fondamentaux de la sécurité.