
slither v0.11.6
Statischer Analyzer für Solidity und Vyper
Slither, der statische Analysator für Smart Contracts
Tritt dem Empire Hacking Slack bei
- Diskussionen und Support
Slither ist ein in Python3 geschriebenes statisches Analyse-Framework für Solidity und Vyper. Es führt eine Reihe von Schwachstellendetektoren aus, gibt visuelle Informationen über Vertragsdetails aus und bietet eine API, um benutzerdefinierte Analysen einfach zu schreiben. Slither ermöglicht Entwicklern, Schwachstellen zu finden, ihr Codeverständnis zu verbessern und schnell individuelle Analysen zu prototypisieren.
- Funktionen
- Verwendung
- Installation
- Detektoren
- Printer
- Werkzeuge
- API-Dokumentation
- Hilfe
- FAQ
- Lizenz
- Veröffentlichungen
Funktionen
- Erkennt verwundbaren Solidity-Code mit niedriger Falsch-Positiv-Rate (siehe die Liste der Trophäen)
- Identifiziert die Stelle im Quellcode, an der der Fehler auftritt
- Einfache Integration in Continuous Integration und Hardhat/Foundry-Builds
- Integrierte 'Printer' melden schnell wichtige Vertragsinformationen
- Detektor-API zum Schreiben benutzerdefinierter Analysen in Python
- Fähigkeit, Verträge zu analysieren, die mit Solidity >= 0.4 geschrieben wurden
- Zwischendarstellung (SlithIR) ermöglicht einfache, hochpräzise Analysen
- Analysiert korrekt 99,9% aller öffentlichen Solidity-Codes
- Durchschnittliche Ausführungszeit von weniger als 1 Sekunde pro Vertrag
- Integration in die Code-Scannung von GitHub in CI
- Unterstützung für Vyper-Smart Contracts
Verwendung
Führe Slither auf einer Hardhat/Foundry/Dapp/Brownie-Anwendung aus:```console slither .
Dies ist die bevorzugte Option, wenn Ihr Projekt Abhängigkeiten hat, da Slither auf dem zugrunde liegenden Kompilierungs-Framework basiert, um Quellcode zu kompilieren.
Sie können Slither jedoch auch auf einer einzelnen Datei ausführen, die keine Abhängigkeiten importiert:```console
slither tests/uninitialized.sol
Wie installieren
Hinweis Slither benötigt Python 3.10+. Falls Sie keines der unterstützten Compilierungs-Frameworks verwenden, benötigen Sie solc, den Solidity-Compiler. Wir empfehlen solc-select für den bequemen Wechsel zwischen solc-Versionen.
Verwendung von uv (empfohlen)
uv ist ein schneller Python-Paketmanager, der 10-100x schneller ist als 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
Zum Aktualisieren:```console
uv tool upgrade slither-analyzer
Mit Pip verwenden```console
python3 -m pip install slither-analyzer
Aktualisieren:```console
python3 -m pip install --upgrade slither-analyzer
Brew verwenden```console
brew install slither-analyzer
### Mit Git (Entwicklung)```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>
The -e flag installiert im bearbeitbaren Modus, was bedeutet, dass Änderungen am Quellcode sofort übernommen werden, ohne dass eine Neuinstallation erforderlich ist.
Docker verwenden
Verwenden Sie das Docker-Image eth-security-toolbox. Es enthält alle unsere Sicherheitstools und jede Hauptversion von Solidity in einem einzigen Image. /home/share wird im Container auf /share gemountet.```bash
docker pull trailofbits/eth-security-toolbox
Um ein Verzeichnis im Container freizugeben:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
Integration
- Für die GitHub action Integration verwenden Sie slither-action.
- Für die pre-commit Integration verwenden Sie (ersetzen Sie
$GIT_TAGdurch das tatsächliche Tag) ```YAML- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- id: slither
- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- Um einen Markdown-Bericht zu erstellen, verwenden Sie
slither [target] --checklist. - Um einen Markdown mit GitHub-Quellcode-Hervorhebung zu generieren, verwenden Sie
slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/(ersetzen SieORG,REPO,COMMIT)
Detektoren