
SCOUT est un outil open source extensible destiné à aider les développeurs et les auditeurs de contrats intelligents Soroban à détecter les problèmes de sécurité et les écarts communs par rapport aux meilleures pratiques.
Cet outil aide les développeurs à écrire des contrats intelligents sécurisés et plus robustes.
Notre intérêt pour ce projet provient de notre expérience dans l'audit manuel et la détection de vulnérabilité dans d'autres blockchains (voir Scout pour encre!).
Installez l'audit du Scout:
Assurez-vous que la cargaison est installée sur votre ordinateur. Ensuite, installez Scout avec la commande suivante:
cargo install cargo-scout-auditExécuter l'audit Scout:
Pour exécuter Scout sur votre projet, exécutez la commande suivante:
cargo scout-auditScout prend en charge les espaces de travail de cargo. Lors de l'exécution sur un espace de travail, Scout sera exécuté sur tous les packages spécifiés en tant que membres de l'espace de travail.
Pour plus d'informations sur l'installation et l'utilisation, veuillez vous référer à la section de démarrage dans notre section de documentation ci-dessous.
Actuellement, Scout comprend les détecteurs suivants.
| ID du détecteur | Ce qu'il détecte | Cas de test | Gravité |
|---|---|---|---|
| diviser-avant-plus | Effectuant une opération de division avant une multiplication, entraînant une perte de précision. | 1, 2, 3 | Moyen |
| dangereux | Utilisation inappropriée de la méthode Undefap, provoquant des accidents de programme inattendus. | 1 | Moyen |
| sans sécurité | Une mauvaise utilisation de la méthode attendu, conduisant à des accidents de programme inattendus. | 1 | Moyen |
| chérir un débordement | Une opération arithmétique déborde ou sous-compose la mémoire disponible allouée à la variable. | 1 | Critique |
| des valeurs insuffisamment aléatoires | Évitez d'utiliser des attributs de blocs pour la génération de nombres aléatoires pour éviter la manipulation. | 1 | Critique |
| -up-update-current-contrat-wasm | Si les utilisateurs sont autorisés à appeler update_current_contract_wasm() , ils peuvent modifier intentionnellement le comportement du contrat. | 1 | Critique |
| Éviter-Core-Mem-Forget | L'utilisation de core::mem::forget() pourrait entraîner des fuites de mémoire et des erreurs logiques. | 1 | Renforcement |
| set-contrat-storage | Contrôle d'accès insuffisant sur la méthode env.storage() . | 1, 2, 3 | Critique |
| erreur de panique | Le code panique sur l'erreur au lieu d'utiliser l'énumération descriptive. | 1 | Renforcement |
| Eviter-unsafe-block | En utilisant des blocs dangereux dans les risques de la sécurité et de la fiabilité du code. | 1 | Critique |
| opération DOS | DOS en raison d'une opération illimitée. | 1, 2, 3 | Moyen |
| Soroban-Version | L'utilisation d'une ancienne version de Soroban peut être dangereuse, car elle peut avoir des bogues ou des problèmes de sécurité. Utilisez la dernière version disponible. | 1 | Renforcement |
| inutilisé | Retour Enum d'une fonction n'est pas complètement utilisé. | 1, 2 | Mineure |
| itérateurs sur l'indexation | L'itération des indices codées en dur est plus lente que l'utilisation d'un itérateur. De plus, si l'indice est hors limites, il paniquera. | 1 | Renforcement |
| affirmation de violation | Évitez l'utilisation de l'affirmation macro!, Elle peut paniquer. | 1 | Renforcement |
| Opération de cartographie non protégée | La modification des mappages avec une clé arbitraire donnée par les utilisateurs peut être une vulnérabilité importante. | 1, 2 | Critique |
| DOS-UNEXPECTÉ | DOS en raison d'un stockage inapproprié. | 1, 2 | Moyen |
| transfert sans restriction | Évitez de passer un paramètre défini par l'utilisateur en from que champ dans le transfert-from. | 1 | Critique |
| dangereux-map-get | Utilisation inappropriée de la méthode get pour Map à Soroban | 1 | Moyen |
| adresse zéro ou test | Évitez l'attribution de zéro ou d'adresse de test pour éviter la perte de contrôle du contrat. | 1 | Moyen |
| exponent incorrect | Met en garde contre l'utilisation incorrecte de ´ ^ ´. | 1 | Critique |
Vous pouvez choisir le format de sortie qui répond le mieux à vos besoins. Scout propose des rapports HTML, Markdown, JSON, PDF et SARIF. Pour spécifier la sortie souhaitée, exécutez la commande suivante:
cargo scout-audit --output-format [html|md|pdf|json|sarif]
Rapport HTML

Ajoutez Scout à votre espace de travail de développement avec l'extension de code VS de Scout pour exécuter automatiquement Scout lors de l'enregistrement de votre fichier.

Conseil: Pour voir les erreurs mises en évidence dans votre code, nous vous recommandons d'installer l'extension de l'objectif d'erreur.
Téléchargez Scout vs Code de Visual Studio Marketplace.
Intégrez Scout dans votre pipeline CI / CD! Exécutez automatiquement l'outil par rapport aux contrats intelligents ciblés. Cette boucle de rétroaction immédiate permet aux développeurs de résoudre rapidement tous les problèmes avant de fusionner le code dans la branche principale, réduisant le risque d'introduire des bogues ou des vulnérabilités.
Scout Sortie comme commentaire dans une demande de traction

Trouvez l'action Scout Github dans GitHub Marketplace.
Rejoignez-nous pour une série passionnante de tutoriels vidéo où vous apprendrez à installer et à exécuter Scout. Découvrez comment identifier et résoudre des problèmes spécifiques détectés par l'outil et améliorer vos compétences avec nos conseils d'experts.
? Plus de vidéos à venir bientôt!
Pour valider notre outil, nous fournissons un ensemble d'exemples de code situés dans le dossier des cas de test.
Afin d'exécuter les tests d'intégration, accédez aux apps/cargo-scout-audit et exécutez:
cargo test --all --all-features Afin d'exécuter les tests pour une cas de test particulière, exécutez la même commande dans ce dossier de cas de test particulier (par exemple: test-cases/divide-before-multiply/divide-before-multiply-1 )
Suivez nos liens de documentation ci-dessous et en savoir plus sur les vulnérabilités détectées par Scout, comment l'outil fonctionne et comment contribuer au projet!
Scout pour Soroban est un analyseur de vulnérabilité open source développé par l'équipe de recherche et développement de Coinfabrik.
Nous avons reçu un soutien par le biais d'une subvention du Stellar Community Fund (SCF).
Nous - Coinfabrik - sommes une société de recherche et développement spécialisée dans Web3, avec une solide expérience en cybersécurité. Fondée en 2014, nous avons travaillé sur plus de 180 projets liés à la blockchain, basés sur EVM et également pour Solana, Algorand, Stellar et Polkadot. Au-delà du développement, nous proposons des audits de sécurité grâce à une équipe interne dédiée de professionnels de la cybersécurité seniors, travaillant actuellement sur le code dans le substrat, la solidité, la clarté, la rouille, le sarcelle et le soroban stellaire.
Notre équipe possède une formation académique en informatique et en mathématiques, avec une expérience de travail axée sur la cybersécurité et le développement de logiciels, y compris les publications académiques, les brevets transformés en produits et les présentations de la conférence. En outre, nous avons une collaboration continue sur le transfert de connaissances et les projets open source avec l'Université de Buenos Aires.
Scout est autorisé et distribué sous une licence du MIT. Contactez-nous si vous recherchez une exception aux conditions.