
Analizzatore statico per Solidity e Vyper
Unisciti a Empire Hacking Slack
- Discussioni e supporto
Slither è un framework di analisi statica per Solidity e Vyper scritto in Python3. Esegue una suite di rilevatori di vulnerabilità, stampa informazioni visive sui dettagli dei contratti e fornisce un'API per scrivere facilmente analisi personalizzate. Slither consente agli sviluppatori di trovare vulnerabilità, migliorare la comprensione del codice e prototipare rapidamente analisi personalizzate.
Esegui Slither su un'applicazione Hardhat/Foundry/Dapp/Brownie:```console slither .
Questa è l'opzione preferita se il tuo progetto ha dipendenze, poiché Slither si basa sul framework di compilazione sottostante per compilare il codice sorgente.
Tuttavia, puoi eseguire Slither su un file singolo che non importa dipendenze:```console
slither tests/uninitialized.sol
Nota Slither richiede Python 3.10+. Se non intendi utilizzare uno dei framework di compilazione supportati, hai bisogno di solc, il compilatore Solidity; consigliamo di utilizzare solc-select per passare comodamente tra le versioni di solc.
uv è un gestore di pacchetti Python veloce che è da 10 a 100 volte più rapido di pip.```console
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install slither-analyzer
uvx --from slither-analyzer slither
Per aggiornare:```console
uv tool upgrade slither-analyzer
python3 -m pip install slither-analyzer
Per aggiornare:```console
python3 -m pip install --upgrade slither-analyzer
brew install slither-analyzer
### Usare Git (Sviluppo)```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>
Il flag -e installa in modalità modificabile, il che significa che le modifiche al codice sorgente vengono immediatamente riflesse senza dover reinstallare.
Utilizza l'immagine docker eth-security-toolbox. Include tutti i nostri strumenti di sicurezza e ogni versione principale di Solidity in una singola immagine. /home/share verrà montato su /share nel contenitore.```bash
docker pull trailofbits/eth-security-toolbox
Per condividere una directory nel contenitore:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
$GIT_TAG con un tag reale) ```YAML
slither [target] --checklist.slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/ (sostituisci ORG, REPO, COMMIT)Per maggiori informazioni, consulta
human-summary: Stampa un riepilogo leggibile dei contrattiinheritance-graph: Esporta il grafico di ereditarietà di ogni contratto in un file dotcontract-summary: Stampa un riepilogo dei contrattiloc: Conta il numero totale di righe di codice (LOC), righe di codice sorgente (SLOC) e righe di commento (CLOC) trovate nei file sorgente (SRC), dipendenze (DEP) e file di test (TEST).entry-points: Stampa tutte le funzioni di entry point che modificano lo stato e le loro variabili dei contratticall-graph: Esporta il grafo delle chiamate dei contratti in un file dotcfg: Esporta il CFG di ogni funzionefunction-summary: Stampa un riepilogo delle funzionivars-and-auth: Stampa le variabili di stato scritte e l'autorizzazione delle funzioninot-pausable: Stampa le funzioni che non usano il modificatore whenNotPaused.Per eseguire un printer, usa --print e un elenco separato da virgole di printer.
Consulta la documentazione dei printer per gli elenchi completi.
slither-check-upgradeability: Revisiona l'aggiornabilità basata su delegatecallslither-prop: Generazione automatica di test unitari e proprietàslither-flat: Appiattisci un codebaseslither-check-erc: Verifica la conformità ERCslither-read-storage: Leggi i valori di storage dai contrattislither-interface: Genera un'interfaccia per un contrattoConsulta la documentazione degli strumenti per ulteriori strumenti.
Contattaci per ricevere assistenza nella creazione di strumenti personalizzati.
La documentazione degli interni di Slither è disponibile qui.
Sentiti libero di passare dal nostro canale Slack (#ethereum) per assistenza nell'uso o nell'estensione di Slither.
La documentazione dei printer descrive le informazioni che Slither è in grado di visualizzare per ogni contratto.
La documentazione dei detector descrive come scrivere una nuova analisi delle vulnerabilità.
La documentazione dell'API descrive i metodi e gli oggetti disponibili per analisi personalizzate.
La documentazione di SlithIR descrive la rappresentazione intermedia SlithIR.
Come si escludono mock o test?
Come risolvo "file sconosciuto" o problemi di compilazione?
slither contract.sol fallirà.
Invece, usa slither . nella directory padre di contracts/ (dovresti vedere contracts/ quando esegui ls).
Se hai una cartella node_modules/, deve trovarsi nella stessa directory di contracts/. Per verificare che questo problema sia relativo a slither,
esegui il comando di compilazione per il framework che stai utilizzando, ad esempio npx hardhat compile. Deve funzionare con successo;
altrimenti, il motore di compilazione di slither, crytic-compile, non può generare l'AST.Slither è concesso in licenza e distribuito sotto la licenza AGPLv3. Contattaci se cerchi un'eccezione ai termini.
Se stai usando Slither in un lavoro accademico, considera di candidarti al Crytic $10k Research Prize.
| Num | Rilevatore | Cosa rileva | Impatto | Confidenza |
|---|
| Titolo | Utilizzo | Autori | Sede | Codice |
|---|
| ReJection: A AST-Based Reentrancy Vulnerability Detection Method | Analisi basata su AST costruita sopra 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 | Sfrutta le dipendenze dei dati tramite Slither | William Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay Ganesh | ISSRE 2019 | MPro |
| ETHPLOIT: From Fuzzing to Efficient Exploit Generation against Smart Contracts | Sfrutta le dipendenze dei dati tramite Slither | Qingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi Ma | SANER 20 | - |
| Verification of Ethereum Smart Contracts: A Model Checking Approach | Esecuzione simbolica costruita sopra il CFG di Slither | Tam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho Quan | IJMLC 20 | - |
| Smart Contract Repair | Si basa sui detector di vulnerabilità di Slither | Xiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik Roychoudhury | TOSEM 20 | SCRepair |
| Demystifying Loops in Smart Contracts | Sfrutta le dipendenze dei dati tramite Slither | Ben Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil Dillig | ASE 20 | - |
| Trace-Based Dynamic Gas Estimation of Loops in Smart Contracts | Usa il CFG di Slither per rilevare i loop | 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 | Si basa su SlithIR per costruire un grafo delle dipendenze di storage | 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 | Usa Slither come frontend per costruire un sistema di tipi per raffinamento | 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 | Usa Slither per estrarre le caratteristiche dei token (mintabile, pausabile, ..) | 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 | Usa Slither per estrarre il CFG e il grafo delle chiamate | 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 | Usa Slither per estrarre il CFG e le dipendenze dei dati | 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 | Estende le dipendenze dei dati di 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 | Usa Slither per estrarre il 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 | Usa Slither per estrarre le caratteristiche del codice (CFG, funzione, tipi di parametri, ..) | 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 | Usa Slither per costruire grafi degli accessi allo stato | Xiaodong Qi, Jiao Jiao, Yi Li | International Conference on Distributed Computing Systems (ICDCS), 2023 | - |
| Bad Apples: Understanding the Centralized Security Risks in Decentralized Ecosystems | Implementa un'analisi interna basata su Slither | Kailun Yan , Jilian Zhang , Xiangyu Liu , Wenrui Diao , Shanqing Guo | ACM Web Conference April 2023 | - |
| Identifying Vulnerabilities in Smart Contracts using Interval Analysis | Crea 4 detector basati su Slither | Ştefan-Claudiu Susan, Andrei Arusoaie | FROM 2023 | - |
| Storage State Analysis and Extraction of Ethereum Blockchain Smart Contracts (nessun PDF in accesso aperto) | Si basa sul CFG e sull'AST di Slither | Maha Ayub , Tania Saleem , Muhammad Janjua , Talha Ahmad | TOSEM 2023 | SmartMuv |