
slither v0.11.6
Analisador Estático para Solidity e Vyper
Slither, o analisador estático de contratos inteligentes
Junte-se ao Slack do Empire Hacking
- 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
- Detectores
- Relatórios
- Ferramentas
- Documentação da API
- Obtendo Ajuda
- FAQ
- Licença
- Publicações
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 .
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
Para atualizar:```console
uv tool upgrade slither-analyzer
Usando Pip```console
python3 -m pip install slither-analyzer
Para atualizar:```console
python3 -m pip install --upgrade slither-analyzer
Usando Brew```console
brew install slither-analyzer
### 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
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_TAGpela tag real) ```YAML- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- id: slither
- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- 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/(substituaORG,REPO,COMMIT)
Detectores