Herramienta profesional desarrollada en Rust para el análisis exhaustivo de contratos inteligentes en la red Ethereum. Diseñada para detectar patrones sospechosos, evaluar riesgos de seguridad y proporcionar informes detallados sobre posibles vulnerabilidades.
- Detección de más de 50 patrones de código sospechosos
- Análisis estático de bytecode y código fuente
- Evaluación de permisos y controles de acceso
- Detección de funciones peligrosas y patrones de ataque conocidos
- Sistema de puntuación de riesgo detallado
- Clasificación por niveles de gravedad (Crítico, Alto, Medio, Bajo, Informativo)
- Análisis de dependencias y librerías externas
- Detección de códigos ofuscados o sospechosos
- Soporte para múltiples redes Ethereum (Mainnet, Ropsten, Rinkeby, etc.)
- Compatible con nodos locales (Geth, Parity) y servicios en la nube (Infura, Alchemy)
- API REST para integración con otras herramientas
- Plugins para IDEs populares (VS Code, IntelliJ)
- Rust 1.70 o superior
- 4GB RAM mínimo (8GB recomendado)
- 1GB de espacio en disco
- Conexión a Internet para análisis en tiempo real
- OpenSSL
- Git
- CMake
- pkg-config
# Clonar el repositorio
git clone https://github.com/quantumvortex369/smart-contract-analyzer.git
cd smart-contract-analyzer
# Instalar dependencias del sistema
sudo apt-get update
sudo apt-get install -y build-essential cmake pkg-config libssl-dev
# Construir en modo release
cargo build --releasedocker pull quantumvortex369/smart-contract-analyzer:latest
docker run -it quantumvortex369/smart-contract-analyzer --help# Analizar un contrato específico
./target/release/smart_contract_analyzer analyze \
--address 0x742d35Cc6634C0532925a3b844Bc454e4438f44e \
--rpc-url https://mainnet.infura.io/v3/TU_API_KEY# Análisis completo con informe detallado en formato JSON
./target/release/smart_contract_analyzer analyze \
--address 0x742d35Cc6634C0532925a3b844Bc454e4438f44e \
--rpc-url https://mainnet.infura.io/v3/TU_API_KEY \
--output json \
--full-scan \
--check-upgrades \
--simulate-attacks# Monitorear direcciones en tiempo real
./target/release/smart-contract-analyzer monitor \
--watchlist watchlist.txt \
--interval 300 \
--webhook https://tuservidor.com/webhookanalyze: Analiza un contrato específicomonitor: Monitorea múltiples contratosscan: Escanea una lista de contratosreport: Genera informes a partir de análisis previos
-a, --address: Dirección del contrato (0x...)-r, --rpc-url: URL del nodo RPC-o, --output: Formato de salida (text, json, html, markdown)-c, --config: Archivo de configuración personalizado-v, --verbose: Nivel de verbosidad (0-4)
Análisis de Contrato Inteligente
═════════════════════════════════
Información Básica
• Contrato: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e
• Red: Ethereum Mainnet
• Bloques analizados: 15,742,821 - 15,742,831
• Tiempo de análisis: 2.45s
Puntuación de Seguridad
• Total: 68/100 (Medio-Alto)
• Seguridad: 72/100
• Optimización: 64/100
• Buenas Prácticas: 59/100
Hallazgos Críticos (3)
[CRIT-001] Reentrancia en función withdraw()
• Archivo: contracts/Vault.sol:142
• Línea: 142-158
• Impacto: Alto
• Solución: Implementar el patrón Checks-Effects-Interactions
[CRIT-002] Uso de transfer() en lugar de call()
• Archivo: contracts/Payment.sol:87
• Línea: 87-93
• Impacto: Medio
• Solución: Reemplazar por call{value: amount}("") con manejo de errores
Hallazgos de Seguridad (7)
[SEC-004] Función updateAdmin sin protección
[SEC-008] Uso de block.timestamp
[SEC-015] Llamadas a contratos externos sin manejo de errores
...
Recomendaciones (5)
• Implementar pausa de emergencia
• Agregar límites de tasa (rate limiting)
• Mejorar la documentación NatSpec
...
Recursos Adicionales
• Reporte completo: analysis_0x742d...f44e_20231026.json
• Transacciones sospechosas: 3 encontradas
• Eventos inusuales: 12 detectados
eframe: Para la interfaz gráficaethers-rs: Para interactuar con la red Ethereumserde: Para serialización/deserializacióntokio: Para operaciones asíncronas
Para preguntas o sugerencias, por favor abre un issue en el repositorio.
¡Advertencia! Este contrato ha sido marcado como sospechoso
Hallazgos:
[1] Posible transferencia forzada detectada Severidad: ALTO Descripción: Se encontró un patrón sospechoso: transferFrom(address,address,uint256) Código: function transferFrom(address from, address to, uint256 amount) public returns (bool)
El analizador implementa un sistema avanzado de detección de patrones sospechosos que incluye:
- Reentrancia: Detección de patrones de reentrancia en funciones
withdrawytransfer - Desbordamiento aritmético: Operaciones matemáticas sin comprobación de desbordamiento
- Llamadas delegadas inseguras: Uso de
delegatecallcon parámetros controlados por el usuario - Auto-destrucción: Uso de
selfdestructque podría ser explotado - Bloqueo de fondos: Funciones
payablesin forma de retirar fondos
- Transferencias forzadas: Uso de
transferFromsin verificación de aprobación - Auto-aprobaciones sospechosas: Llamadas a
approveque podrían ser usadas para drenar fondos - Tiempos de bloqueo: Uso de
block.timestampoblock.numberpara decisiones críticas - Direcciones hardcodeadas: Direcciones fijas que podrían ser puntos de fallo
- Contratos no verificados: Interacción con contratos cuyo código fuente no está verificado
- Lógica oculta: Uso excesivo de
assemblyo código ofuscado - Funciones ocultas: Funciones con nombres engañosos o que no realizan lo esperado
- Lógica de actualización sospechosa: Mecanismos de actualización que podrían ser explotados
- Manejo inadecuado de permisos: Funciones administrativas sin restricciones de acceso
- Eventos de depuración: Eventos que podrían filtrar información sensible
- Patrones de transferencia inusuales: Transacciones que siguen patrones de lavado
- Interacciones con mezcladores: Conexiones con contratos de mezcla de criptomonedas
- Actividad reciente: Contratos recién desplegados con mucho volumen
- Patrones de aprobación sospechosos: Múltiples aprobaciones a direcciones desconocidas
¡Agradecemos tu interés en contribuir al proyecto! Sigue estos pasos para contribuir de manera efectiva:
- Haz un fork del repositorio
- Clona tu fork localmente:
git clone https://github.com/quantumvortex369/smart-contract-analyzer.git cd smart-contract-analyzer - Configura el entorno de desarrollo:
rustup update cargo build
- Crea una nueva rama para tu característica o corrección:
git checkout -b feature/nueva-funcionalidad
- Desarrolla tu código siguiendo las guías de estilo
- Añade pruebas unitarias para tu código
- Asegúrate de que todas las pruebas pasen:
cargo test - Envía un Pull Request con una descripción clara de los cambios
- Ejecuta todas las pruebas:
cargo test - Ejecuta pruebas específicas:
cargo test test_nombre_del_test - Para cobertura de código (requiere
tarpaulin):cargo install cargo-tarpaulin cargo tarpaulin --ignore-tests
- Sigue el Rust API Guidelines
- Documenta todo el código público con comentarios
/// - Mantén las funciones pequeñas y enfocadas en una sola responsabilidad
- Escribe pruebas unitarias para toda la lógica de negocio
Por favor, incluye la siguiente información al reportar un error:
- Versión de Rust (
rustc --version) - Pasos para reproducir el error
- Comportamiento esperado vs. comportamiento actual
- Capturas de pantalla o logs relevantes
Para solicitar una nueva característica:
- Verifica que no exista un issue similar
- Describe la funcionalidad deseada en detalle
- Explica por qué esta característica sería útil
- Incluye ejemplos de uso si es posible
Este proyecto sigue el Código de Conducta del Contribuidor. Al participar, se espera que cumplas con este código.