Nightshade apporte l’analyse de sécurité aux contrats Compact de Midnight
Le développeur Dickson Wu a testé l’outil open source face à des bogues délibérément introduits et à 300 contrats disponibles publiquement.
By SongMarketCap
Nightshade est un outil d’analyse statique conçu pour aider les développeurs à examiner les contrats intelligents écrits en Compact, le langage de programmation utilisé pour créer des applications sur Midnight.
Présenté par Wu sur le forum Midnight le 29 octobre, l’outil vérifie le code source au regard de 96 règles et signale des motifs pouvant justifier un examen plus approfondi. Ses résultats indiquent la ligne de code concernée et incluent des informations destinées à aider les développeurs à enquêter sur le problème.
Nightshade vérifie le code Compact à la recherche de schémas de sécurité
L’analyse statique examine le code source sans exiger l’exécution du contrat. Nightshade utilise cette approche pour rechercher des schémas liés à la confidentialité, à l’autorisation et à d’autres parties de la logique d’un contrat.
Un exemple identifié par Wu concerne un secret privé publié dans le registre après avoir été utilisé dans une vérification d’autorisation. Un développeur peut vouloir utiliser ce secret pour confirmer l’autorisation d’un utilisateur tout en gardant la valeur sous-jacente privée. Le publier ensuite pourrait exposer des informations censées rester protégées.
D’autres vérifications recherchent des résultats de vérification de signature ignorés et des cas où des valeurs de témoin sont traitées comme une preuve d’identité. L’outil signale aussi des schémas impliquant un temps fourni par l’appelant sans borne fondée sur le temps de la chaîne, ainsi que des preuves de Merkle qui ne sont pas vérifiées pour l’appartenance.
Pour chaque détection, Nightshade fournit la ligne source pertinente, le chemin suivi par les données et une correction suggérée, selon Wu. Cela donne à un développeur un point de départ pour examiner comment une valeur se propage dans le contrat et où le comportement signalé se produit.
Un avertissement n’établit pas, à lui seul, qu’un contrat a été exploité ou que des informations ont été exposées. De même, une analyse achevée ne garantit pas qu’un contrat est sûr.
Dickson Wu partage les résultats des tests de Nightshade
Wu a évalué Nightshade sur des cas de test contenant des bogues délibérément introduits. Il a indiqué que l’outil avait détecté 263 sur 266 cas positifs couverts par l’évaluation.
Le développeur a aussi testé des versions corrigées de ces cas. Nightshade n’a émis aucun avertissement pour 240 sur 242 versions corrigées, tout en émettant des signalements pour les deux autres. Ces résultats décrivent les cas de test utilisés lors de cette évaluation et n’établissent pas un taux de détection pour chaque problème de sécurité possible.
Wu a ensuite exécuté l’outil sur 300 contrats Compact publics provenant de 144 dépôts. Il a indiqué n’avoir constaté aucun crash durant l’exercice et a identifié 258 contrats ayant reçu une analyse complète.
La distinction est importante, car terminer une analyse et ne trouver aucun problème sont deux résultats différents. Selon Wu, les contrats qui n’ont pas reçu une analyse complète ont été signalés comme incomplets plutôt que considérés comme propres.
Le développeur a publié la méthode d’évaluation et les décomptes de tests avec l’outil, permettant à d’autres d’examiner comment les résultats rapportés ont été obtenus.
[NEWSBREAK]
Analyse hors ligne et intégration pour les développeurs
Nightshade s’exécute localement et ne nécessite pas de connexion Internet ni de compilateur Compact pour analyser le code source, selon Wu. L’outil prend en charge les versions du compilateur Compact 0.28 à 0.35.
Les développeurs peuvent consulter les signalements sous forme de texte ou les exporter aux formats JSON et SARIF. Une GitHub Action est également disponible pour afficher les résultats lors de la revue des modifications de code proposées, intégrant les détections dans un flux de travail que les développeurs utilisent peut-être déjà pour examiner les mises à jour.
L’outil est publié sous la licence open source Apache 2.0. Wu a présenté la version 0.1.1 et a invité les développeurs à partager leurs retours, signaler les faux positifs et suggérer des règles supplémentaires.