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.1k15il y a 1 moisVé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.

Télécharger l’outil
  • 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

    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

    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

    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 Seconds

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

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