Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
slither — Analisador Estático para Solidity e Vyper | Kitploit
Ferramentas/GitHubGitHub/crytic/slither
Análise EstáticaAnálise de VulnerabilidadesAnálise de Código
GitHubcrytic/slither

slither

Analisador Estático para Solidity e Vyper

Ver RepositórioSite
6.3k1.1khá 15 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Slither, o analisador estático de contratos inteligentes

Slither Static Analysis Framework Logo

Build Status PyPI Slither - Read the Docs Slither - Wiki

Junte-se ao Slack do Empire Hacking

Slack Status

- Discussões e Suporte

Slither é um framework de análise estática para Solidity e Vyper escrito em Python3. Ele executa um conjunto de detectores de vulnerabilidades, exibe informações visuais sobre detalhes dos contratos e fornece uma API para escrever análises personalizadas facilmente. Slither permite que desenvolvedores encontrem vulnerabilidades, melhorem sua compreensão do código e criem protótipos rapidamente de análises personalizadas.

  • Funcionalidades
  • Uso
  • Como instalar
    • Usando uv (Recomendado)
    • Usando Pip
    • Usando Git
    • Usando Docker
    • Integração
  • Detectores
  • Relatórios
    • Relatórios de Revisão Rápida
    • Relatórios de Revisão Detalhada
  • Ferramentas
  • Documentação da API
  • Obtendo Ajuda
  • FAQ
  • Licença
  • Publicações
    • Publicação da Trail of Bits
    • Publicações externas

Funcionalidades

  • Detecta código Solidity vulnerável com baixas taxas de falsos positivos (veja a lista de troféus)
  • Identifica onde a condição de erro ocorre no código-fonte
  • Integra-se facilmente em integração contínua e builds Hardhat/Foundry
  • Os 'printers' integrados relatam rapidamente informações cruciais do contrato
  • API de detectores para escrever análises personalizadas em Python
  • Capacidade de analisar contratos escritos com Solidity >= 0.4
  • Representação intermediária (SlithIR) possibilita análises simples e de alta precisão
  • Analisa corretamente 99.9% de todo o código Solidity público
  • Tempo médio de execução de menos de 1 segundo por contrato
  • Integra-se com a varredura de código do Github em CI
  • Suporte para contratos inteligentes Vyper

Uso

Execute o Slither em uma aplicação Hardhat/Foundry/Dapp/Brownie:```console slither .

root@kitploit:~
Esta é a opção preferida se o seu projeto possui dependências, já que o Slither depende da estrutura de compilação subjacente para compilar o código-fonte.

No entanto, você pode executar o Slither em um único arquivo que não importa dependências:```console
slither tests/uninitialized.sol

Como instalar

Nota O Slither requer Python 3.10+. Se você não for usar um dos frameworks de compilação suportados, precisará do solc, o compilador Solidity; recomendamos usar o solc-select para alternar convenientemente entre versões do solc.

Usando uv (Recomendado)

O uv é um gerenciador de pacotes Python rápido, 10 a 100 vezes mais rápido que o 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:~
Para atualizar:```console
uv tool upgrade slither-analyzer

Usando Pip```console

python3 -m pip install slither-analyzer

root@kitploit:~
Para atualizar:```console
python3 -m pip install --upgrade slither-analyzer

Usando Brew```console

brew install slither-analyzer

root@kitploit:~
### Usando Git (Desenvolvimento)```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>

A flag -e instala em modo editável, o que significa que as alterações no código-fonte são refletidas imediatamente sem necessidade de reinstalação.

Usando Docker

Use a imagem docker eth-security-toolbox. Ela inclui todas as nossas ferramentas de segurança e todas as principais versões do Solidity em uma única imagem. /home/share será montado em /share no contêiner.```bash docker pull trailofbits/eth-security-toolbox

root@kitploit:~
Para compartilhar um diretório no contêiner:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox

Integração

  • Para integração com GitHub action, use slither-action.
  • Para integração com pre-commit, use (substitua $GIT_TAG pela tag real) ```YAML
    • repo: https://github.com/crytic/slither rev: $GIT_TAG hooks:
      • id: slither
    root@kitploit:~
  • Para gerar um relatório Markdown, use slither [target] --checklist.
  • Para gerar um Markdown com realce de código fonte do GitHub, use slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/ (substitua ORG, REPO, COMMIT)

Detectores

Para mais informações, veja

  • A Documentação dos Detectores para detalhes sobre cada detector
  • A Seleção de Detecção para executar apenas detectores selecionados. Por padrão, todos os detectores são executados.
  • O Modo de Triagem para filtrar resultados individuais

Impressoras

Impressoras de Revisão Rápida

  • human-summary: Imprime um resumo legível por humanos dos contratos
  • inheritance-graph: Exporta o gráfico de herança de cada contrato para um arquivo dot
  • contract-summary: Imprime um resumo dos contratos
  • loc: Conta o número total de linhas de código (LOC), linhas de código fonte (SLOC) e linhas de código de comentário (CLOC) encontradas em arquivos fonte (SRC), dependências (DEP) e arquivos de teste (TEST).
  • entry-points: Imprime todas as funções de ponto de entrada que alteram estado e suas variáveis dos contratos

Impressoras de Revisão Detalhada* call-graph: Exportar o grafo de chamadas dos contratos para um arquivo dot

  • cfg: Exportar o CFG de cada função
  • function-summary: Imprimir um resumo das funções
  • vars-and-auth: Imprimir as variáveis de estado escritas e a autorização das funções
  • not-pausable: Imprimir funções que não usam o modificador whenNotPaused.

Para executar um printer, use --print e uma lista separada por vírgulas de printers.

Consulte a Documentação do Printer para obter as listas completas.

Ferramentas

  • slither-check-upgradeability: Revisar a atualizabilidade baseada em delegatecall
  • slither-prop: Geração automática de testes unitários e propriedades
  • slither-flat: Achatar uma base de código
  • slither-check-erc: Verificar a conformidade com os ERCs
  • slither-read-storage: Ler valores de armazenamento de contratos
  • slither-interface: Gerar uma interface para um contrato

Consulte a Documentação de Ferramentas para ferramentas adicionais.

Entre em contato conosco para obter ajuda na construção de ferramentas personalizadas.

Documentação da API

A documentação sobre os detalhes internos do Slither está disponível aqui.

Obtendo Ajuda

Sinta-se à vontade para passar em nosso canal no Slack (#ethereum) para obter ajuda no uso ou na extensão do Slither.

  • A Documentação do Printer descreve as informações que o Slither é capaz de visualizar para cada contrato.

  • A Documentação do Detector descreve como escrever uma nova análise de vulnerabilidade.

  • A Documentação da API descreve os métodos e objetos disponíveis para análises personalizadas.

  • A Documentação do SlithIR descreve a representação intermediária SlithIR.

Perguntas Frequentes

Como excluir mocks ou testes?

  • Consulte nossa documentação sobre filtragem de caminho.

Como corrigir "arquivo desconhecido" ou problemas de compilação?

  • Como o slither requer a AST do solc, todas as dependências devem estar disponíveis. Se um contrato tiver dependências, slither contract.sol falhará. Em vez disso, use slither . no diretório pai de contracts/ (você deve ver contracts/ ao executar ls). Se você tiver uma pasta node_modules/, ela deve estar no mesmo diretório que contracts/. Para verificar se esse problema está relacionado ao slither, execute o comando de compilação do framework que você está usando, por exemplo, npx hardhat compile. Isso deve funcionar com sucesso; caso contrário, o motor de compilação do slither, crytic-compile, não conseguirá gerar a AST.

Licença

O Slither é licenciado e distribuído sob a licença AGPLv3. Entre em contato conosco se estiver procurando uma exceção aos termos.

Publicações

Publicação da Trail of Bits

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

Publicações externas

Se você estiver usando o Slither em um trabalho acadêmico, considere se candidatar ao Prêmio de Pesquisa Crytic de $10k.

Baixar ferramenta
NumDetectorO que DetectaImpactoConfiança
1abiencoderv2-arrayArray abiencoderv2 de armazenamentoAltoAlta
2arbitrary-send-erc20transferFrom usa from arbitrárioAltoAlta
3array-by-referenceModificando array de armazenamento por valorAltoAlta
4encode-packed-collisionColisão de ABI encodePackedAltoAlta
5incorrect-shiftA ordem dos parâmetros em uma instrução de shift está incorreta.AltoAlta
6multiple-constructorsEsquemas de múltiplos construtoresAltoAlta
7name-reusedNome de contrato reutilizadoAltoAlta
8protected-varsVariáveis não protegidas detectadasAltoAlta
9public-mappings-nestedMapeamentos públicos com variáveis aninhadasAltoAlta
10rtloCaractere de controle Right-To-Left-Override é usadoAltoAlta
11shadowing-stateSombra de variáveis de estadoAltoAlta
12suicidalFunções que permitem a qualquer um destruir o contratoAltoAlta
13uninitialized-stateVariáveis de estado não inicializadasAltoAlta
14uninitialized-storageVariáveis de armazenamento não inicializadasAltoAlta
15unprotected-upgradeContrato atualizável não protegidoAltoAlta
16arbitrary-send-erc20-permittransferFrom usa from arbitrário com permitAltoMédia
17arbitrary-send-ethFunções que enviam Ether para destinos arbitráriosAltoMédia
18controlled-array-lengthAtribuição de comprimento de array contaminadoAltoMédia
19controlled-delegatecallDestino de delegatecall controladoAltoMédia
20delegatecall-loopFunções pagáveis que usam delegatecall dentro de um loopAltoMédia
21incorrect-expExponenciação incorretaAltoMédia
22incorrect-returnSe um return for usado incorretamente no modo assembly.AltoMédia
23msg-value-loopmsg.value dentro de um loopAltoMédia
24reentrancy-ethVulnerabilidades de reentrância (roubo de ethers)AltoMédia
25reentrancy-balanceVulnerabilidades de reentrância que levam a verificações de saldo desatualizadasAltoMédia
26return-leaveSe um return é usado em vez de um leave.AltoMédia
27storage-arrayBug do compilador de array de inteiros com sinal em armazenamentoAltoMédia
28unchecked-transferTransferência de tokens não verificadaAltoMédia
29weak-prngPRNG fracoAltoMédia
30domain-separator-collisionDetecta tokens ERC20 que possuem uma função cuja assinatura colide com DOMAIN_SEPARATOR() do EIP-2612MédioAlta
31enum-conversionDetecta conversão perigosa de enumMédioAlta
32erc20-interfaceInterfaces ERC20 incorretasMédioAlta
33erc721-interfaceInterfaces ERC721 incorretasMédioAlta
34incorrect-equalityIgualdades estritas perigosasMédioAlta
35locked-etherContratos que bloqueiam etherMédioAlta
36mapping-deletionExclusão em mapeamento contendo uma estruturaMédioAlta
37pyth-deprecated-functionsDetecta funções obsoletas do PythMédioAlta
38pyth-unchecked-confidenceDetecta quando o nível de confiança de um preço Pyth não é verificadoMédioAlta
39pyth-unchecked-publishtimeDetecta quando o publishTime de um preço Pyth não é verificadoMédioAlta
40shadowing-abstractSombra de variáveis de estado de contratos abstratosMédioAlta
41tautological-compareComparar uma variável consigo mesma sempre retorna true ou false, dependendo da comparaçãoMédioAlta
42tautologyTautologia ou contradiçãoMédioAlta
43write-after-writeEscrita não utilizadaMédioAlta
44boolean-cstUso incorreto de constante booleanaMédioMédia
45chronicle-unchecked-priceDetecta quando o preço Chronicle não é verificado.MédioMédia
46constant-function-asmFunções constantes usando código assemblyMédioMédia
47constant-function-stateFunções constantes alterando o estadoMédioMédia
48divide-before-multiplyOrdem imprecisa de operações aritméticasMédioMédia
49gelato-unprotected-randomnessChamada para _requestRandomness dentro de uma função não protegidaMédioMédia
50out-of-order-retryableTransações retryable fora de ordemMédioMédia
51reentrancy-no-ethVulnerabilidades de reentrância (sem roubo de ethers)MédioMédia
52reused-constructorConstrutor base reutilizadoMédioMédia
53tx-originUso perigoso de tx.originMédioMédia
54unchecked-lowlevelChamadas de baixo nível não verificadasMédioMédia
55unchecked-sendSend não verificadoMédioMédia
56uninitialized-localVariáveis locais não inicializadasMédioMédia
57unused-returnValores de retorno não utilizadosMédioMédia
58chainlink-feed-registryDetecta quando o registro de feed do Chainlink é usadoBaixoAlta
59incorrect-modifierModificadores que podem retornar o valor padrãoBaixoAlta
60optimism-deprecationDetecta quando um predeploy ou função obsoleta do Optimism é usado.BaixoAlta
61shadowing-builtinSombra de símbolo embutidoBaixoAlta
62shadowing-localSombra de variáveis locaisBaixoAlta
63uninitialized-fptr-cstChamadas de ponteiro de função não inicializadas em construtoresBaixoAlta
64variable-scopeVariáveis locais usadas antes de sua declaraçãoBaixoAlta
65void-cstConstrutor chamado não implementadoBaixoAlta
66calls-loopMúltiplas chamadas em um loopBaixoMédia
67events-accessEventos de controle de acesso ausentesBaixoMédia
68events-mathsEventos aritméticos ausentesBaixoMédia
69incorrect-unaryExpressões unárias perigosasBaixoMédia
70missing-zero-checkValidação de endereço zero ausenteBaixoMédia
71reentrancy-benignVulnerabilidades de reentrância benignasBaixoMédia
72reentrancy-eventsVulnerabilidades de reentrância que levam a Eventos fora de ordemBaixoMédia
73return-bombUma função chamada de baixo nível pode consumir todo o gas do chamador inesperadamente.BaixoMédia
74timestampUso perigoso de block.timestampBaixoMédia
75assemblyUso de assemblyInformativoAlta
76assert-state-changeMudança de estado em assertInformativoAlta
77boolean-equalComparação com constante booleanaInformativoAlta
78cyclomatic-complexityDetecta funções com complexidade ciclomática alta (> 11)InformativoAlta
79deprecated-standardsPadrões Solidity obsoletosInformativoAlta
80erc20-indexedParâmetros de evento ERC20 não indexadosInformativoAlta
81function-init-stateFunção inicializando variáveis de estadoInformativoAlta
82incorrect-using-forDetecta uso de using-for quando nenhuma função de uma biblioteca corresponde a um tipoInformativoAlta
83low-level-callsChamadas de baixo nívelInformativoAlta
84missing-inheritanceHerança ausenteInformativoAlta
85naming-conventionConformidade com convenções de nomenclatura SolidityInformativoAlta
86pragmaSe diferentes diretivas pragma são usadasInformativoAlta
87redundant-statementsDeclarações redundantesInformativoAlta
88solc-versionVersão Solidity incorretaInformativoAlta
89unimplemented-functionsFunções não implementadasInformativoAlta
90unindexed-event-addressEventos com parâmetros de endereço, mas nenhum parâmetro indexadoInformativoAlta
91unused-stateVariáveis de estado não utilizadasInformativoAlta
92costly-loopOperações custosas em um loopInformativoMédia
93dead-codeFunções que não são usadasInformativoMédia
94reentrancy-unlimited-gasVulnerabilidades de reentrância através de send e transferInformativoMédia
95too-many-digitsConformidade com boas práticas de notação numéricaInformativoMédia
96cache-array-lengthDetecta loops for que usam o membro length de algum array de armazenamento em sua condição de loop e não o modificam.OtimizaçãoAlta
97constable-statesVariáveis de estado que poderiam ser declaradas constantesOtimizaçãoAlta
98external-functionFunção pública que poderia ser declarada externaOtimizaçãoAlta
99immutable-statesVariáveis de estado que poderiam ser declaradas imutáveisOtimizaçãoAlta
100var-read-using-thisContrato lê sua própria variável usando thisOtimizaçãoAlta
TítuloUsoAutoresEventoCódigo
ReJection: A AST-Based Reentrancy Vulnerability Detection MethodAnálise baseada em AST construída sobre o SlitherRui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia ChenCTCIS 19-
MPro: Combining Static and Symbolic Analysis for Scalable Testing of Smart ContractAproveitar a dependência de dados através do SlitherWilliam Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay GaneshISSRE 2019MPro
ETHPLOIT: From Fuzzing to Efficient Exploit Generation against Smart ContractsAproveitar a dependência de dados através do SlitherQingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi MaSANER 20-
Verification of Ethereum Smart Contracts: A Model Checking ApproachExecução simbólica construída sobre o CFG do SlitherTam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho QuanIJMLC 20-
Smart Contract RepairUtilizar os detectores de vulnerabilidades do SlitherXiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik RoychoudhuryTOSEM 20SCRepair
Demystifying Loops in Smart ContractsAproveitar a dependência de dados através do SlitherBen Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil DilligASE 20-
Trace-Based Dynamic Gas Estimation of Loops in Smart ContractsUsar o CFG do Slither para detectar loopsChunmiao Li, Shijie Nie, Yang Cao, Yijun Yu, Zhenjiang HuIEEE Open J. Comput. Soc. 1 (2020)-
SAILFISH: Vetting Smart Contract State-Inconsistency Bugs in SecondsUtilizar o SlithIR para construir um gráfico de dependência de armazenamentoPriyanka Bose, Dipanjan Das, Yanju Chen, Yu Feng, Christopher Kruegel, and Giovanni VignaS&P 22Sailfish
SolType: Refinement Types for Arithmetic Overflow in SolidityUsar o Slither como frontend para construir um sistema de tipos de refinamentoBryan Tan, Benjamin Mariano, Shuvendu K. Lahiri, Isil Dillig, Yu FengPOPL 22-
Do Not Rug on Me: Leveraging Machine Learning Techniques for Automated Scam DetectionUsar o Slither para extrair características dos tokens (mintable, pausable, ..)Mazorra, Bruno, Victor Adan, and Vanesa DazaMathematics 10.6 (2022)-
MANDO: Multi-Level Heterogeneous Graph Embeddings for Fine-Grained Detection of Smart Contract VulnerabilitiesUsar o Slither para extrair o CFG e o grafo de chamadasHoang 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 ContractsUsar o Slither para extrair o CFG e dependências de dadosSidi 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 ContractsEstender as dependências de dados do 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 FusionUsar o Slither para extrair o 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 ReuseUsar o Slither para extrair as características do código (CFG, função, tipos de parâmetros, ..)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 AccessesUsar o Slither para construir gráficos de acesso a estadoXiaodong Qi, Jiao Jiao, Yi LiInternational Conference on Distributed Computing Systems (ICDCS), 2023-
Bad Apples: Understanding the Centralized Security Risks in Decentralized EcosystemsImplementar uma análise interna sobre o SlitherKailun Yan , Jilian Zhang , Xiangyu Liu , Wenrui Diao , Shanqing GuoACM Web Conference April 2023-
Identifying Vulnerabilities in Smart Contracts using Interval AnalysisCriar 4 detectores sobre o SlitherŞtefan-Claudiu Susan, Andrei ArusoaieFROM 2023-
Storage State Analysis and Extraction of Ethereum Blockchain Smart Contracts (sem PDF em acesso aberto)Utilizar o CFG e a AST do SlitherMaha Ayub , Tania Saleem , Muhammad Janjua , Talha AhmadTOSEM 2023SmartMuv