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.1k151 mese 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.

Scarica lo strumento
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

    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 annidate

    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

    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 Seconds

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

    Alto
    Alta
    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
    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 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