
Statischer Analyzer für Solidity und Vyper
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.
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
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.
uv ist ein schneller Python-Paketmanager, der 10-100x schneller ist als pip.```console
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install slither-analyzer
uvx --from slither-analyzer slither
Zum Aktualisieren:```console
uv tool upgrade slither-analyzer
python3 -m pip install slither-analyzer
Aktualisieren:```console
python3 -m pip install --upgrade slither-analyzer
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.
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
$GIT_TAG durch das tatsächliche Tag) ```YAML
slither [target] --checklist.slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/ (ersetzen Sie ORG, REPO, COMMIT)Weitere Informationen finden Sie unter
human-summary: Gibt eine menschenlesbare Zusammenfassung der Verträge ausinheritance-graph: Exportiert den Vererbungsgraphen jedes Vertrags in eine DOT-Dateicontract-summary: Gibt eine Zusammenfassung der Verträge ausloc: Zählt die Gesamtzahl der Codezeilen (LOC), Quellcodezeilen (SLOC) und Kommentarzeilen (CLOC) in Quelldateien (SRC), Abhängigkeiten (DEP) und Testdateien (TEST).entry-points: Gibt alle zustandsändernden Einstiegspunktfunktionen und deren Variablen der Verträge auscall-graph: Exportiere den Call-Graphen der Verträge in eine dot-Dateicfg: Exportiere das CFG jeder Funktionfunction-summary: Drucke eine Zusammenfassung der Funktionenvars-and-auth: Drucke die geschriebenen Zustandsvariablen und die Autorisierung der Funktionennot-pausable: Drucke Funktionen, die den Modifikator whenNotPaused nicht verwenden.Um einen Drucker auszuführen, verwende --print und eine kommagetrennte Liste von Druckern.
Siehe die Printer-Dokumentation für die vollständigen Listen.
slither-check-upgradeability: Überprüfe die auf delegatecall basierende Upgradeabilityslither-prop: Automatische Unit-Tests und Eigenschaftsgenerierungslither-flat: Glätten einer Codebasisslither-check-erc: Überprüfe die ERC-Konformitätslither-read-storage: Lese Speicherwerte aus Verträgenslither-interface: Generiere ein Interface für einen VertragSiehe die Tool-Dokumentation für weitere Tools.
Kontaktiere uns, um Hilfe beim Erstellen benutzerdefinierter Tools zu erhalten.
Die Dokumentation zu Slithers Interna ist hier verfügbar.
Besuche gerne unseren Slack-Kanal (#ethereum) für Hilfe bei der Nutzung oder Erweiterung von Slither.
Die Printer-Dokumentation beschreibt die Informationen, die Slither für jeden Vertrag visualisieren kann.
Die Detector-Dokumentation beschreibt, wie man eine neue Schwachstellenanalyse schreibt.
Die API-Dokumentation beschreibt die Methoden und Objekte, die für benutzerdefinierte Analysen verfügbar sind.
Die SlithIR-Dokumentation beschreibt die Zwischendarstellung SlithIR.
Wie schließe ich Mocks oder Tests aus?
Wie behebe ich "unknown file" oder Kompilierungsprobleme?
slither contract.sol fehlschlagen.
Verwende stattdessen slither . im übergeordneten Verzeichnis von contracts/ (du solltest contracts/ sehen, wenn du ls ausführst).
Wenn du einen node_modules/-Ordner hast, muss er sich im selben Verzeichnis wie contracts/ befinden. Um zu überprüfen, ob dieses Problem mit Slither zusammenhängt, führe den Kompilierungsbefehl für das von dir verwendete Framework aus, z.B. npx hardhat compile. Das muss erfolgreich funktionieren; andernfalls kann Slithers Kompilierungs-Engine, crytic-compile, den AST nicht generieren.Slither ist unter der AGPLv3-Lizenz lizenziert und wird unter dieser vertrieben. Kontaktiere uns, wenn du eine Ausnahme von den Bedingungen suchst.
Wenn du Slither in einer akademischen Arbeit verwendest, erwäge eine Bewerbung für den Crytic $10k Research Prize.
| Nr. | Detektor | Was er erkennt | Auswirkung | Vertrauen |
|---|
| Titel | Nutzung | Autoren | Konferenz/Zeitschrift | Code |
|---|
| ReJection: A AST-Based Reentrancy Vulnerability Detection Method | AST-basierte Analyse auf Basis von 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 | Nutzung von Datenabhängigkeiten durch Slither | William Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay Ganesh | ISSRE 2019 | MPro |
| ETHPLOIT: From Fuzzing to Efficient Exploit Generation against Smart Contracts | Nutzung von Datenabhängigkeiten durch Slither | Qingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi Ma | SANER 20 | - |
| Verification of Ethereum Smart Contracts: A Model Checking Approach | Symbolische Ausführung auf Basis von Slithers CFG | Tam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho Quan | IJMLC 20 | - |
| Smart Contract Repair | Verlass auf Slithers Schwachstellendetektoren | Xiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik Roychoudhury | TOSEM 20 | SCRepair |
| Demystifying Loops in Smart Contracts | Nutzung von Datenabhängigkeiten durch Slither | Ben Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil Dillig | ASE 20 | - |
| Trace-Based Dynamic Gas Estimation of Loops in Smart Contracts | Verwendung von Slithers CFG zur Erkennung von Schleifen | 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 | Verlass auf SlithIR zum Aufbau eines Storage-Dependency-Graphen | 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 | Verwendung von Slither als Frontend zur Erstellung eines Verfeinerungstypsystems | 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 | Verwendung von Slither zur Extraktion von Tokenmerkmalen (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 | Verwendung von Slither zur Extraktion des CFG und des Call-Graphen | 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 | Verwendung von Slither zur Extraktion des CFG und der Datenabhängigkeiten | 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 | Erweiterung der Datenabhängigkeiten von 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 | Verwendung von Slither zur Extraktion des 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 | Verwendung von Slither zur Extraktion der Code-Merkmale (CFG, Funktion, Parametertypen, ..) | 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 | Verwendung von Slither zum Aufbau von Zustandszugriffsgraphen | Xiaodong Qi, Jiao Jiao, Yi Li | International Conference on Distributed Computing Systems (ICDCS), 2023 | - |
| Bad Apples: Understanding the Centralized Security Risks in Decentralized Ecosystems | Implementierung einer internen Analyse auf Basis von Slither | Kailun Yan , Jilian Zhang , Xiangyu Liu , Wenrui Diao , Shanqing Guo | ACM Web Conference April 2023 | - |
| Identifying Vulnerabilities in Smart Contracts using Interval Analysis | Erstellung von 4 Detektoren auf Basis von Slither | Ştefan-Claudiu Susan, Andrei Arusoaie | FROM 2023 | - |
| Storage State Analysis and Extraction of Ethereum Blockchain Smart Contracts (no PDF in open access) | Verlass auf Slithers CFG und AST | Maha Ayub , Tania Saleem , Muhammad Janjua , Talha Ahmad | TOSEM 2023 | SmartMuv |