
Analyseur statique pour Solidity et Vyper
Rejoignez le Slack Empire Hacking
- Discussions et Support
Slither est un framework d'analyse statique pour Solidity et Vyper écrit en Python3. Il exécute une suite de détecteurs de vulnérabilités, affiche des informations visuelles sur les détails des contrats, et fournit une API pour écrire facilement des analyses personnalisées. Slither permet aux développeurs de trouver des vulnérabilités, d'améliorer leur compréhension du code, et de prototyper rapidement des analyses personnalisées.
Exécutez Slither sur une application Hardhat/Foundry/Dapp/Brownie :```console slither .
C'est l'option préférée si votre projet a des dépendances, car Slither s'appuie sur le framework de compilation sous-jacent pour compiler le code source.
Cependant, vous pouvez exécuter Slither sur un seul fichier qui n'importe pas de dépendances :```console
slither tests/uninitialized.sol
Remarque Slither nécessite Python 3.10+. Si vous n'utilisez pas l'un des frameworks de compilation pris en charge, vous avez besoin de solc, le compilateur Solidity ; nous recommandons d'utiliser solc-select pour basculer facilement entre les versions de solc.
uv est un gestionnaire de paquets Python rapide qui est 10 à 100 fois plus rapide que pip.```console
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install slither-analyzer
uvx --from slither-analyzer slither
Pour mettre à niveau:```console
uv tool upgrade slither-analyzer
python3 -m pip install slither-analyzer
Pour mettre à niveau :```console
python3 -m pip install --upgrade slither-analyzer
brew install slither-analyzer
### Utilisation de Git (Développement)```bash
git clone https://github.com/crytic/slither.git && cd slither
# Install as editable for development
uv tool install -e .
# Or use uv run for testing without installation
uv run slither <target>
Le drapeau -e installe en mode éditable, ce qui signifie que les modifications du code source sont immédiatement appliquées sans réinstallation.
Utilisez l'image docker eth-security-toolbox. Elle inclut tous nos outils de sécurité et chaque version majeure de Solidity dans une seule image. /home/share sera monté sur /share dans le conteneur.```bash
docker pull trailofbits/eth-security-toolbox
Pour partager un répertoire dans le conteneur :```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
$GIT_TAG par le vrai tag) ```YAML
slither [target] --checklist.slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/ (remplacez ORG, REPO, COMMIT)Pour plus d'informations, voir
human-summary : Imprime un résumé lisible des contratsinheritance-graph : Exporte le graphe d'héritage de chaque contrat vers un fichier dotcontract-summary : Imprime un résumé des contratsloc : Compte le nombre total de lignes de code (LOC), de lignes de code source (SLOC) et de lignes de commentaire (CLOC) trouvées dans les fichiers sources (SRC), les dépendances (DEP) et les fichiers de test (TEST).entry-points : Imprime toutes les fonctions de point d'entrée modifiant l'état et leurs variables des contratscall-graph: Exporter le graphe d'appel des contrats vers un fichier dotcfg: Exporter le CFG de chaque fonctionfunction-summary: Afficher un résumé des fonctionsvars-and-auth: Afficher les variables d'état écrites et l'autorisation des fonctionsnot-pausable: Afficher les fonctions qui n'utilisent pas le modificateur whenNotPaused.Pour exécuter une imprimante, utilisez --print et une liste d'imprimantes séparées par des virgules.
Consultez la documentation des imprimantes pour la liste complète.
slither-check-upgradeability: Vérifier la mise à niveau basée sur delegatecallslither-prop: Génération automatique de tests unitaires et de propriétésslither-flat: Aplatir une base de codeslither-check-erc: Vérifier la conformité ERCslither-read-storage: Lire les valeurs de stockage des contratsslither-interface: Générer une interface pour un contratConsultez la documentation des outils pour des outils supplémentaires.
Contactez-nous pour obtenir de l'aide sur la construction d'outils personnalisés.
La documentation sur les internes de Slither est disponible ici.
N'hésitez pas à passer sur notre canal Slack (#ethereum) pour obtenir de l'aide sur l'utilisation ou l'extension de Slither.
La documentation des imprimantes décrit les informations que Slither est capable de visualiser pour chaque contrat.
La documentation des détecteurs décrit comment écrire une nouvelle analyse de vulnérabilité.
La documentation de l'API décrit les méthodes et objets disponibles pour les analyses personnalisées.
La documentation SlithIR décrit la représentation intermédiaire SlithIR.
Comment exclure les mocks ou les tests ?
Comment corriger les problèmes de fichier inconnu ou de compilation ?
slither contract.sol échouera.
Utilisez plutôt slither . dans le répertoire parent de contracts/ (vous devriez voir contracts/ lorsque vous exécutez ls).
Si vous avez un dossier node_modules/, il doit se trouver dans le même répertoire que contracts/. Pour vérifier que ce problème est lié à Slither,
exécutez la commande de compilation pour le framework que vous utilisez, par exemple npx hardhat compile. Cela doit fonctionner avec succès ;
sinon, le moteur de compilation de Slither, crytic-compile, ne peut pas générer l'AST.Slither est sous licence et distribué sous la licence AGPLv3. Contactez-nous si vous recherchez une exception aux conditions.
Si vous utilisez Slither dans un travail académique, envisagez de postuler au Crytic $10k Research Prize.
| Num | Détecteur | Ce qu'il détecte | Impact | Confiance |
|---|
| Titre | Utilisation | Auteurs | Conférence/Publication | Code |
|---|
| ReJection: A AST-Based Reentrancy Vulnerability Detection Method | Analyse basée sur l'AST construite au-dessus de Slither | Rui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia Chen | CTCIS 19 | - |
| MPro: Combining Static and Symbolic Analysis for Scalable Testing of Smart Contract | Exploiter la dépendance de données via Slither | William Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay Ganesh | ISSRE 2019 | MPro |
| ETHPLOIT: From Fuzzing to Efficient Exploit Generation against Smart Contracts | Exploiter la dépendance de données via Slither | Qingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi Ma | SANER 20 | - |
| Verification of Ethereum Smart Contracts: A Model Checking Approach | Exécution symbolique construite au-dessus du CFG de Slither | Tam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho Quan | IJMLC 20 | - |
| Smart Contract Repair | S'appuyer sur les détecteurs de vulnérabilités de Slither | Xiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik Roychoudhury | TOSEM 20 | SCRepair |
| Demystifying Loops in Smart Contracts | Exploiter la dépendance de données via Slither | Ben Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil Dillig | ASE 20 | - |
| Trace-Based Dynamic Gas Estimation of Loops in Smart Contracts | Utiliser le CFG de Slither pour détecter les boucles | Chunmiao Li, Shijie Nie, Yang Cao, Yijun Yu, Zhenjiang Hu | IEEE Open J. Comput. Soc. 1 (2020) | - |
| SAILFISH: Vetting Smart Contract State-Inconsistency Bugs in Seconds | S'appuyer sur SlithIR pour construire un graphe de dépendance de stockage | Priyanka Bose, Dipanjan Das, Yanju Chen, Yu Feng, Christopher Kruegel, and Giovanni Vigna | S&P 22 | Sailfish |
| SolType: Refinement Types for Arithmetic Overflow in Solidity | Utiliser Slither comme frontal pour construire un système de types raffinés | Bryan Tan, Benjamin Mariano, Shuvendu K. Lahiri, Isil Dillig, Yu Feng | POPL 22 | - |
| Do Not Rug on Me: Leveraging Machine Learning Techniques for Automated Scam Detection | Utiliser Slither pour extraire les caractéristiques des tokens (mintable, pausable, ..) | Mazorra, Bruno, Victor Adan, and Vanesa Daza | Mathematics 10.6 (2022) | - |
| MANDO: Multi-Level Heterogeneous Graph Embeddings for Fine-Grained Detection of Smart Contract Vulnerabilities | Utiliser Slither pour extraire le CFG et le graphe d'appel | Hoang Nguyen, Nhat-Minh Nguyen, Chunyao Xie, Zahra Ahmadi, Daniel Kudendo, Thanh-Nam Doan and Lingxiao Jiang | IEEE 9th International Conference on Data Science and Advanced Analytics (DSAA, 2022) | ge-sc |
| Automated Auditing of Price Gouging TOD Vulnerabilities in Smart Contracts | Utiliser Slither pour extraire le CFG et les dépendances de données | Sidi Mohamed Beillahi, Eric Keilty, Keerthi Nelaturu, Andreas Veneris, and Fan Long | 2022 IEEE International Conference on Blockchain and Cryptocurrency (ICBC) | Smart-Contract-Repair |
| Modeling and Enforcing Access Control Policies for Smart Contracts | Étendre les dépendances de données de Slither | Jan-Philipp Toberg, Jonas Schiffl, Frederik Reiche, Bernhard Beckert, Robert Heinrich, Ralf Reussner | IEEE International Conference on Decentralized Applications and Infrastructures (DAPPS), 2022 | SolidityAccessControlEnforcement |
| Smart Contract Vulnerability Detection Based on Deep Learning and Multimodal Decision Fusion | Utiliser Slither pour extraire le CFG | Weichu Deng, Huanchun Wei, Teng Huang, Cong Cao, Yun Peng, and Xuan Hu | Sensors 2023, 23, 7246 | - |
| Semantic-enriched Code Knowledge Graph to Reveal Unknowns in Smart Contract Code Reuse | Utiliser Slither pour extraire les caractéristiques du code (CFG, fonction, types de paramètres, ..) | Qing Huang, Dianshu Liao, Zhenchang Xing, Zhengkang Zuo, Changjing Wang, Xin Xia | ACM Transactions on Software Engineering and Methodology, 2023 | - |
| Smart Contract Parallel Execution with Fine-Grained State Accesses | Utiliser Slither pour construire des graphes d'accès aux états | Xiaodong Qi, Jiao Jiao, Yi Li | International Conference on Distributed Computing Systems (ICDCS), 2023 | - |
| Bad Apples: Understanding the Centralized Security Risks in Decentralized Ecosystems | Implémenter une analyse interne au-dessus de Slither | Kailun Yan , Jilian Zhang , Xiangyu Liu , Wenrui Diao , Shanqing Guo | ACM Web Conference April 2023 | - |
| Identifying Vulnerabilities in Smart Contracts using Interval Analysis | Créer 4 détecteurs au-dessus de Slither | Ştefan-Claudiu Susan, Andrei Arusoaie | FROM 2023 | - |
| Storage State Analysis and Extraction of Ethereum Blockchain Smart Contracts (no PDF in open access) | S'appuyer sur le CFG et l'AST de Slither | Maha Ayub , Tania Saleem , Muhammad Janjua , Talha Ahmad | TOSEM 2023 | SmartMuv |