
slither v0.11.6
Analizzatore statico per Solidity e Vyper
Slither, l'analizzatore statico di smart contract
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.
- Caratteristiche
- Utilizzo
- Come installare
- Rilevatori
- Stampanti
- Strumenti
- Documentazione API
- Ottenere aiuto
- FAQ
- Licenza
- Pubblicazioni
Caratteristiche
- Rileva codice Solidity vulnerabile con bassi falsi positivi (vedi l'elenco dei trofei)
- Identifica dove si verifica la condizione di errore nel codice sorgente
- Si integra facilmente con l'integrazione continua e le build di Hardhat/Foundry
- Le 'stampanti' integrate riportano rapidamente informazioni cruciali sui contratti
- API per i rilevatori per scrivere analisi personalizzate in Python
- Capacità di analizzare contratti scritti con Solidity >= 0.4
- La rappresentazione intermedia (SlithIR) consente analisi semplici e ad alta precisione
- Analizza correttamente il 99,9% di tutto il codice Solidity pubblico
- Tempo di esecuzione medio inferiore a 1 secondo per contratto
- Si integra con la scansione del codice di Github in CI
- Supporto per smart contract Vyper
Utilizzo
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
Come installare
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.
Usando uv (Consigliato)
uv è un gestore di pacchetti Python veloce che è da 10 a 100 volte più rapido di 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
Per aggiornare:```console
uv tool upgrade slither-analyzer
Usare Pip```console
python3 -m pip install slither-analyzer
Per aggiornare:```console
python3 -m pip install --upgrade slither-analyzer
Usare Brew```console
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.
Utilizzo di Docker
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
Integrazione
- Per l'integrazione con GitHub Action, utilizza slither-action.
- Per l'integrazione con pre-commit, utilizza (sostituisci
$GIT_TAGcon un tag reale) ```YAML- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- id: slither
- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- Per generare un report in Markdown, usa
slither [target] --checklist. - Per generare un Markdown con l'evidenziazione del codice sorgente di GitHub, usa
slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/(sostituisciORG,REPO,COMMIT)
Rilevatori