Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
slither — Analizador estático para Solidity y Vyper | Kitploit
Herramientas/GitHubGitHub/crytic/slither
Análisis EstáticoAnálisis de VulnerabilidadesAnálisis de Código
GitHubcrytic/slither

slither

Analizador estático para Solidity y Vyper

Ver RepositorioSitio web
6.3k1.1k11hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Slither, el analizador estático de contratos inteligentes

Slither Static Analysis Framework Logo

Build Status PyPI Slither - Read the Docs Slither - Wiki

Únete al Slack de Empire Hacking

Slack Status

- 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.

Descargar herramienta
  • Características
  • Uso
  • Cómo instalar
    • Usando uv (Recomendado)
    • Usando Pip
    • Usando Git
    • Usando Docker
    • Integración
  • Detectores
  • Impresoras
    • Impresoras de Revisión Rápida
    • Impresoras de Revisión en Profundidad
  • Herramientas
  • Documentación de la API
  • Obtener Ayuda
  • Preguntas Frecuentes
  • Licencia
  • Publicaciones
    • Publicación de Trail of Bits
    • Publicaciones externas
  • 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 .

    root@kitploit:~
    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

    root@kitploit:~
    Para actualizar:```console
    uv tool upgrade slither-analyzer
    

    Usando Pip```console

    python3 -m pip install slither-analyzer

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

    Usando Brew```console

    brew install slither-analyzer

    root@kitploit:~
    ### 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

    root@kitploit:~
    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_TAG con la etiqueta real) ```YAML
      • repo: https://github.com/crytic/slither rev: $GIT_TAG hooks:
        • id: slither
      root@kitploit:~
    • 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/ (reemplace ORG, REPO, COMMIT)

    Detectores

    NúmDetectorQué DetectaImpactoConfianza
    1abiencoderv2-arrayArray abiencoderv2 de almacenamientoAltoAlta
    2arbitrary-send-erc20transferFrom usa from arbitrarioAltoAlta
    3array-by-referenceModificar array de almacenamiento por valorAltoAlta
    4encode-packed-collisionColisión de ABI encodePackedAltoAlta
    5incorrect-shiftEl orden de los parámetros en una instrucción de desplazamiento es incorrecto.AltoAlta
    6multiple-constructorsMúltiples esquemas de constructorAltoAlta
    7name-reusedNombre de contrato reutilizadoAltoAlta
    8protected-varsVariables no protegidas detectadasAltoAlta
    9public-mappings-nestedMapeos públicos con variables anidadas

    Para más información, consulte

    • La Documentación de Detectores para detalles sobre cada detector
    • La Selección de Detección para ejecutar solo los detectores seleccionados. Por defecto, se ejecutan todos los detectores.
    • El Modo de Triaje para filtrar resultados individuales

    Impresoras

    Impresoras de Revisión Rápida

    • human-summary: Imprime un resumen legible por humanos de los contratos
    • inheritance-graph: Exporta el gráfico de herencia de cada contrato a un archivo dot
    • contract-summary: Imprime un resumen de los contratos
    • loc: 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 contratos

    Impresoras de Revisión en Profundidad* call-graph: Exportar el grafo de llamadas de los contratos a un archivo dot

    • cfg: Exportar el CFG de cada función
    • function-summary: Imprimir un resumen de las funciones
    • vars-and-auth: Imprimir las variables de estado escritas y la autorización de las funciones
    • not-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.

    Herramientas

    • slither-check-upgradeability: Revisar la actualización basada en delegatecall
    • slither-prop: Generación automática de pruebas unitarias y propiedades
    • slither-flat: Aplanar una base de código
    • slither-check-erc: Verificar la conformidad con los ERC
    • slither-read-storage: Leer valores de almacenamiento de contratos
    • slither-interface: Generar una interfaz para un contrato

    Consulte la documentación de Herramientas para herramientas adicionales.

    Contáctenos para obtener ayuda en la creación de herramientas personalizadas.

    Documentación de la API

    La documentación sobre los componentes internos de Slither está disponible aquí.

    Obtener ayuda

    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.

    FAQ

    ¿Cómo excluyo mocks o pruebas?

    • Consulte nuestra documentación sobre filtrado de rutas.

    ¿Cómo soluciono el error "archivo desconocido" o problemas de compilación?

    • Debido a que Slither requiere el AST de solc, debe tener todas las dependencias disponibles. Si un contrato tiene dependencias, 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.

    Licencia

    Slither está licenciado y distribuido bajo la licencia AGPLv3. Contáctenos si busca una excepción a los términos.

    Publicaciones

    Publicación de Trail of Bits

    • Slither: Un Framework de Análisis Estático para Contratos Inteligentes, Josselin Feist, Gustavo Grieco, Alex Groce - WETSEB '19

    Publicaciones externas

    TítuloUsoAutoresLugarCódigo
    ReJection: Un Método de Detección de Vulnerabilidades de Reentrancia basado en ASTAnálisis basado en AST construido sobre SlitherRui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia ChenCTCIS 19-
    MPro: Combinando Análisis Estático y Simbólico para Pruebas Escalables de Contratos InteligentesAprovechar la dependencia de datos a través de SlitherWilliam Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay GaneshISSRE 2019MPro
    ETHPLOIT: Desde Fuzzing hasta Generación Eficiente de Exploits contra Contratos InteligentesAprovechar la dependencia de datos a través de SlitherQingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi MaSANER 20-
    Verificación de Contratos Inteligentes Ethereum: Un Enfoque de Model CheckingEjecución simbólica construida sobre el CFG de SlitherTam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho QuanIJMLC 20-
    Reparación de Contratos InteligentesDepender de los detectores de vulnerabilidades de SlitherXiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik RoychoudhuryTOSEM 20SCRepair
    Desmitificando Bucles en Contratos InteligentesAprovechar la dependencia de datos a través de SlitherBen Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil DilligASE 20-
    Estimación Dinámica de Gas Basada en Trazas de Bucles en Contratos InteligentesUsar el CFG de Slither para detectar buclesChunmiao Li, Shijie Nie, Yang Cao, Yijun Yu, Zhenjiang HuIEEE Open J. Comput. Soc. 1 (2020)

    Si está utilizando Slither en un trabajo académico, considere postularse al Premio de Investigación Crytic de $10k.

    Alto
    Alta
    10rtloSe utiliza el carácter de control de anulación de derecha a izquierdaAltoAlta
    11shadowing-stateSombreado de variables de estadoAltoAlta
    12suicidalFunciones que permiten a cualquiera autodestruir el contratoAltoAlta
    13uninitialized-stateVariables de estado no inicializadasAltoAlta
    14uninitialized-storageVariables de almacenamiento no inicializadasAltoAlta
    15unprotected-upgradeContrato actualizable desprotegidoAltoAlta
    16arbitrary-send-erc20-permittransferFrom usa from arbitrario con permitAltoMedia
    17arbitrary-send-ethFunciones que envían Ether a destinos arbitrariosAltoMedia
    18controlled-array-lengthAsignación de longitud de array contaminadaAltoMedia
    19controlled-delegatecallDestino de delegatecall controladoAltoMedia
    20delegatecall-loopFunciones pagables que usan delegatecall dentro de un bucleAltoMedia
    21incorrect-expExponenciación incorrectaAltoMedia
    22incorrect-returnSi se usa return incorrectamente en modo ensamblador.AltoMedia
    23msg-value-loopmsg.value dentro de un bucleAltoMedia
    24reentrancy-ethVulnerabilidades de reentrada (robo de ethers)AltoMedia
    25reentrancy-balanceVulnerabilidades de reentrada que conducen a comprobaciones de saldo desactualizadasAltoMedia
    26return-leaveSi se usa return en lugar de leave.AltoMedia
    27storage-arrayError del compilador de array de enteros con signo de almacenamientoAltoMedia
    28unchecked-transferTransferencia de tokens no verificadaAltoMedia
    29weak-prngPRNG débilAltoMedia
    30domain-separator-collisionDetecta tokens ERC20 que tienen una función cuya firma colisiona con DOMAIN_SEPARATOR() de EIP-2612MedioAlta
    31enum-conversionDetecta conversión peligrosa de enumMedioAlta
    32erc20-interfaceInterfaces ERC20 incorrectasMedioAlta
    33erc721-interfaceInterfaces ERC721 incorrectasMedioAlta
    34incorrect-equalityIgualdades estrictas peligrosasMedioAlta
    35locked-etherContratos que bloquean etherMedioAlta
    36mapping-deletionEliminación en mapeo que contiene una estructuraMedioAlta
    37pyth-deprecated-functionsDetecta funciones obsoletas de PythMedioAlta
    38pyth-unchecked-confidenceDetecta cuando el nivel de confianza de un precio de Pyth no está verificadoMedioAlta
    39pyth-unchecked-publishtimeDetecta cuando el publishTime de un precio de Pyth no está verificadoMedioAlta
    40shadowing-abstractSombreado de variables de estado de contratos abstractosMedioAlta
    41tautological-compareComparar una variable consigo misma siempre devuelve verdadero o falso, dependiendo de la comparaciónMedioAlta
    42tautologyTautología o contradicciónMedioAlta
    43write-after-writeEscritura no utilizadaMedioAlta
    44boolean-cstUso incorrecto de constante booleanaMedioMedia
    45chronicle-unchecked-priceDetecta cuando el precio de Chronicle no está verificado.MedioMedia
    46constant-function-asmFunciones constantes que usan código ensambladorMedioMedia
    47constant-function-stateFunciones constantes que cambian el estadoMedioMedia
    48divide-before-multiplyOrden de operaciones aritméticas imprecisoMedioMedia
    49gelato-unprotected-randomnessLlamada a _requestRandomness dentro de una función desprotegidaMedioMedia
    50out-of-order-retryableTransacciones retryables fuera de ordenMedioMedia
    51reentrancy-no-ethVulnerabilidades de reentrada (sin robo de ethers)MedioMedia
    52reused-constructorConstructor base reutilizadoMedioMedia
    53tx-originUso peligroso de tx.originMedioMedia
    54unchecked-lowlevelLlamadas de bajo nivel no verificadasMedioMedia
    55unchecked-sendEnvío no verificadoMedioMedia
    56uninitialized-localVariables locales no inicializadasMedioMedia
    57unused-returnValores de retorno no utilizadosMedioMedia
    58chainlink-feed-registryDetecta cuando se utiliza el registro de feeds de ChainlinkBajoAlta
    59incorrect-modifierModificadores que pueden devolver el valor por defectoBajoAlta
    60optimism-deprecationDetecta cuando se utiliza un predeploy o función obsoleta de Optimism.BajoAlta
    61shadowing-builtinSombreado de símbolos incorporadosBajoAlta
    62shadowing-localSombreado de variables localesBajoAlta
    63uninitialized-fptr-cstLlamadas a punteros de función no inicializados en constructoresBajoAlta
    64variable-scopeVariables locales usadas antes de su declaraciónBajoAlta
    65void-cstConstructor llamado no implementadoBajoAlta
    66calls-loopMúltiples llamadas en un bucleBajoMedia
    67events-accessControl de acceso sin eventosBajoMedia
    68events-mathsAritmética sin eventosBajoMedia
    69incorrect-unaryExpresiones unarias peligrosasBajoMedia
    70missing-zero-checkValidación de dirección cero faltanteBajoMedia
    71reentrancy-benignVulnerabilidades de reentrada benignasBajoMedia
    72reentrancy-eventsVulnerabilidades de reentrada que conducen a eventos fuera de ordenBajoMedia
    73return-bombUn destinatario de bajo nivel puede consumir todo el gas del llamante inesperadamente.BajoMedia
    74timestampUso peligroso de block.timestampBajoMedia
    75assemblyUso de ensambladorInformativoAlta
    76assert-state-changeCambio de estado en assertInformativoAlta
    77boolean-equalComparación con constante booleanaInformativoAlta
    78cyclomatic-complexityDetecta funciones con alta (> 11) complejidad ciclomáticaInformativoAlta
    79deprecated-standardsEstándares obsoletos de SolidityInformativoAlta
    80erc20-indexedParámetros de eventos ERC20 no indexadosInformativoAlta
    81function-init-stateFunción que inicializa variables de estadoInformativoAlta
    82incorrect-using-forDetecta el uso de la declaración using-for cuando ninguna función de una biblioteca determinada coincide con un tipo determinadoInformativoAlta
    83low-level-callsLlamadas de bajo nivelInformativoAlta
    84missing-inheritanceHerencia faltanteInformativoAlta
    85naming-conventionConformidad con las convenciones de nomenclatura de SolidityInformativoAlta
    86pragmaSi se utilizan diferentes directivas pragmaInformativoAlta
    87redundant-statementsDeclaraciones redundantesInformativoAlta
    88solc-versionVersión incorrecta de SolidityInformativoAlta
    89unimplemented-functionsFunciones no implementadasInformativoAlta
    90unindexed-event-addressEventos con parámetros de dirección pero sin parámetros indexadosInformativoAlta
    91unused-stateVariables de estado no utilizadasInformativoAlta
    92costly-loopOperaciones costosas en un bucleInformativoMedia
    93dead-codeFunciones que no se utilizanInformativoMedia
    94reentrancy-unlimited-gasVulnerabilidades de reentrada a través de send y transferInformativoMedia
    95too-many-digitsConformidad con las mejores prácticas de notación numéricaInformativoMedia
    96cache-array-lengthDetecta bucles for que usan el miembro length de algún array de almacenamiento en su condición de bucle y no lo modifican.OptimizaciónAlta
    97constable-statesVariables de estado que podrían declararse constantesOptimizaciónAlta
    98external-functionFunción pública que podría declararse externaOptimizaciónAlta
    99immutable-statesVariables de estado que podrían declararse inmutablesOptimizaciónAlta
    100var-read-using-thisEl contrato lee su propia variable usando thisOptimizaciónAlta
    -
    SAILFISH: Detectando Vulnerabilidades de Inconsistencia de Estado en Contratos Inteligentes en SegundosDepender de SlithIR para construir un grafo de dependencia de almacenamientoPriyanka Bose, Dipanjan Das, Yanju Chen, Yu Feng, Christopher Kruegel, and Giovanni VignaS&P 22Sailfish
    SolType: Tipos de Refinamiento para Desbordamiento Aritmético en SolidityUsar Slither como frontend para construir un sistema de tipos de refinamientoBryan Tan, Benjamin Mariano, Shuvendu K. Lahiri, Isil Dillig, Yu FengPOPL 22-
    No Me Estafes: Aprovechando Técnicas de Aprendizaje Automático para la Detección Automatizada de EstafasUsar Slither para extraer características de tokens (minteable, pausable, ..)Mazorra, Bruno, Victor Adan, and Vanesa DazaMathematics 10.6 (2022)-
    MANDO: Incrustaciones de Grafos Heterogéneos Multinivel para la Detección Fina de Vulnerabilidades en Contratos InteligentesUsar Slither para extraer el CFG y el grafo de llamadasHoang 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
    Auditoría Automatizada de Vulnerabilidades TOD de Sobreprecio en Contratos InteligentesUsar Slither para extraer el CFG y las dependencias de datosSidi Mohamed Beillahi, Eric Keilty, Keerthi Nelaturu, Andreas Veneris, and Fan Long2022 IEEE International Conference on Blockchain and Cryptocurrency (ICBC)Smart-Contract-Repair
    Modelado y Aplicación de Políticas de Control de Acceso para Contratos InteligentesExtender las dependencias de datos de SlitherJan-Philipp Toberg, Jonas Schiffl, Frederik Reiche, Bernhard Beckert, Robert Heinrich, Ralf ReussnerIEEE International Conference on Decentralized Applications and Infrastructures (DAPPS), 2022SolidityAccessControlEnforcement
    Detección de Vulnerabilidades en Contratos Inteligentes Basada en Aprendizaje Profundo y Fusión de Decisiones MultimodalesUsar Slither para extraer el CFGWeichu Deng, Huanchun Wei, Teng Huang, Cong Cao, Yun Peng, and Xuan HuSensors 2023, 23, 7246-
    Grafo de Conocimiento de Código Enriquecido Semánticamente para Revelar Desconocidos en la Reutilización de Código de Contratos InteligentesUsar 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 XiaACM Transactions on Software Engineering and Methodology, 2023-
    Ejecución Paralela de Contratos Inteligentes con Accesos Finos al EstadoUsar Slither para construir grafos de acceso al estadoXiaodong Qi, Jiao Jiao, Yi LiInternational Conference on Distributed Computing Systems (ICDCS), 2023-
    Manzanas Podridas: Comprendiendo los Riesgos de Seguridad Centralizados en Ecosistemas DescentralizadosImplementar un análisis interno sobre SlitherKailun Yan , Jilian Zhang , Xiangyu Liu , Wenrui Diao , Shanqing GuoACM Web Conference April 2023-
    Identificación de Vulnerabilidades en Contratos Inteligentes usando Análisis de IntervalosCrear 4 detectores sobre SlitherŞtefan-Claudiu Susan, Andrei ArusoaieFROM 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 SlitherMaha Ayub , Tania Saleem , Muhammad Janjua , Talha AhmadTOSEM 2023SmartMuv