
Analizador estático para Solidity y Vyper
Ú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.
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
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.
uv es un gestor de paquetes de Python rápido que es 10-100x más rápido que pip.```console
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install slither-analyzer
uvx --from slither-analyzer slither
Para actualizar:```console
uv tool upgrade slither-analyzer
python3 -m pip install slither-analyzer
Para actualizar:```console
python3 -m pip install --upgrade slither-analyzer
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.
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
$GIT_TAG con la etiqueta real) ```YAML
slither [objetivo] --checklist.slither [objetivo] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/ (reemplace ORG, REPO, COMMIT)Para más información, consulte
human-summary: Imprime un resumen legible por humanos de los contratosinheritance-graph: Exporta el gráfico de herencia de cada contrato a un archivo dotcontract-summary: Imprime un resumen de los contratosloc: Cuenta el número total de líneas de código (LOC), líneas de código fuente (SLOC) y líneas de código de comentario (CLOC) encontradas en archivos fuente (SRC), dependencias (DEP) y archivos de prueba (TEST).entry-points: Imprime todas las funciones de punto de entrada que cambian el estado y sus variables de los contratoscall-graph: Exportar el grafo de llamadas de los contratos a un archivo dotcfg: Exportar el CFG de cada funciónfunction-summary: Imprimir un resumen de las funcionesvars-and-auth: Imprimir las variables de estado escritas y la autorización de las funcionesnot-pausable: Imprimir funciones que no usan el modificador whenNotPaused.Para ejecutar un printer, use --print y una lista separada por comas de printers.
Consulte la documentación de Printer para obtener la lista completa.
slither-check-upgradeability: Revisar la actualización basada en delegatecallslither-prop: Generación automática de pruebas unitarias y propiedadesslither-flat: Aplanar una base de códigoslither-check-erc: Verificar la conformidad con los ERCslither-read-storage: Leer valores de almacenamiento de contratosslither-interface: Generar una interfaz para un contratoConsulte la documentación de Herramientas para herramientas adicionales.
Contáctenos para obtener ayuda en la creación de herramientas personalizadas.
La documentación sobre los componentes internos de Slither está disponible aquí.
No dude en pasar por nuestro canal de Slack (#ethereum) para obtener ayuda sobre el uso o la extensión de Slither.
La documentación de Printer describe la información que Slither es capaz de visualizar para cada contrato.
La documentación de Detector describe cómo escribir un nuevo análisis de vulnerabilidades.
La documentación de la API describe los métodos y objetos disponibles para análisis personalizados.
La documentación de SlithIR describe la representación intermedia SlithIR.
¿Cómo excluyo mocks o pruebas?
¿Cómo soluciono el error "archivo desconocido" o problemas de compilación?
slither contract.sol fallará.
En su lugar, use slither . en el directorio padre de contracts/ (debería ver contracts/ cuando ejecute ls).
Si tiene una carpeta node_modules/, debe estar en el mismo directorio que contracts/. Para verificar que este problema está relacionado con Slither,
ejecute el comando de compilación del framework que está utilizando, por ejemplo npx hardhat compile. Eso debe funcionar correctamente;
de lo contrario, el motor de compilación de Slither, crytic-compile, no puede generar el AST.Slither está licenciado y distribuido bajo la licencia AGPLv3. Contáctenos si busca una excepción a los términos.
Si está utilizando Slither en un trabajo académico, considere postularse al Premio de Investigación Crytic de $10k.
| Núm | Detector | Qué Detecta | Impacto | Confianza |
|---|
| Título | Uso | Autores | Lugar | Código |
|---|
| ReJection: Un Método de Detección de Vulnerabilidades de Reentrancia basado en AST | Análisis basado en AST construido sobre Slither | Rui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia Chen | CTCIS 19 | - |
| MPro: Combinando Análisis Estático y Simbólico para Pruebas Escalables de Contratos Inteligentes | Aprovechar la dependencia de datos a través de Slither | William Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay Ganesh | ISSRE 2019 | MPro |
| ETHPLOIT: Desde Fuzzing hasta Generación Eficiente de Exploits contra Contratos Inteligentes | Aprovechar la dependencia de datos a través de Slither | Qingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi Ma | SANER 20 | - |
| Verificación de Contratos Inteligentes Ethereum: Un Enfoque de Model Checking | Ejecución simbólica construida sobre el CFG de Slither | Tam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho Quan | IJMLC 20 | - |
| Reparación de Contratos Inteligentes | Depender de los detectores de vulnerabilidades de Slither | Xiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik Roychoudhury | TOSEM 20 | SCRepair |
| Desmitificando Bucles en Contratos Inteligentes | Aprovechar la dependencia de datos a través de Slither | Ben Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil Dillig | ASE 20 | - |
| Estimación Dinámica de Gas Basada en Trazas de Bucles en Contratos Inteligentes | Usar el CFG de Slither para detectar bucles | Chunmiao Li, Shijie Nie, Yang Cao, Yijun Yu, Zhenjiang Hu | IEEE Open J. Comput. Soc. 1 (2020) | - |
| SAILFISH: Detectando Vulnerabilidades de Inconsistencia de Estado en Contratos Inteligentes en Segundos | Depender de SlithIR para construir un grafo de dependencia de almacenamiento | Priyanka Bose, Dipanjan Das, Yanju Chen, Yu Feng, Christopher Kruegel, and Giovanni Vigna | S&P 22 | Sailfish |
| SolType: Tipos de Refinamiento para Desbordamiento Aritmético en Solidity | Usar Slither como frontend para construir un sistema de tipos de refinamiento | Bryan Tan, Benjamin Mariano, Shuvendu K. Lahiri, Isil Dillig, Yu Feng | POPL 22 | - |
| No Me Estafes: Aprovechando Técnicas de Aprendizaje Automático para la Detección Automatizada de Estafas | Usar Slither para extraer características de tokens (minteable, pausable, ..) | Mazorra, Bruno, Victor Adan, and Vanesa Daza | Mathematics 10.6 (2022) | - |
| MANDO: Incrustaciones de Grafos Heterogéneos Multinivel para la Detección Fina de Vulnerabilidades en Contratos Inteligentes | Usar Slither para extraer el CFG y el grafo de llamadas | Hoang Nguyen, Nhat-Minh Nguyen, Chunyao Xie, Zahra Ahmadi, Daniel Kudendo, Thanh-Nam Doan and Lingxiao Jiang | IEEE 9th International Conference on Data Science and Advanced Analytics (DSAA, 2022) | ge-sc |
| Auditoría Automatizada de Vulnerabilidades TOD de Sobreprecio en Contratos Inteligentes | Usar Slither para extraer el CFG y las dependencias de datos | Sidi Mohamed Beillahi, Eric Keilty, Keerthi Nelaturu, Andreas Veneris, and Fan Long | 2022 IEEE International Conference on Blockchain and Cryptocurrency (ICBC) | Smart-Contract-Repair |
| Modelado y Aplicación de Políticas de Control de Acceso para Contratos Inteligentes | Extender las dependencias de datos de Slither | Jan-Philipp Toberg, Jonas Schiffl, Frederik Reiche, Bernhard Beckert, Robert Heinrich, Ralf Reussner | IEEE International Conference on Decentralized Applications and Infrastructures (DAPPS), 2022 | SolidityAccessControlEnforcement |
| Detección de Vulnerabilidades en Contratos Inteligentes Basada en Aprendizaje Profundo y Fusión de Decisiones Multimodales | Usar Slither para extraer el CFG | Weichu Deng, Huanchun Wei, Teng Huang, Cong Cao, Yun Peng, and Xuan Hu | Sensors 2023, 23, 7246 | - |
| Grafo de Conocimiento de Código Enriquecido Semánticamente para Revelar Desconocidos en la Reutilización de Código de Contratos Inteligentes | Usar Slither para extraer las características del código (CFG, función, tipos de parámetros, ..) | Qing Huang, Dianshu Liao, Zhenchang Xing, Zhengkang Zuo, Changjing Wang, Xin Xia | ACM Transactions on Software Engineering and Methodology, 2023 | - |
| Ejecución Paralela de Contratos Inteligentes con Accesos Finos al Estado | Usar Slither para construir grafos de acceso al estado | Xiaodong Qi, Jiao Jiao, Yi Li | International Conference on Distributed Computing Systems (ICDCS), 2023 | - |
| Manzanas Podridas: Comprendiendo los Riesgos de Seguridad Centralizados en Ecosistemas Descentralizados | Implementar un análisis interno sobre Slither | Kailun Yan , Jilian Zhang , Xiangyu Liu , Wenrui Diao , Shanqing Guo | ACM Web Conference April 2023 | - |
| Identificación de Vulnerabilidades en Contratos Inteligentes usando Análisis de Intervalos | Crear 4 detectores sobre Slither | Ştefan-Claudiu Susan, Andrei Arusoaie | FROM 2023 | - |
| Análisis y Extracción del Estado de Almacenamiento de Contratos Inteligentes en la Blockchain de Ethereum (sin PDF en acceso abierto) | Depender del CFG y AST de Slither | Maha Ayub , Tania Saleem , Muhammad Janjua , Talha Ahmad | TOSEM 2023 | SmartMuv |