Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
slither — Analyseur statique pour Solidity et Vyper | Kitploit
Outils/GitHubGitHub/crytic/slither
Analyse StatiqueAnalyse des VulnérabilitésAnalyse de Code
GitHubcrytic/slither

slither

Analyseur statique pour Solidity et Vyper

Voir le dépôtSite web
6.3k1.1kil y a 15 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Slither, l'analyseur statique de contrats intelligents

Logo de Slither Static Analysis Framework

Statut du build PyPI Slither - Lire la documentation Slither - Wiki

Rejoignez le Slack Empire Hacking

Statut Slack

- 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.

  • Fonctionnalités
  • Utilisation
  • Installation
    • Avec uv (Recommandé)
    • Avec pip
    • Avec Git
    • Avec Docker
    • Intégration
  • Détecteurs
  • Affichages
    • Affichages de révision rapide
    • Affichages de révision approfondie
  • Outils
  • Documentation de l'API
  • Obtenir de l'aide
  • FAQ
  • Licence
  • Publications
    • Publication de Trail of Bits
    • Publications externes

Fonctionnalités

  • Détecte le code Solidity vulnérable avec un faible taux de faux positifs (voir la liste des trophées)
  • Identifie où l'erreur se produit dans le code source
  • S'intègre facilement dans l'intégration continue et les builds Hardhat/Foundry
  • Les 'printers' intégrés rapportent rapidement les informations cruciales du contrat
  • API de détecteur pour écrire des analyses personnalisées en Python
  • Capacité à analyser des contrats écrits avec Solidity >= 0.4
  • La représentation intermédiaire (SlithIR) permet des analyses simples et de haute précision
  • Analyse correctement 99,9 % de tout le code Solidity public
  • Temps d'exécution moyen inférieur à 1 seconde par contrat
  • S'intègre avec le scan de code de GitHub dans l'IC
  • Prise en charge des contrats intelligents Vyper

Utilisation

Exécutez Slither sur une application Hardhat/Foundry/Dapp/Brownie :```console slither .

root@kitploit:~
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

Comment installer

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.

Utiliser uv (Recommandé)

uv est un gestionnaire de paquets Python rapide qui est 10 à 100 fois plus rapide que pip.```console

Install uv if you haven't already

curl -LsSf https://astral.sh/uv/install.sh | sh

Install slither as a tool

uv tool install slither-analyzer

Or run slither without installation

uvx --from slither-analyzer slither

root@kitploit:~
Pour mettre à niveau:```console
uv tool upgrade slither-analyzer

Utilisation de Pip```console

python3 -m pip install slither-analyzer

root@kitploit:~
Pour mettre à niveau :```console
python3 -m pip install --upgrade slither-analyzer

Utilisation de Brew```console

brew install slither-analyzer

root@kitploit:~
### 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.

Utilisation de Docker

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

root@kitploit:~
Pour partager un répertoire dans le conteneur :```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox

Intégration

  • Pour l'intégration avec GitHub Action, utilisez slither-action.
  • Pour l'intégration pre-commit, utilisez (remplacez $GIT_TAG par le vrai tag) ```YAML
    • repo: https://github.com/crytic/slither rev: $GIT_TAG hooks:
      • id: slither
    root@kitploit:~
  • Pour générer un rapport Markdown, utilisez slither [target] --checklist.
  • Pour générer un Markdown avec mise en évidence du code source GitHub, utilisez slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/ (remplacez ORG, REPO, COMMIT)

Détecteurs

Pour plus d'informations, voir

  • La Documentation des détecteurs pour les détails de chaque détecteur
  • La Sélection des détecteurs pour exécuter uniquement les détecteurs sélectionnés. Par défaut, tous les détecteurs sont exécutés.
  • Le Mode de triage pour filtrer les résultats individuels

Imprimantes

Imprimantes de révision rapide

  • human-summary : Imprime un résumé lisible des contrats
  • inheritance-graph : Exporte le graphe d'héritage de chaque contrat vers un fichier dot
  • contract-summary : Imprime un résumé des contrats
  • loc : 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 contrats

Imprimantes de révision approfondie* call-graph: Exporter le graphe d'appel des contrats vers un fichier dot

  • cfg: Exporter le CFG de chaque fonction
  • function-summary: Afficher un résumé des fonctions
  • vars-and-auth: Afficher les variables d'état écrites et l'autorisation des fonctions
  • not-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.

Outils

  • slither-check-upgradeability: Vérifier la mise à niveau basée sur delegatecall
  • slither-prop: Génération automatique de tests unitaires et de propriétés
  • slither-flat: Aplatir une base de code
  • slither-check-erc: Vérifier la conformité ERC
  • slither-read-storage: Lire les valeurs de stockage des contrats
  • slither-interface: Générer une interface pour un contrat

Consultez la documentation des outils pour des outils supplémentaires.

Contactez-nous pour obtenir de l'aide sur la construction d'outils personnalisés.

Documentation de l'API

La documentation sur les internes de Slither est disponible ici.

Obtenir de l'aide

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.

FAQ

Comment exclure les mocks ou les tests ?

  • Consultez notre documentation sur le filtrage de chemin.

Comment corriger les problèmes de fichier inconnu ou de compilation ?

  • Comme Slither nécessite l'AST de solc, toutes les dépendances doivent être disponibles. Si un contrat a des dépendances, 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.

Licence

Slither est sous licence et distribué sous la licence AGPLv3. Contactez-nous si vous recherchez une exception aux conditions.

Publications

Publication de Trail of Bits

  • Slither: A Static Analysis Framework For Smart Contracts, Josselin Feist, Gustavo Grieco, Alex Groce - WETSEB '19

Publications externes

Si vous utilisez Slither dans un travail académique, envisagez de postuler au Crytic $10k Research Prize.

Télécharger l’outil
NumDétecteurCe qu'il détecteImpactConfiance
1abiencoderv2-arrayStockage du tableau abiencoderv2ÉlevéÉlevée
2arbitrary-send-erc20transferFrom utilise un from arbitraireÉlevéÉlevée
3array-by-referenceModification du tableau de stockage par valeurÉlevéÉlevée
4encode-packed-collisionCollision ABI encodePackedÉlevéÉlevée
5incorrect-shiftL'ordre des paramètres dans une instruction de décalage est incorrectÉlevéÉlevée
6multiple-constructorsSchémas de constructeurs multiplesÉlevéÉlevée
7name-reusedNom de contrat réutiliséÉlevéÉlevée
8protected-varsVariables non protégées détectéesÉlevéÉlevée
9public-mappings-nestedMappings publics avec variables imbriquéesÉlevéÉlevée
10rtloCaractère de contrôle Right-To-Left Override utiliséÉlevéÉlevée
11shadowing-stateVariables d'état masquéesÉlevéÉlevée
12suicidalFonctions permettant à quiconque de détruire le contratÉlevéÉlevée
13uninitialized-stateVariables d'état non initialiséesÉlevéÉlevée
14uninitialized-storageVariables de stockage non initialiséesÉlevéÉlevée
15unprotected-upgradeContrat évolutif non protégéÉlevéÉlevée
16arbitrary-send-erc20-permittransferFrom utilise un from arbitraire avec permitÉlevéMoyenne
17arbitrary-send-ethFonctions qui envoient de l'Ether vers des destinations arbitrairesÉlevéMoyenne
18controlled-array-lengthAffectation de longueur de tableau contaminéeÉlevéMoyenne
19controlled-delegatecallDestination delegatecall contrôléeÉlevéMoyenne
20delegatecall-loopFonctions payables utilisant delegatecall dans une boucleÉlevéMoyenne
21incorrect-expExponentiation incorrecteÉlevéMoyenne
22incorrect-returnSi un return est utilisé incorrectement en mode assemblyÉlevéMoyenne
23msg-value-loopmsg.value dans une boucleÉlevéMoyenne
24reentrancy-ethVulnérabilités de réentrance (vol d'Ether)ÉlevéMoyenne
25reentrancy-balanceVulnérabilités de réentrance entraînant des vérifications de solde obsolètesÉlevéMoyenne
26return-leaveSi un return est utilisé à la place d'un leaveÉlevéMoyenne
27storage-arrayBogue du compilateur pour les tableaux d'entiers signés en stockageÉlevéMoyenne
28unchecked-transferTransfert de jetons non vérifiéÉlevéMoyenne
29weak-prngPRNG faibleÉlevéMoyenne
30domain-separator-collisionDétecte les jetons ERC20 dont une fonction a une signature en collision avec DOMAIN_SEPARATOR() d'EIP-2612MoyenÉlevée
31enum-conversionConversion d'enum dangereuseMoyenÉlevée
32erc20-interfaceInterfaces ERC20 incorrectesMoyenÉlevée
33erc721-interfaceInterfaces ERC721 incorrectesMoyenÉlevée
34incorrect-equalityÉgalités strictes dangereusesMoyenÉlevée
35locked-etherContrats qui bloquent de l'EtherMoyenÉlevée
36mapping-deletionSuppression sur un mapping contenant une structureMoyenÉlevée
37pyth-deprecated-functionsDétecter les fonctions Pyth obsolètesMoyenÉlevée
38pyth-unchecked-confidenceDétecter lorsque le niveau de confiance d'un prix Pyth n'est pas vérifiéMoyenÉlevée
39pyth-unchecked-publishtimeDétecter lorsque le publishTime d'un prix Pyth n'est pas vérifiéMoyenÉlevée
40shadowing-abstractVariables d'état masquées depuis des contrats abstraitsMoyenÉlevée
41tautological-compareComparer une variable à elle-même retourne toujours vrai ou faux, selon la comparaisonMoyenÉlevée
42tautologyTautologie ou contradictionMoyenÉlevée
43write-after-writeÉcriture inutiliséeMoyenÉlevée
44boolean-cstMauvais usage d'une constante booléenneMoyenMoyenne
45chronicle-unchecked-priceDétecter lorsque le prix Chronicle n'est pas vérifiéMoyenMoyenne
46constant-function-asmFonctions constantes utilisant du code assemblyMoyenMoyenne
47constant-function-stateFonctions constantes modifiant l'étatMoyenMoyenne
48divide-before-multiplyOrdre des opérations arithmétiques imprécisesMoyenMoyenne
49gelato-unprotected-randomnessAppel à _requestRandomness dans une fonction non protégéeMoyenMoyenne
50out-of-order-retryableTransactions retryables désordonnéesMoyenMoyenne
51reentrancy-no-ethVulnérabilités de réentrance (sans vol d'Ether)MoyenMoyenne
52reused-constructorConstructeur de base réutiliséMoyenMoyenne
53tx-originUsage dangereux de tx.originMoyenMoyenne
54unchecked-lowlevelAppels bas niveau non vérifiésMoyenMoyenne
55unchecked-sendSend non vérifiéMoyenMoyenne
56uninitialized-localVariables locales non initialiséesMoyenMoyenne
57unused-returnValeurs de retour inutiliséesMoyenMoyenne
58chainlink-feed-registryDétecter l'utilisation du registre de flux ChainlinkFaibleÉlevée
59incorrect-modifierModificateurs pouvant retourner la valeur par défautFaibleÉlevée
60optimism-deprecationDétecter lorsqu'un predeploy ou une fonction Obsolète d'Optimism est utiliséFaibleÉlevée
61shadowing-builtinMasquage de symbole intégréFaibleÉlevée
62shadowing-localMasquage de variables localesFaibleÉlevée
63uninitialized-fptr-cstAppels à des pointeurs de fonction non initialisés dans les constructeursFaibleÉlevée
64variable-scopeVariables locales utilisées avant leur déclarationFaibleÉlevée
65void-cstConstructeur appelé non implémentéFaibleÉlevée
66calls-loopAppels multiples dans une boucleFaibleMoyenne
67events-accessContrôle d'accès aux événements manquantsFaibleMoyenne
68events-mathsÉvénements arithmétiques manquantsFaibleMoyenne
69incorrect-unaryExpressions unaires dangereusesFaibleMoyenne
70missing-zero-checkValidation d'adresse zéro manquanteFaibleMoyenne
71reentrancy-benignVulnérabilités de réentrance bénignesFaibleMoyenne
72reentrancy-eventsVulnérabilités de réentrance entraînant des événements désordonnésFaibleMoyenne
73return-bombUn appelé bas niveau peut consommer tout le gaz de l'appelant de manière inattendueFaibleMoyenne
74timestampUsage dangereux de block.timestampFaibleMoyenne
75assemblyUsage de l'assemblyInformativeÉlevée
76assert-state-changeChangement d'état dans un assertInformativeÉlevée
77boolean-equalComparaison à une constante booléenneInformativeÉlevée
78cyclomatic-complexityDétecte les fonctions avec une complexité cyclomatique élevée (> 11)InformativeÉlevée
79deprecated-standardsStandards Solidity obsolètesInformativeÉlevée
80erc20-indexedParamètres d'événement ERC20 non indexésInformativeÉlevée
81function-init-stateFonction initialisant des variables d'étatInformativeÉlevée
82incorrect-using-forDétecte l'utilisation d'une déclaration using-for lorsqu'aucune fonction d'une bibliothèque donnée ne correspond à un type donnéInformativeÉlevée
83low-level-callsAppels bas niveauInformativeÉlevée
84missing-inheritanceHéritage manquantInformativeÉlevée
85naming-conventionConformité aux conventions de nommage SolidityInformativeÉlevée
86pragmaSi différentes directives pragma sont utiliséesInformativeÉlevée
87redundant-statementsInstructions redondantesInformativeÉlevée
88solc-versionVersion de Solidity incorrecteInformativeÉlevée
89unimplemented-functionsFonctions non implémentéesInformativeÉlevée
90unindexed-event-addressÉvénements avec paramètres d'adresse mais aucun paramètre indexéInformativeÉlevée
91unused-stateVariables d'état inutiliséesInformativeÉlevée
92costly-loopOpérations coûteuses dans une boucleInformativeMoyenne
93dead-codeFonctions qui ne sont pas utiliséesInformativeMoyenne
94reentrancy-unlimited-gasVulnérabilités de réentrance via send et transferInformativeMoyenne
95too-many-digitsConformité aux bonnes pratiques de notation numériqueInformativeMoyenne
96cache-array-lengthDétecte les boucles for qui utilisent le membre length d'un tableau de stockage dans leur condition de boucle et ne le modifient pasOptimisationÉlevée
97constable-statesVariables d'état qui pourraient être déclarées constantesOptimisationÉlevée
98external-functionFonction publique qui pourrait être déclarée externeOptimisationÉlevée
99immutable-statesVariables d'état qui pourraient être déclarées immutablesOptimisationÉlevée
100var-read-using-thisLe contrat lit sa propre variable en utilisant thisOptimisationÉlevée
TitreUtilisationAuteursConférence/PublicationCode
ReJection: A AST-Based Reentrancy Vulnerability Detection MethodAnalyse basée sur l'AST construite au-dessus de SlitherRui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia ChenCTCIS 19-
MPro: Combining Static and Symbolic Analysis for Scalable Testing of Smart ContractExploiter la dépendance de données via SlitherWilliam Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay GaneshISSRE 2019MPro
ETHPLOIT: From Fuzzing to Efficient Exploit Generation against Smart ContractsExploiter la dépendance de données via SlitherQingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi MaSANER 20-
Verification of Ethereum Smart Contracts: A Model Checking ApproachExécution symbolique construite au-dessus du CFG de SlitherTam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho QuanIJMLC 20-
Smart Contract RepairS'appuyer sur les détecteurs de vulnérabilités de SlitherXiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik RoychoudhuryTOSEM 20SCRepair
Demystifying Loops in Smart ContractsExploiter la dépendance de données via SlitherBen Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil DilligASE 20-
Trace-Based Dynamic Gas Estimation of Loops in Smart ContractsUtiliser le CFG de Slither pour détecter les bouclesChunmiao Li, Shijie Nie, Yang Cao, Yijun Yu, Zhenjiang HuIEEE Open J. Comput. Soc. 1 (2020)-
SAILFISH: Vetting Smart Contract State-Inconsistency Bugs in SecondsS'appuyer sur SlithIR pour construire un graphe de dépendance de stockagePriyanka Bose, Dipanjan Das, Yanju Chen, Yu Feng, Christopher Kruegel, and Giovanni VignaS&P 22Sailfish
SolType: Refinement Types for Arithmetic Overflow in SolidityUtiliser Slither comme frontal pour construire un système de types raffinésBryan Tan, Benjamin Mariano, Shuvendu K. Lahiri, Isil Dillig, Yu FengPOPL 22-
Do Not Rug on Me: Leveraging Machine Learning Techniques for Automated Scam DetectionUtiliser Slither pour extraire les caractéristiques des tokens (mintable, pausable, ..)Mazorra, Bruno, Victor Adan, and Vanesa DazaMathematics 10.6 (2022)-
MANDO: Multi-Level Heterogeneous Graph Embeddings for Fine-Grained Detection of Smart Contract VulnerabilitiesUtiliser Slither pour extraire le CFG et le graphe d'appelHoang Nguyen, Nhat-Minh Nguyen, Chunyao Xie, Zahra Ahmadi, Daniel Kudendo, Thanh-Nam Doan and Lingxiao JiangIEEE 9th International Conference on Data Science and Advanced Analytics (DSAA, 2022)ge-sc
Automated Auditing of Price Gouging TOD Vulnerabilities in Smart ContractsUtiliser Slither pour extraire le CFG et les dépendances de donnéesSidi Mohamed Beillahi, Eric Keilty, Keerthi Nelaturu, Andreas Veneris, and Fan Long2022 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 SlitherJan-Philipp Toberg, Jonas Schiffl, Frederik Reiche, Bernhard Beckert, Robert Heinrich, Ralf ReussnerIEEE International Conference on Decentralized Applications and Infrastructures (DAPPS), 2022SolidityAccessControlEnforcement
Smart Contract Vulnerability Detection Based on Deep Learning and Multimodal Decision FusionUtiliser Slither pour extraire le CFGWeichu Deng, Huanchun Wei, Teng Huang, Cong Cao, Yun Peng, and Xuan HuSensors 2023, 23, 7246-
Semantic-enriched Code Knowledge Graph to Reveal Unknowns in Smart Contract Code ReuseUtiliser 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 XiaACM Transactions on Software Engineering and Methodology, 2023-
Smart Contract Parallel Execution with Fine-Grained State AccessesUtiliser Slither pour construire des graphes d'accès aux étatsXiaodong Qi, Jiao Jiao, Yi LiInternational Conference on Distributed Computing Systems (ICDCS), 2023-
Bad Apples: Understanding the Centralized Security Risks in Decentralized EcosystemsImplémenter une analyse interne au-dessus de SlitherKailun Yan , Jilian Zhang , Xiangyu Liu , Wenrui Diao , Shanqing GuoACM Web Conference April 2023-
Identifying Vulnerabilities in Smart Contracts using Interval AnalysisCréer 4 détecteurs au-dessus de SlitherŞtefan-Claudiu Susan, Andrei ArusoaieFROM 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 SlitherMaha Ayub , Tania Saleem , Muhammad Janjua , Talha AhmadTOSEM 2023SmartMuv