Sécurité des contrats intelligents : une approche Agile SDLC PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Sécurité des contrats intelligents : une approche SDLC agile 

Temps de lecture: 10 minutes

La blockchain est citée comme un registre décentralisé et inviolable. Mais ce grand livre inviolable est vulnérable aux piratages et aux exploits. La décentralisation, qui est l'un des avantages les plus forts de Blockchain, est l'un des inconvénients. 

Bon, c'est bien, mais qu'en est-il du SDLC ? 

L'approche du cycle de vie des logiciels dont nous sommes sur le point de discuter est basée sur la classification des vulnérabilités de sécurité dans les contrats intelligents en plusieurs phases. 

Dans la première section, nous avons exposé les problèmes de sécurité dans les contrats intelligents. Et dans la section suivante, nous discutons de ses solutions divisées en quatre phases ; Conception de la sécurité, mise en œuvre de la sécurité, tests avant déploiement, et le dernier, surveillance et analyse. 

ANALYSE DES PROBLÈMES DE SÉCURITÉ DANS LES CONTRATS INTELLIGENTS 

Les contrats intelligents sont vulnérables à divers hacks et exploits. Ces contrats qui sont synonymes d'accords juridiques réels sont exécutés de manière indépendante sur la base des termes des blockchains natives. 

Mais avez-vous pensé que même ces blockchains natives peuvent également être responsables de menaces de sécurité potentielles dans les contrats intelligents ? Ci-dessous, nous présentons certaines des caractéristiques des Blockchains pour le même :

La décentralisation: Il est considéré comme l'un des avantages des protocoles basés sur la blockchain. Mais les attaquants ont trouvé un moyen de transformer cette caractéristique positive en une caractéristique négative. 

Des acteurs malveillants peuvent créer une fausse identité pour développer et déployer un contrat intelligent. Parfois, il devient difficile d'identifier un contrat vulnérable car seule l'adresse publique (ou) les clés publiques sont disponibles sur les blockchains publiques. 

Code Open-Source: Cela peut vous surprendre, mais oui, en général, la plupart des codes de contrats intelligents sont quelque peu open-source. 

Disons que dans le cas d'Ethereum Virtual Machine (EVM), son bytecode est toujours public. Et certains décompilateurs Solidity peuvent vous aider à obtenir une adresse de contrat intelligente et le code Solidity. L'exposition du code source rend cette fonctionnalité avantageuse pour les attaquants. 

Plates-formes blockchain non évoluées: Pour un développeur, il est primordial de se familiariser avec la plate-forme de développement. Il existe de nombreuses plates-formes de blockchain sous-développées ou nouvelles, de sorte que les développeurs ne peuvent pas développer une connaissance approfondie des opérations sur la blockchain. 

Cette incohérence affecte les contrats intelligents en raison d'un manque de synchronisation. Les failles de la plateforme blockchain restent inaperçues en raison de son évolution continue. 

Transactions inconnues: Dans le premier point, nous avons discuté de l'identité anonyme ; de même, les transactions sur les blockchains ne sont pas divulguées. Il est impossible de retracer les transactions, ce qui entraîne de nombreuses activités illégales. Comme des transactions financières sont impliquées, tout problème de sécurité peut entraîner d'énormes pertes financières. 

SOLUTIONS DE SÉCURITÉ INTELLIGENTE DES CONTRATS

Maintenant, en avançant dans la sécurité des contrats intelligents, nous pouvons comparer toutes les étapes nécessaires pour sécuriser un contrat intelligent avec son évolution. Comme dans le développement de logiciels traditionnels, nous avons tendance à suivre un cycle de développement ; de même, nous pouvons classer le cycle de vie du développement des contrats. 

Le cycle de vie du développement de contrats intelligents peut être divisé en quatre phases : conception de la sécurité, mise en œuvre de la sécurité, tests avant déploiement, et surveillance et analyse.

aperçu des thèmes de sécurité du point de vue du cycle de vie des contrats intelligents
aperçu des thèmes de sécurité du point de vue du cycle de vie des contrats intelligents

1. CONCEPTION DE SÉCURITÉ 

Cette première phase englobe trois thèmes ; principe de conception, modèle de conception et modélisation de la sécurité (comme illustré dans la figure ci-dessus). L'objectif principal de ces thèmes est la conception des contrats et la manière dont les menaces de sécurité peuvent être évitées. 

PRINCIPE DE CONCEPTION

Les principes de conception sont des idées fondamentales pour concevoir des contrats intelligents sécurisés sur la blockchain. Il existe cinq principes de conception essentiels pour les contrats : se préparer à l'échec, déployer avec soin, garder les contrats simples, rester à jour et connaître les propriétés de la blockchain. 

Maintenant, vous pensez peut-être, comment vont-ils aider à créer un contrat intelligent sécurisé ? 

Prenons l'un des principes ci-dessus, disons, "Préparez-vous à l'échec", cela signifie qu'en l'absence de schémas de correctifs, le contrat devrait être en mesure de répondre aux bogues. Et si une attaque a lieu, le contrat doit pouvoir s'arrêter pour éviter toute perte supplémentaire. 

DESIGN PATTERN

Dans la conception de logiciels, les modèles de conception sont les solutions qui peuvent être réutilisées pour résoudre un problème. 

Si nous prenons un exemple d'Ethereum, il existe six modèles de sécurité ; Vérifier-effets-interaction, Arrêt d'urgence, Mutex, Ralentisseur, Limite de débit et Limite d'équilibre.  

Nous pouvons utiliser ces modèles de sécurité pour résoudre les problèmes de sécurité dans la blockchain, comme la vulnérabilité de réentrance peut être gérée par le modèle Mutex. 

Dans le même temps, le modèle d'arrêt d'urgence peut nous aider à mettre fin à l'exécution d'un contrat s'il est affecté par une vulnérabilité. 

MODÉLISATION DE LA SÉCURITÉ

Il peut y avoir une différence entre le code développé et le code requis pour les contrats car Solidity est utilisé pour créer des contrats ; ce langage satisfait l'exhaustivité de Turing, mais il est sujet aux erreurs. 

La figure ci-dessus montre que cette sous-phase couvre deux phases ; conception et mise en œuvre de la sécurité. 

La modélisation de la sécurité est directement liée à la logique métier ; comme les spécifications sont dérivées du métier, la logique peut être classée par une sémantique sans erreur. Cela aide plus tard au cours du processus de vérification formel effectué pour atténuer les vulnérabilités. 

2. MISE EN ŒUVRE DE LA SÉCURITÉ

Dans cette section, nous couvrirons deux des trois thèmes; Sécurité

Modèle de développement et de sécurité, car nous avons déjà couvert la modélisation de la sécurité dans la dernière phase.

DÉVELOPPEMENT SÉCURITÉ

Cette section verra comment les vulnérabilités peuvent être évitées pendant le processus de mise en œuvre du contrat. 

Sur la plate-forme Ethereum, nous avons des EIP de sécurité (propositions d'amélioration d'Ethereum) - des recommandations pour lutter contre les problèmes de sécurité sur le Ethereum Plate-forme. Ainsi, ces EIP sont remarquables pour la mise en œuvre sécurisée de contrats intelligents. 

MODÈLE DE SÉCURITÉ

Les modèles servent d'origine pour les nouveaux documents. Les modèles de contrat intelligents avec des paramètres opérationnels connectent un accord juridique à un code exécutable. 

Dans le contexte de la sécurité des contrats intelligents, il est possible d'extraire les modèles de contrat standard avec des paramètres de sécurité mis à niveau, tels que des modèles de sécurité et des bibliothèques de sécurité. Cela réduira la possibilité d'erreurs dans le codage manuel. 

3. TESTS AVANT DÉPLOIEMENT

Encore une fois, l'exigence de cette phase découle de l'un des avantages des contrats intelligents - "l'immuabilité". 

Une fois les contrats intelligents créés, il n'y a aucun moyen de les modifier. Par conséquent, il est obligatoire d'effectuer suffisamment de tests pour assurer la sécurité des contrats intelligents avant le déploiement.

Cette phase couvre trois paramètres de sécurité à respecter avant de déployer un smart contract ; Vérification formelle rigoureuse, outils d'analyse de code et audit de sécurité. 

VÉRIFICATION FORMELLE RIGOUREUSE

La vérification formelle est un processus bien défini qui s'appuie sur le raisonnement mathématique et les preuves mathématiques pour vérifier les propriétés souhaitées du système. 

Nous pouvons effectuer une vérification formelle sur les contrats intelligents car le programme de contrat est court et limité dans le temps. Il existe plusieurs façons de formaliser et de vérifier de manière rigide les contrats intelligents ; certains sont basés sur du code contractuel, et d'autres sur la sémantique de la machine virtuelle Ethereum (EVM). 

OUTILS D'ANALYSE DE CODE

L'analyse du code se fait sans exécuter les programmes. À cette fin, nous utilisons des outils appelés outils de test de sécurité des applications statiques (SAST). Ces outils aident à la découverte de failles de sécurité dans le code source. 

L'analyse effectuée par ces outils peut inclure une ou toutes les étapes suivantes :

(I) Créez une représentation intermédiaire (IR), telle qu'un arbre de syntaxe abstraite (AST), pour une analyse détaillée. 

(Ii) Compléter l'IR avec des informations suffisantes obtenues à partir du contrôle statique ou de l'analyse du flux de données et des techniques de vérification formelle ; ces techniques incluent : l'exécution symbolique, l'interprétation abstraite et la vérification symbolique du modèle. 

Mais quels sont les outils que l'on peut utiliser pour effectuer une analyse de code sur Smart Contract ? 

Bien qu'il existe de nombreux outils que l'on peut utiliser pour effectuer l'analyse de sécurité, Oyente est le plus populaire. 

Auditeur peut être utilisé pour effectuer une analyse de sécurité pour les contrats intelligents EVM. Il utilise "l'exécution symbolique" pour découvrir quatre bogues courants ; la dépendance à l'ordre des transactions, la dépendance à l'horodatage, les exceptions mal gérées et la réentrance. 

L'architecture d'Oyente
L'architecture d'Oyente

L'architecture d'Oyente montre qu'elle prend le bytecode et présente l'état global d'Ethereum en entrée. 

L'un des revers d'Oyente est qu'il ne détecte que les vulnérabilités de sécurité. La technique d'exécution symbolique utilisée par Oyente n'explore pas tous les chemins possibles. Ainsi, le besoin d'autres outils tels que la sécurité et les audits manuels se fait sentir. 

AUDIT DE SÉCURITÉ

Nous commencerons cette section là où nous avons laissé la dernière ; les audits manuels. 

Mais d'abord, comprenons la nécessité d'un audit de sécurité ; que ce soit le piratage du réseau Ronin ou le piratage du réseau Poly, le code non audité est le plus vulnérable aux piratages et aux exploits. 

Ils entraînent d'énormes pertes financières. Non seulement faire auditer votre projet Web3, en fait, mais le faire auditer par des professionnels experts est également important car cela dépend de la capacité professionnelle des auditeurs à effectuer des audits de sécurité. 

Encore une fois, où trouver ces experts professionnels ? Vous n'avez pas besoin d'aller nulle part à la recherche d'auditeurs dignes de confiance ; Cliquez sur https://t.me/quillhash pour entrer en contact avec l'un d'entre eux ! 

Un audit de contrat intelligent idéal est une combinaison d'analyse de code manuelle et automatisée ; comme nous l'avons vu dans le point précédent, même en suivant l'analyse automatisée du code à partir d'outils tels que Oyente, il existe la possibilité de vulnérabilités non identifiées dans le contrat. 

Ainsi, pour surmonter cela, les auditeurs de sécurité peuvent analyser manuellement chaque ligne de code et les tester contre les vulnérabilités potentielles. 

4. SUIVI ET ANALYSE

Vous souvenez-vous du principe en constante évolution de Blockchain dont nous avons parlé initialement ? 

Cette phase est basée sur le même thème; une fois le contrat déployé et exécuté, certaines vulnérabilités passées inaperçues lors des étapes précédentes peuvent survenir en raison de nouvelles versions et de mises à jour fréquentes qui rendent les contrats moins efficaces par la suite. 

Nous pouvons effectuer; bug bounty, surveillance de la sécurité et analyse post-hoc pour surmonter ces obstacles. 

BONUS DE BUG

Comme nous examinons les problèmes de sécurité post-déploiement avec les contrats, les Bug Bounties peuvent être utiles. La technique de vérification formelle discutée précédemment est une technique d'analyse statique. Le Bug Bounty, quant à lui, est une technique d'analyse dynamique. 

Le concept derrière Bug bounty est simple ; les pirates découvrent des bugs, et en retour, ils sont payés avec des récompenses financières. Cela ressemble à une situation gagnant-gagnant, non ? Mais ce n'est pas le cas !

Le hic ici est; que la valeur des bogues peut être supérieure à la prime sur les marchés gris, et la possibilité est que les pirates puissent exploiter ou vendre les bogues pour obtenir un prix élevé. 

Parfois, les propriétaires du projet nient avoir payé la prime à moins que les bogues ne soient confirmés ; les pirates s'inquiètent également de l'incertitude des paiements après la révélation de bogues. 

Pour surmonter cela, un cadre de bounty de bogue a été proposé, connu sous le nom de "Hydra". 

Hydra utilise une technologie d'écart d'exploit appelée programmation N-of-N-version (NNVP) comme système de prime de bogue sur la blockchain. 

Le cadre Hydra avec têtes
Le cadre Hydra avec têtes

SURVEILLANCE DE LA SÉCURITÉ

Nous pouvons utiliser l'analyse de code statique pour découvrir les vulnérabilités de sécurité, mais cette méthode est utilisée avant de déployer les contrats intelligents. 

Mais pour trouver des bogues et des vulnérabilités potentielles en temps réel, nous devons surveiller et analyser les données de transaction sur la blockchain. 

Ces vulnérabilités découvertes en analysant les contrats intelligents peuvent être appelées vulnérabilités de trace. Trois types de contrats sont au cœur de ces traces de vulnérabilités ; 

(I) Contrats gourmands (contrats qui restent en vie et verrouillent Ether indéfiniment).

(Ii) Contrats prodigues (contrats qui divulguent des fonds négligemment à des utilisateurs arbitraires) et,

(iii) Contrats suicidaires (contrats que tout utilisateur arbitraire peut tuer). 

Même une notion d'objets Effectively Callback Free (ECF) a été proposée pour identifier les vulnérabilités en surveillant les objets ECF. 

Dans ce contexte, un algorithme en ligne a également été présenté ; il a aidé à découvrir des vulnérabilités inconnues. Dans la même proposition, il a été suggéré d'exécuter des contrats intelligents sur Testnet avant de les déployer sur le Mainnet. 

Monitoring UI est une plateforme de surveillance Blockchain utilisant React.js. Cette plate-forme peut être utilisée pour effectuer des transactions, contrôler les actifs et se renseigner sur l'état de Blockchain. 

Nous ne pouvons pas compter sur cette plate-forme pour une surveillance sécurisée des contrats intelligents, mais comme la plupart des données de transaction liées aux contrats intelligents peuvent être trouvées, nous pouvons détecter les exploits en temps réel en suivant le transfert des actifs. 

ANALYSE POST HOC

Post Hoc Analysis utilise les données de transaction de la blockchain pour analyser, découvrir ou tracer les menaces potentielles sur la blockchain en termes simples. 

Si nous discutons de l'analyse Graph, elle a été conçue comme une approche pour rassembler toutes les données de transaction (cela inclut les transactions internes des contrats intelligents). 

A l'aide de ces données, ils ont préparé trois graphiques; 

(I) Un graphique des flux monétaires (MFG)

(Ii) Graphe de création de contrat (CCG) et,

(iii) Graphe d'invocation de contrat (CIG)

Sur la base de l'analyse des graphiques mentionnés ci-dessus, de nombreuses nouvelles découvertes ont été proposées, telles que des solutions aux problèmes de sécurité entre plusieurs contrats interagissant les uns avec les autres. 

Un aperçu de l'analyse graphique
Un aperçu de l'analyse graphique

Le schéma de Ponzi est l'un des schémas de fraude classiques par lesquels un grand nombre de fonds peuvent être acquis et affecter la blockchain native. Pour lutter contre cette fraude, un mécanisme de classification a été proposé pour détecter les schémas de Ponzi sur Ethereum. 

Ce mécanisme utilise l'exploration de données et l'apprentissage automatique pour détecter les contrats de Ponzi. Ce processus fonctionne même si le code source des contrats intelligents n'est pas disponible. 

Le cadre de la détection intelligente des schémas de Ponzi
Le cadre de la détection intelligente des schémas de Ponzi

Key A emporter

C'est tout, oui, c'est tout pour le moment !

Si vous avez été avec nous jusqu'à présent, nous vous en serions reconnaissants. Sans s'étendre davantage, pour conclure, nous dirions seulement que l'écosystème des contrats intelligents est décentralisé et qu'il est difficile de corriger les bugs. 

Nous avons essayé de décomposer la sécurité des contrats intelligents du point de vue du cycle de vie du logiciel. 

Nous avons d'abord discuté des fonctionnalités clés de la blockchain responsables de problèmes de sécurité dans les contrats intelligents. Nous avons classé les solutions de sécurité pour les contrats intelligents en quatre phases. Nous espérons apporter plus de messages pour vous garder en avance sur les défis de l'écosystème Web3 en pleine croissance. 

Que pensez-vous de cette approche agile SDLC pour la sécurité des contrats intelligents ? Partagez votre opinion dans les commentaires ci-dessous!

46 Vues

Le poste Sécurité des contrats intelligents : une approche SDLC agile  apparaît en premier sur Blog.quillhash.

Horodatage:

Plus de Quillhasch