
slither v0.11.6
Analizador estático para Solidity y Vyper
Slither, el analizador estático de contratos inteligentes
Únete al Slack de Empire Hacking
- Discusiones y Soporte
Slither es un framework de análisis estático para Solide y Vyper escrito en Python3. Ejecuta un conjunto de detectores de vulnerabilidades, imprime información visual sobre los detalles del contrato y proporciona una API para escribir fácilmente análisis personalizados. Slither permite a los desarrolladores encontrar vulnerabilidades, mejorar su comprensión del código y prototipar rápidamente análisis personalizados.
- Características
- Uso
- Cómo instalar
- Detectores
- Impresoras
- Herramientas
- Documentación de la API
- Obtener Ayuda
- Preguntas Frecuentes
- Licencia
- Publicaciones
Características
- Detecta código Solidity vulnerable con bajos falsos positivos (ver la lista de trofeos)
- Identifica dónde ocurre la condición de error en el código fuente
- Se integra fácilmente en la integración continua y en compilaciones de Hardhat/Foundry
- 'Impresoras' integradas que reportan rápidamente información crucial del contrato
- API de detectores para escribir análisis personalizados en Python
- Capacidad de analizar contratos escritos con Solidity >= 0.4
- Representación intermedia (SlithIR) permite análisis simples y de alta precisión
- Analiza correctamente el 99.9% de todo el código Solidity público
- Tiempo de ejecución promedio de menos de 1 segundo por contrato
- Se integra con el escaneo de código de Github en CI
- Soporte para contratos inteligentes Vyper
Uso
Ejecuta Slither en una aplicación Hardhat/Foundry/Dapp/Brownie:```console slither .
Esta es la opción preferida si tu proyecto tiene dependencias, ya que Slither se basa en el marco de compilación subyacente para compilar el código fuente.
Sin embargo, puedes ejecutar Slither en un solo archivo que no importe dependencias:```console
slither tests/uninitialized.sol
Cómo instalar
Nota Slither requiere Python 3.10+. Si no vas a usar uno de los frameworks de compilación compatibles, necesitas solc, el compilador de Solidity; recomendamos usar solc-select para cambiar convenientemente entre versiones de solc.
Usando uv (Recomendado)
uv es un gestor de paquetes de Python rápido que es 10-100x más rápido que 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 actualizar:```console
uv tool upgrade slither-analyzer
Usando Pip```console
python3 -m pip install slither-analyzer
Para actualizar:```console
python3 -m pip install --upgrade slither-analyzer
Usando Brew```console
brew install slither-analyzer
### Usando Git (Desarrollo)```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>
The -e flag installs in editable mode, meaning changes to the source code are immediately reflected without reinstalling.
Usando Docker
Use la imagen docker eth-security-toolbox. Incluye todas nuestras herramientas de seguridad y todas las versiones principales de Solidity en una sola imagen. /home/share se montará en /share dentro del contenedor.```bash
docker pull trailofbits/eth-security-toolbox
Para compartir un directorio en el contenedor:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
Integración
- Para integración de GitHub Action, usa slither-action.
- Para integración de pre-commit, usa (reemplaza
$GIT_TAGcon la etiqueta 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 generar un informe en Markdown, use
slither [objetivo] --checklist. - Para generar un Markdown con resaltado de código fuente de GitHub, use
slither [objetivo] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/(reemplaceORG,REPO,COMMIT)
Detectores