Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
slither — Analizzatore statico per Solidity e Vyper | Kitploit
Strumenti/GitHubGitHub/crytic/slither
Analisi StaticaAnalisi delle VulnerabilitàAnalisi del Codice
GitHubcrytic/slither

slither

Analizzatore statico per Solidity e Vyper

Vedi RepositorySito web
6.3k1.1k15 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Slither, l'analizzatore statico di smart contract

Logo del framework di analisi statica Slither

Stato della build PyPI Slither - Leggi la documentazione Slither - Wiki

Unisciti a Empire Hacking Slack

Stato 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
    • Usando uv (Consigliato)
    • Usando Pip
    • Usando Git
    • Usando Docker
    • Integrazione
  • Rilevatori
  • Stampanti
    • Stampanti per revisione rapida
    • Stampanti per revisione approfondita
  • Strumenti
  • Documentazione API
  • Ottenere aiuto
  • FAQ
  • Licenza
  • Pubblicazioni
    • Pubblicazione di Trail of Bits
    • Pubblicazioni esterne

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 .

root@kitploit:~
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

root@kitploit:~
Per aggiornare:```console
uv tool upgrade slither-analyzer

Usare Pip```console

python3 -m pip install slither-analyzer

root@kitploit:~
Per aggiornare:```console
python3 -m pip install --upgrade slither-analyzer

Usare Brew```console

brew install slither-analyzer

root@kitploit:~
### 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

root@kitploit:~
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_TAG con un tag reale) ```YAML
    • repo: https://github.com/crytic/slither rev: $GIT_TAG hooks:
      • id: slither
    root@kitploit:~
  • 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/ (sostituisci ORG, REPO, COMMIT)

Rilevatori

Per maggiori informazioni, consulta

  • La Documentazione dei Rilevatori per i dettagli su ogni rilevatore
  • La Selezione dei Rilevatori per eseguire solo rilevatori selezionati. Per impostazione predefinita, vengono eseguiti tutti i rilevatori.
  • La Modalità di Triage per filtrare i singoli risultati

Stampanti

Stampanti per Revisione Rapida

  • human-summary: Stampa un riepilogo leggibile dei contratti
  • inheritance-graph: Esporta il grafico di ereditarietà di ogni contratto in un file dot
  • contract-summary: Stampa un riepilogo dei contratti
  • loc: 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 contratti

Stampanti per Revisione Approfondita* call-graph: Esporta il grafo delle chiamate dei contratti in un file dot

  • cfg: Esporta il CFG di ogni funzione
  • function-summary: Stampa un riepilogo delle funzioni
  • vars-and-auth: Stampa le variabili di stato scritte e l'autorizzazione delle funzioni
  • not-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.

Strumenti

  • slither-check-upgradeability: Revisiona l'aggiornabilità basata su delegatecall
  • slither-prop: Generazione automatica di test unitari e proprietà
  • slither-flat: Appiattisci un codebase
  • slither-check-erc: Verifica la conformità ERC
  • slither-read-storage: Leggi i valori di storage dai contratti
  • slither-interface: Genera un'interfaccia per un contratto

Consulta la documentazione degli strumenti per ulteriori strumenti.

Contattaci per ricevere assistenza nella creazione di strumenti personalizzati.

Documentazione API

La documentazione degli interni di Slither è disponibile qui.

Come ottenere aiuto

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.

FAQ

Come si escludono mock o test?

  • Consulta la nostra documentazione sul filtraggio dei percorsi.

Come risolvo "file sconosciuto" o problemi di compilazione?

  • Poiché slither richiede l'AST di solc, deve avere tutte le dipendenze disponibili. Se un contratto ha dipendenze, 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.

Licenza

Slither è concesso in licenza e distribuito sotto la licenza AGPLv3. Contattaci se cerchi un'eccezione ai termini.

Pubblicazioni

Pubblicazione di Trail of Bits

  • Slither: A Static Analysis Framework For Smart Contracts, Josselin Feist, Gustavo Grieco, Alex Groce - WETSEB '19

Pubblicazioni esterne

Se stai usando Slither in un lavoro accademico, considera di candidarti al Crytic $10k Research Prize.

Scarica lo strumento
NumRilevatoreCosa rilevaImpattoConfidenza
1abiencoderv2-arrayArray storage abiencoderv2AltoAlta
2arbitrary-send-erc20transferFrom usa un from arbitrarioAltoAlta
3array-by-referenceModifica dell'array di storage per valoreAltoAlta
4encode-packed-collisionCollisione ABI encodePackedAltoAlta
5incorrect-shiftL'ordine dei parametri in un'istruzione di shift non è corretto.AltoAlta
6multiple-constructorsSchemi di costruttori multipliAltoAlta
7name-reusedNome del contratto riutilizzatoAltoAlta
8protected-varsVariabili non protette rilevateAltoAlta
9public-mappings-nestedMapping pubblici con variabili annidateAltoAlta
10rtloÈ utilizzato un carattere di controllo Right-To-Left OverrideAltoAlta
11shadowing-stateShadowing di variabili di statoAltoAlta
12suicidalFunzioni che permettono a chiunque di distruggere il contrattoAltoAlta
13uninitialized-stateVariabili di stato non inizializzateAltoAlta
14uninitialized-storageVariabili di storage non inizializzateAltoAlta
15unprotected-upgradeContratto aggiornabile non protettoAltoAlta
16arbitrary-send-erc20-permittransferFrom usa from arbitrario con permitAltoMedia
17arbitrary-send-ethFunzioni che inviano Ether a destinazioni arbitrarieAltoMedia
18controlled-array-lengthAssegnazione contaminata della lunghezza dell'arrayAltoMedia
19controlled-delegatecallDestinazione delegatecall controllataAltoMedia
20delegatecall-loopFunzioni pagabili che utilizzano delegatecall all'interno di un cicloAltoMedia
21incorrect-expEsponenziazione errataAltoMedia
22incorrect-returnSe un return viene utilizzato in modo errato nella modalità assembly.AltoMedia
23msg-value-loopmsg.value all'interno di un cicloAltoMedia
24reentrancy-ethVulnerabilità di rientranza (furto di ether)AltoMedia
25reentrancy-balanceVulnerabilità di rientranza che portano a controlli di saldo obsoletiAltoMedia
26return-leaveSe viene utilizzato un return invece di un leave.AltoMedia
27storage-arrayBug del compilatore per array di interi con segno in storageAltoMedia
28unchecked-transferTrasferimento di token non controllatoAltoMedia
29weak-prngPRNG deboleAltoMedia
30domain-separator-collisionRileva token ERC20 con una funzione la cui firma collide con DOMAIN_SEPARATOR() di EIP-2612MedioAlta
31enum-conversionRileva conversione pericolosa di enumMedioAlta
32erc20-interfaceInterfacce ERC20 errateMedioAlta
33erc721-interfaceInterfacce ERC721 errateMedioAlta
34incorrect-equalityUguaglianze strette pericoloseMedioAlta
35locked-etherContratti che bloccano etherMedioAlta
36mapping-deletionEliminazione su mapping contenente una strutturaMedioAlta
37pyth-deprecated-functionsRileva funzioni Pyth deprecateMedioAlta
38pyth-unchecked-confidenceRileva quando il livello di confidenza di un prezzo Pyth non viene controllatoMedioAlta
39pyth-unchecked-publishtimeRileva quando il publishTime di un prezzo Pyth non viene controllatoMedioAlta
40shadowing-abstractShadowing di variabili di stato da contratti astrattiMedioAlta
41tautological-compareConfrontare una variabile con sé stessa restituisce sempre vero o falso, a seconda del confrontoMedioAlta
42tautologyTautologia o contraddizioneMedioAlta
43write-after-writeScrittura inutilizzataMedioAlta
44boolean-cstUso improprio di costante booleanaMedioMedia
45chronicle-unchecked-priceRileva quando il prezzo Chronicle non viene controllato.MedioMedia
46constant-function-asmFunzioni costanti che utilizzano codice assemblyMedioMedia
47constant-function-stateFunzioni costanti che modificano lo statoMedioMedia
48divide-before-multiplyOrdine impreciso delle operazioni aritmeticheMedioMedia
49gelato-unprotected-randomnessChiamata a _requestRandomness all'interno di una funzione non protettaMedioMedia
50out-of-order-retryableTransazioni riprovabili fuori ordineMedioMedia
51reentrancy-no-ethVulnerabilità di rientranza (senza furto di ether)MedioMedia
52reused-constructorCostruttore base riutilizzatoMedioMedia
53tx-originUso pericoloso di tx.originMedioMedia
54unchecked-lowlevelChiamate di basso livello non controllateMedioMedia
55unchecked-sendSend non controllatoMedioMedia
56uninitialized-localVariabili locali non inizializzateMedioMedia
57unused-returnValori di ritorno inutilizzatiMedioMedia
58chainlink-feed-registryRileva quando viene utilizzato il registro dei feed ChainlinkBassoAlta
59incorrect-modifierModificatori che possono restituire il valore predefinitoBassoAlta
60optimism-deprecationRileva quando viene utilizzato un predeploy o una funzione deprecati di Optimism.BassoAlta
61shadowing-builtinShadowing di simboli built-inBassoAlta
62shadowing-localShadowing di variabili localiBassoAlta
63uninitialized-fptr-cstChiamate a puntatori di funzione non inizializzati nei costruttoriBassoAlta
64variable-scopeVariabili locali utilizzate prima della loro dichiarazioneBassoAlta
65void-cstCostruttore chiamato non implementatoBassoAlta
66calls-loopChiamate multiple in un cicloBassoMedia
67events-accessEventi mancanti per il controllo degli accessiBassoMedia
68events-mathsEventi mancanti per l'aritmeticaBassoMedia
69incorrect-unaryEspressioni unarie pericoloseBassoMedia
70missing-zero-checkValidazione dell'indirizzo zero mancanteBassoMedia
71reentrancy-benignVulnerabilità di rientranza benigneBassoMedia
72reentrancy-eventsVulnerabilità di rientranza che portano a eventi fuori ordineBassoMedia
73return-bombUn chiamato di basso livello potrebbe consumare inaspettatamente tutto il gas del chiamante.BassoMedia
74timestampUso pericoloso di block.timestampBassoMedia
75assemblyUtilizzo di assemblyInformativoAlta
76assert-state-changeModifica dello stato in assertInformativoAlta
77boolean-equalConfronto con costante booleanaInformativoAlta
78cyclomatic-complexityRileva funzioni con complessità ciclomatica alta (> 11)InformativoAlta
79deprecated-standardsStandard Solidity deprecatiInformativoAlta
80erc20-indexedParametri di eventi ERC20 non indicizzatiInformativoAlta
81function-init-stateFunzione che inizializza variabili di statoInformativoAlta
82incorrect-using-forRileva l'utilizzo dell'istruzione using-for quando nessuna funzione di una data libreria corrisponde a un dato tipoInformativoAlta
83low-level-callsChiamate di basso livelloInformativoAlta
84missing-inheritanceEreditarietà mancanteInformativoAlta
85naming-conventionConformità alle convenzioni di denominazione di SolidityInformativoAlta
86pragmaSe vengono utilizzate direttive pragma diverseInformativoAlta
87redundant-statementsIstruzioni ridondantiInformativoAlta
88solc-versionVersione di Solidity errataInformativoAlta
89unimplemented-functionsFunzioni non implementateInformativoAlta
90unindexed-event-addressEventi con parametri di indirizzo ma nessun parametro indicizzatoInformativoAlta
91unused-stateVariabili di stato inutilizzateInformativoAlta
92costly-loopOperazioni costose in un cicloInformativoMedia
93dead-codeFunzioni che non vengono utilizzateInformativoMedia
94reentrancy-unlimited-gasVulnerabilità di rientranza tramite send e transferInformativoMedia
95too-many-digitsConformità alle best practice per la notazione numericaInformativoMedia
96cache-array-lengthRileva cicli for che utilizzano il membro length di qualche array di storage nella condizione del ciclo e non lo modificano.OttimizzazioneAlta
97constable-statesVariabili di stato che potrebbero essere dichiarate costantiOttimizzazioneAlta
98external-functionFunzione pubblica che potrebbe essere dichiarata esternaOttimizzazioneAlta
99immutable-statesVariabili di stato che potrebbero essere dichiarate immutabiliOttimizzazioneAlta
100var-read-using-thisIl contratto legge la propria variabile usando thisOttimizzazioneAlta
TitoloUtilizzoAutoriSedeCodice
ReJection: A AST-Based Reentrancy Vulnerability Detection MethodAnalisi basata su AST costruita sopra SlitherRui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia ChenCTCIS 19-
MPro: Combining Static and Symbolic Analysis for Scalable Testing of Smart ContractSfrutta le dipendenze dei dati tramite SlitherWilliam Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay GaneshISSRE 2019MPro
ETHPLOIT: From Fuzzing to Efficient Exploit Generation against Smart ContractsSfrutta le dipendenze dei dati tramite SlitherQingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi MaSANER 20-
Verification of Ethereum Smart Contracts: A Model Checking ApproachEsecuzione simbolica costruita sopra il CFG di SlitherTam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho QuanIJMLC 20-
Smart Contract RepairSi basa sui detector di vulnerabilità di SlitherXiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik RoychoudhuryTOSEM 20SCRepair
Demystifying Loops in Smart ContractsSfrutta le dipendenze dei dati tramite SlitherBen Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil DilligASE 20-
Trace-Based Dynamic Gas Estimation of Loops in Smart ContractsUsa il CFG di Slither per rilevare i loopChunmiao Li, Shijie Nie, Yang Cao, Yijun Yu, Zhenjiang HuIEEE Open J. Comput. Soc. 1 (2020)-
SAILFISH: Vetting Smart Contract State-Inconsistency Bugs in SecondsSi basa su SlithIR per costruire un grafo delle dipendenze di storagePriyanka Bose, Dipanjan Das, Yanju Chen, Yu Feng, Christopher Kruegel, and Giovanni VignaS&P 22Sailfish
SolType: Refinement Types for Arithmetic Overflow in SolidityUsa Slither come frontend per costruire un sistema di tipi per raffinamentoBryan Tan, Benjamin Mariano, Shuvendu K. Lahiri, Isil Dillig, Yu FengPOPL 22-
Do Not Rug on Me: Leveraging Machine Learning Techniques for Automated Scam DetectionUsa Slither per estrarre le caratteristiche dei token (mintabile, pausabile, ..)Mazorra, Bruno, Victor Adan, and Vanesa DazaMathematics 10.6 (2022)-
MANDO: Multi-Level Heterogeneous Graph Embeddings for Fine-Grained Detection of Smart Contract VulnerabilitiesUsa Slither per estrarre il CFG e il grafo delle chiamateHoang Nguyen, Nhat-Minh Nguyen, Chunyao Xie, Zahra Ahmadi, Daniel Kudendo, Thanh-Nam Doan and Lingxiao JiangIEEE 9th International Conference on Data Science and Advanced Analytics (DSAA, 2022)ge-sc
Automated Auditing of Price Gouging TOD Vulnerabilities in Smart ContractsUsa Slither per estrarre il CFG e le dipendenze dei datiSidi Mohamed Beillahi, Eric Keilty, Keerthi Nelaturu, Andreas Veneris, and Fan Long2022 IEEE International Conference on Blockchain and Cryptocurrency (ICBC)Smart-Contract-Repair
Modeling and Enforcing Access Control Policies for Smart ContractsEstende le dipendenze dei dati di SlitherJan-Philipp Toberg, Jonas Schiffl, Frederik Reiche, Bernhard Beckert, Robert Heinrich, Ralf ReussnerIEEE International Conference on Decentralized Applications and Infrastructures (DAPPS), 2022SolidityAccessControlEnforcement
Smart Contract Vulnerability Detection Based on Deep Learning and Multimodal Decision FusionUsa Slither per estrarre il CFGWeichu Deng, Huanchun Wei, Teng Huang, Cong Cao, Yun Peng, and Xuan HuSensors 2023, 23, 7246-
Semantic-enriched Code Knowledge Graph to Reveal Unknowns in Smart Contract Code ReuseUsa Slither per estrarre le caratteristiche del codice (CFG, funzione, tipi di parametri, ..)Qing Huang, Dianshu Liao, Zhenchang Xing, Zhengkang Zuo, Changjing Wang, Xin XiaACM Transactions on Software Engineering and Methodology, 2023-
Smart Contract Parallel Execution with Fine-Grained State AccessesUsa Slither per costruire grafi degli accessi allo statoXiaodong Qi, Jiao Jiao, Yi LiInternational Conference on Distributed Computing Systems (ICDCS), 2023-
Bad Apples: Understanding the Centralized Security Risks in Decentralized EcosystemsImplementa un'analisi interna basata su SlitherKailun Yan , Jilian Zhang , Xiangyu Liu , Wenrui Diao , Shanqing GuoACM Web Conference April 2023-
Identifying Vulnerabilities in Smart Contracts using Interval AnalysisCrea 4 detector basati su SlitherŞtefan-Claudiu Susan, Andrei ArusoaieFROM 2023-
Storage State Analysis and Extraction of Ethereum Blockchain Smart Contracts (nessun PDF in accesso aperto)Si basa sul CFG e sull'AST di SlitherMaha Ayub , Tania Saleem , Muhammad Janjua , Talha AhmadTOSEM 2023SmartMuv