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.
Le terme Web3 englobe divers concepts qui se concentrent sur des aspects de l'architecture des application et de l'expérience utilisateur :
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.
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 :
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 :
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 :
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.
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é.