
slither v0.11.6
Analyseur statique pour Solidity et Vyper
Slither, l'analyseur statique de contrats intelligents
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.
- Fonctionnalités
- Utilisation
- Installation
- Détecteurs
- Affichages
- Outils
- Documentation de l'API
- Obtenir de l'aide
- FAQ
- Licence
- Publications
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 .
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
Pour mettre à niveau:```console
uv tool upgrade slither-analyzer
Utilisation de Pip```console
python3 -m pip install slither-analyzer
Pour mettre à niveau :```console
python3 -m pip install --upgrade slither-analyzer
Utilisation de Brew```console
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.
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
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_TAGpar le vrai tag) ```YAML- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- id: slither
- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- 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/(remplacezORG,REPO,COMMIT)
Détecteurs