Scout for Soroban : révolutionner la sécurité des contrats intelligents

Rencontrez Scout

Scout, ou Scout Audit, est un outil permettant de rechercher des vulnérabilités de sécurité dans les contrats intelligents développé par CoinFabrik Research. Il est né d'une collaboration avec le Laboratoire des fondements et outils pour le génie logiciel (LaFHIS) de l'Université de Buenos Aires, où nous avons travaillé sur la recherche des outils d'analyse statique qui pourraient être développés pour détecter les problèmes dans les contrats intelligents NEAR, qui sont basés sur Rust. Ce travail a été suivi en 2023 par une série de subventions financées par la Fondation Web3 et Aleph Zero Ecosystem Grants, qui ont conduit à la sortie de notre détecteur de vulnérabilité open source pour les contrats intelligents dans l'encre ! langage de contrat intelligent. Nous avons nommé l'outil Scout.

Arrive Stellar : ces derniers mois, nous avons travaillé sur la détection de problèmes de sécurité dans le code Soroban dans les contrats intelligents écrits pour le réseau Stellar.

Notre développement comprend un ensemble d'exemples de vulnérabilités pertinents et de détecteurs associés, complétés par une CLI et une extension VSCode afin d'aider les développeurs et auditeurs de contrats intelligents à identifier les problèmes de sécurité courants et les écarts par rapport aux meilleures pratiques pendant le développement.

Stellar Soroban : Un nouvel environnement mais les mêmes principes

Scout est construit sur un linter. Chacun de nos « détecteurs » n’est qu’une charpie. Nous avons réalisé que les principes de détection utilisés dans le développement des détecteurs pour Scout pourraient être appliqués d'une manière simple à n'importe quelle blockchain dont le langage du contrat intelligent était basé sur Rust.

Scout linter est actuellement le Dylint de Trail of Bits. Dylint est un analyseur statique qui se connecte au compilateur Rust et met à disposition la représentation intermédiaire de haut niveau et la représentation intermédiaire de niveau intermédiaire, qui permettent de capturer de nombreuses vulnérabilités avec assez de précision. Ces lints, conçus pour détecter des classes spécifiques de vulnérabilités, sont des fichiers intégrés à l'outil lors de la compilation. Ainsi, il n'y a aucune barrière pour qu'un contributeur ajoute de nouvelles peluches ou de nouveaux détecteurs, comme nous les appelons. Cette fonctionnalité de l'architecture de Scout lui permet de s'adapter facilement à de nombreuses blockchains basées sur Rust.

Graphique 01 : Architecture Scoute
C'est pourquoi, après avoir perfectionné une version de Scout pour l'encre de Polkadot ! Langue, nous avons pu étendre les contrats intelligents Scout pour Stellar Soroban, également basés sur Rust.

Des défis en terrain inexploré

Nous avons commencé notre travail début novembre 2023, près de deux mois avant la première version stable de Soroban. Les contrats intelligents Soroban étaient un terrain inexploré, non seulement pour nous, CoinFabrik, mais aussi pour la plupart des développeurs de blockchain. Cela a soulevé une question : Comment allions-nous trouver des vulnérabilités dans les contrats intelligents Soroban, alors que très peu de contrats intelligents avaient été écrits au départ ? Comment allions-nous faire de Scout un compagnon précieux pour les nouveaux arrivants dans cette communauté ?

L’approche que nous avons adoptée était radicalement différente de ce que nous aurions fait dans une blockchain établie, avec de nombreux contrats intelligents déployés. Au lieu d'aller dans la nature, à la recherche de contrats intelligents existants présentant des vulnérabilités, Scout a dû regarder à l'intérieur, dans ses souvenirs des paysages de blockchain précédents, anticipant les pièges et les dangers possibles, dans l'obscurité.

C'est là que notre expérience d'audit chez CoinFabrik s'est avérée utile. En utilisant comme échafaudage nos catégories d'analyses d'audit et notre expérience antérieure dans la création de Scout dans d'autres blockchains, nous pourrions anticiper quels types de vulnérabilités pourraient être réalisées sur ce terrain inexploré. Nous n'avons pas eu besoin, pour ce prototype, de trouver des smart contracts vulnérables dans la nature, il a simplement fallu incarner dans Soroban des exemples de vulnérabilités dont nous savions qu'elles existaient dans d'autres blockchains et créer des détecteurs associés. Ce sont des avertissements sur la nouvelle carte de vulnérabilité dont les nouveaux arrivants doivent se méfier.

Cette approche laisse de côté les vulnérabilités inhérentes aux contrats intelligents Soroban, mais pour ce prototype, c'était suffisant. À mesure que de nouveaux contrats intelligents commencent à peupler cet environnement et que des audits manuels avec des rapports publics sont effectués, nous serons en mesure d'intégrer cette base de connaissances croissante en tant que détecteurs dans Scout.

Pièges et drapeaux ; Vulnérabilités et détecteurs

C’est dans cette optique que nous avons travaillé à identifier les pièges possibles dans cet environnement. Nous avons développé une liste de 12 classes de vulnérabilité. Pour chaque classe de vulnérabilité, nous avons au moins un contrat intelligent de scénario de test avec une instance de la vulnérabilité, un deuxième contrat intelligent qui « corrige » cette vulnérabilité et un détecteur qui détecte correctement la vulnérabilité dans le premier et ne déclenche pas d'alarme dans ce que nous appelons l’exemple corrigé. Un résumé de ces vulnérabilités, cas de test et détecteurs peut être trouvé dans notre tableau des détecteurs.

Parmi les vulnérabilités couvertes, les catégories clés incluent Arithmétique des vulnérabilités, où des problèmes de précision des opérations et des débordements peuvent conduire à des calculs incorrects ; Validations et gestion des erreurs des vulnérabilités, telles qu'une utilisation inappropriée des méthodes de gestion des erreurs conduisant à des plantages de programmes ; Autorisation et bonnes pratiques vulnérabilités, mettant en évidence les risques liés à un accès non autorisé et aux écarts par rapport aux pratiques de codage standard ; et Déni de service (DoS) risques, où des opérations illimitées peuvent épuiser les ressources du système, perturbant ainsi la disponibilité des services. Ces vulnérabilités soulignent la nécessité cruciale d’un codage vigilant, d’une gestion robuste des erreurs et de contrôles d’accès stricts pour garantir la sécurité et la fiabilité des contrats intelligents et des applications blockchain.

Tous les langages de contrats intelligents ne sont pas identiques et certaines vulnérabilités ne se traduisent pas facilement en Soroban. Cela était particulièrement évident lorsque nous avons tenté de reproduire Appel aux délégués attaques, que nous n'avons pas pu réaliser en raison de l'absence de fonction déléguécall() ou de mécanismes équivalents permettant la création de contrats proxy. Dans le cas d Réentréenous n'avons trouvé qu'un seul cas d'auto-réentrance applicable aux contrats intelligents Soroban, qui ne constituait pas une vulnérabilité.

Conclusion

En chemin pour amener Scout à Soroban, nous avons rencontré le défi de construire des détecteurs de vulnérabilité pour les contrats intelligents qui n'avaient jamais été construits dans l'environnement. Heureusement, l'architecture de Scout, associée à notre connaissance préalable de la blockchain et des vulnérabilités basées sur Rust, s'est avérée être une base solide pour ce prototype.
L'extension CLI et VSCode font de Scout un compagnon fiable pour les nouveaux développeurs ou auditeurs entrant dans cet écosystème. Nous poursuivrons notre travail, en augmentant le nombre de détecteurs et de vulnérabilités couvertes, et en améliorant la convivialité de l'outil pour les équipes qui découvrent l'écosystème.

Essayez Scout !

Que vous soyez un développeur débutant ou un expert chevronné, Scout est l'outil idéal pour améliorer vos projets de contrats intelligents Soroban. Conçu dans un souci de facilité d'utilisation, Scout offre un processus d'installation transparent, vous permettant de vous concentrer sur ce qui compte le plus : créer des contrats intelligents innovants et sécurisés.

Nous comprenons l'importance de la communauté et du soutien dans le processus de développement. C'est pourquoi nous nous engageons à être là pour vous à chaque étape du processus. Avez vous des questions ou besoin d'aide? Contactez-nous via notre GitHub pour des questions détaillées, suivez notre parcours et nos mises à jour sur Twitter, connectez-vous avec notre équipe sur LinkedIn ou envoyez-nous un message via notre formulaire de contact sur la page Scout.

Vos commentaires et votre utilisation aident Scout à évoluer. En choisissant Scout, vous n'obtenez pas seulement un outil ; vous rejoignez une communauté grandissante dédiée à rendre le développement de contrats intelligents Soroban plus sûr et plus accessible.

Télécharger Scout pour Soroban et commencez votre voyage vers un développement de contrats plus intelligent. Construisons ensemble un avenir sûr !

Lectures complémentaires

Détection de vulnérabilité à l’encre ! Langage de programmation
Détection de vulnérabilité plus grande, meilleure et plus rapide dans l'encre ! Langage de programmation