
Framework de análisis de seguridad de contratos inteligentes con IA y generación de PoC
Versión 6.0 | Novedades en v6.0 | Registro de cambios
Aether es un marco basado en Python para analizar contratos inteligentes Solidity, generar hallazgos de vulnerabilidades, producir pruebas de concepto (PoC) basadas en Foundry y validar explotaciones en forks de mainnet. Combina análisis de AST de Solidity, análisis de flujo de datos (taint analysis), análisis de grafos de flujo de control, análisis entre contratos, ejecución simbólica con Halmos, más de 180 detectores estáticos basados en patrones, un pipeline colaborativo multi-agente LLM (GPT/Gemini/Claude) con memoria institucional SAGE compartida, 14 arquetipos de protocolos, una base de conocimiento de más de 75 explotaciones, detección calibrada con ML, detección de peculiaridades de tokens, extracción de invariantes, resolución de contexto de contratos relacionados y filtrado avanzado sensible al contexto, todo en una única TUI persistente de pantalla completa.
Pipeline de agentes colaborativos — El pipeline de análisis profundo pasa de 5 ejecuciones independientes a 5 agentes colaborativos que comparten conocimiento estructurado a través de la memoria institucional SAGE:
docker compose up -d para iniciarlo.Memoria institucional SAGE — Aether ahora aprende de cada auditoría, reduciendo falsos positivos y mejorando la calidad de los hallazgos con el tiempo:
SageFeedbackManager.sync_detector_accuracy() identifica detectores de alto/bajo rendimiento y almacena reflexiones de hacer/no hacerdocker compose up -d inicia SAGE; configuración mediante sage_enabled/sage_url en ~/.aether/config.yamlColaboradores: Gracias a @sashavdv por corregir variables de ruta codificadas (PR #1) y a @pro258b por identificar el método faltante validate_anthropic_key() (PR #2).
SAGE es un sistema de memoria institucional persistente impulsado por consenso BFT. Consulte el proyecto SAGE para obtener documentación completa.```bash
pip install sage-agent-sdk
docker compose up -d
python aether.py
python -c "from core.sage_seeder import SageSeeder; SageSeeder.generate_seed_fixtures()"
### Cómo SAGE mejora las auditorías```
Audit 1 → Findings + FPs → Record outcomes in SAGE
↓
Audit 2 → SAGE recalls FP patterns → Fewer false positives
↓
Audit 3 → Richer institutional context → Better severity calibration
↓
Audit N → Institutional expert-level knowledge → Bug-bounty-quality findings
Ejecución automática de PoC — Los PoC de Foundry generados ahora se compilan y ejecutan automáticamente:
forge test --json ejecuta los PoC inmediatamente después de la compilaciónPoCTestResult para informes estructurados de aprobado/fallo/errorPOC_TESTING en JobManager para el seguimiento en vivo del progreso en la TUIEjecución simbólica de Halmos — Verificación formal mediante ejecución simbólica:
HalmosRunner para ejecutar pruebas simbólicas de Halmos contra las propiedades generadasHalmosPropertyGenerator para auto-generar propiedades de verificación a partir de invariantes extraídasHalmosSymbolicNode integrado en la Etapa 1.95 de validaciónenable_symbolic_verification, halmos_timeoutAnálisis de grafo de flujo de control — Comprensión del flujo de control a nivel de compilador:
BasicBlock, CFGEdge, ControlFlowGraph en solidity_ast.pybuild_cfg(), get_dominators(), get_loop_headers(), format_cfg_for_llm() para análisis estructuralparse_assembly_block() para soporte de ensamblador inlineBucle de retroalimentación de ML — Calibración basada en resultados históricos:
AccuracyTracker.record_finding_outcome() para registrar resultados de envíos y recompensas de bountyget_detector_accuracy() y get_detector_weights() para estadísticas de rendimiento por detectorDetectorStats que rastrea verdaderos/falsos positivos y precisión históricaEnhancedVulnerabilityDetector según el historial del detectorContexto de contratos relacionados — El análisis LLM ahora ve el código fuente completo de las dependencias:
RelatedContractResolver descubre automáticamente contratos padre, interfaces, librerías y dependenciasLimpieza de deuda técnica — Se eliminaron 8,500 líneas de código muerto:
ai_ensemble.py, audit_engine.py, fork_verifier.pyslither_project_cache del gestor de base de datosAnálisis AST de Solidity — Aether v4.0 añade análisis de código respaldado por compilador mediante py-solc-x, superando el análisis estático basado solo en regex:
solc --ast-json para resolución correcta de herencia, visibilidad de funciones, diseño de almacenamiento con números de slot y seguimiento de lecturas/escrituras de variables de estado por funciónMotor de análisis de taint — Rastrea entradas controladas por el usuario a través de los contratos para identificar flujos de datos peligrosos:
Análisis entre contratos (Pass 3.5) — Nuevo pass de análisis profundo dirigido a vulnerabilidades multi-contrato:
Base de datos de peculiaridades de tokens — 12 categorías de comportamientos ERC-20 no estándar que causan exploits reales:
Integrada en el pipeline de detección estática y en las listas de verificación de arquetipos.
Motor de precisión mejorado — Detección avanzada de vulnerabilidades de redondeo y precisión:
Generación de PoC ejecutables — Las pruebas Foundry generadas ahora realmente se compilan y ejecutan:
Mejoras en el pipeline de LLM:
Motor de análisis profundo — Aether v3.5 transforma fundamentalmente la forma en que la herramienta encuentra vulnerabilidades, pasando de una llamada LLM de una sola vez para "encontrar bugs" a un pipeline estructurado de 6 passes que refleja cómo los auditores profesionales abordan la revisión de código: primero entender, luego atacar sistemáticamente.
En lugar de enviar un contrato completo a un LLM con un solo prompt, Aether ahora ejecuta seis passes de análisis secuenciales con contexto acumulado:
Los Passes 1 y 2 se almacenan en caché por hash del contenido del contrato, por lo que las re-auditorías omiten la fase de comprensión. Cada pass posterior recibe todo el contexto previo, construyendo un modelo de ataque integral. Activado mediante la feature flag AETHER_DEEP_ANALYSIS=1 (activada por defecto); en caso de fallo, se recurre al modo de una sola vez.
Antes de analizar en busca de bugs, Aether detecta qué tipo de protocolo implementa el contrato y carga listas de verificación de vulnerabilidades específicas del arquetipo:
10 arquetipos en total, cada uno con 3-7 elementos específicos de la lista extraídos de exploits reales.
Una base de datos estructurada de más de 50 patrones de exploits reales categorizados reemplaza la anterior lista estática de 10 patrones:
Cada patrón incluye indicadores de código, protecciones faltantes, mecanismo de exploit paso a paso y precedentes del mundo real (con montos en dólares). Los patrones se filtran por el arquetipo detectado y el área de enfoque del agente.
Extrae automáticamente invariantes de protocolo de tres fuentes:
@invariant en los comentarios del contratoGenera suites de pruebas invariant_*() de Foundry que sirven como pruebas de verificación formal ligera: una prueba de invariante que falla demuestra que el bug es real.
division_by_zero, integer_underflow, etc. a bajo. Ahora comprueba si el hallazgo está en un bloque unchecked{}, cerca de transferencias de valor, en cálculos de precios o en contextos de oráculo antes de decidir"pending" ahora pasan al análisis LLM (antes solo pasaban los "validated", descartando silenciosamente muchos hallazgos reales)(line // 10) * 10 que separaba hallazgos con 2 líneas de diferencia en grupos distintosDeFiVulnerabilityDetector (análisis de presencia/ausencia en dos etapas) ahora se ejecuta en el motor de auditoría mejorado principal, no solo en el pipeline basado en flujosTUI textual totalmente integrada — Aether v3.0 es una aplicación persistente de pantalla completa que nunca vuelve a una terminal sin formato. Cada operación (auditorías, generación de PoC, generación de informes, selección de alcance en GitHub, configuración de ajustes) se ejecuta íntegramente dentro de la TUI:
app.suspend() — la TUI nunca desaparece, sin cambios bruscos de terminalEnter en cualquier trabajo para ver salida desplazable en vivo, barra de progreso de fases y metadatosa/n para todos/ninguno, escribir para filtrar, contratos auditados previamente codificados por colorn Nueva auditoría, r Reanudar, h Historial, PoCs, Informes, Obtener, Ajustes, SalirCuatro tipos de trabajos en segundo plano: Todas las operaciones pesadas se ejecutan como hilos daemon en segundo plano mediante AuditRunner, con la salida capturada por ThreadDemuxWriter y visible en JobDetailScreen:
| Tipo de trabajo | Descripción |
|---|---|
local | Auditorías de contratos individuales o en paralelo |
Soporte LLM de tres proveedores: OpenAI (GPT-5/5.3), Google Gemini (2.5/3.0) y Anthropic Claude (Sonnet 4.5/Opus 4.6) para máxima flexibilidad y redundancia.
Generación mejorada de PoC: Análisis de contratos basado en AST, correcciones iterativas de compilación y prompts de LLM listos para producción que generan exploits adecuados para envíos a bug bounty.
Filtrado avanzado de falsos positivos: La validación en múltiples etapas reduce los falsos positivos del 66% a ~20-25%, mejorando la precisión del 33% al 75-80%:
script/, .s.sol, forge-std/Script.sol) se excluyen automáticamente del análisis de vulnerabilidades[PRODUCTION]/[DEPLOYMENT SCRIPT] para que los modelos se centren en el código de producciónonlyDistributor, authorized) extraídos del código fuente del contrato y reconocidos junto con patrones codificadosIntegración de la base de datos de vulnerabilidades de Move: Patrones de 128 hallazgos Critical/High en 77 auditorías, adaptados para Solidity/EVM:
python setup.py # Interactive installer (recommended)
### 2. Lanzar Aether```bash
python aether.py # Launches the full-screen Textual TUI
Eso es todo. La TUI te guía a través de todo mediante atajos de teclado y diálogos modales.
OPENAI_API_KEY (para modelos GPT)GEMINI_API_KEY (para modelos Gemini)ANTHROPIC_API_KEY (para modelos Claude)ETHERSCAN_API_KEY (opcional, para obtener contratos verificados)Si prefieres la instalación manual:```bash
curl -L https://foundry.paradigm.xyz | bash && foundryup export PATH="$PATH:$HOME/.foundry/bin"
pip install solc-select solc-select install 0.4.26 0.8.0 0.8.19 0.8.20 latest
python -m venv venv && source venv/bin/activate pip install -r requirements.txt
## Configuration
The setup wizard (`python setup.py`) handles everything. You can also configure from within the TUI via `s` (Settings):
- **Configure API Keys** — sequential prompts for OpenAI, Gemini, Anthropic, Etherscan keys with masked current values
- **Configure Models** — select models per provider from available options
- **Full Wizard** — runs API keys followed by model selection
- **Triage Settings** — adjust severity thresholds, confidence levels, max findings
Or set environment variables directly:```bash
export OPENAI_API_KEY=sk-...
export GEMINI_API_KEY=...
export ANTHROPIC_API_KEY=...
Configuration is stored in ~/.aether/config.yaml.
Database locations:
~/.aether/aetheraudit.db~/.aether/aether_github_audit.dbAll interaction happens via keyboard shortcuts from the main screen:
n — New AuditMulti-step wizard with three source types:
Local file or directory:
GitHub URL:
a/n for all/none)Block explorer URL / address:
r — Resume AuditTable of all in-progress GitHub audits with project name, scope, progress (N/M contracts), and last update time. Select one to verify pending contracts and launch as a background job.
h — Audit HistoryUnified view of all past audits from both databases (local + GitHub). Select any entry for a submenu:
p — Generate PoCsSelect a project, configure max items, minimum severity, and consensus-only filtering. PoC generation runs as a background job — watch progress in the jobs table.
o — ReportsSelect project, scope, and format (markdown/json/html/all). Report generation runs as a background job.
f — Fetch ContractPick a network from 10+ supported chains, enter an address or paste an explorer URL, fetch the verified source code, and optionally audit it immediately.
s — SettingsEnter — Job DetailPress Enter on any row in the jobs table to see:
q — QuitExits the TUI. If jobs are running, prompts for confirmation.
build_cfg() constructs basic blocks with dominator trees and loop header detection; assembly block parsing; CFG context fed into deep analysis and taint propagationRelatedContractResolver for dependency contextHalmosRunner + HalmosPropertyGenerator for formal verification of invariants; integrated at validation Stage 1.95; graceful degradation if Halmos not installedAccuracyTracker records submission outcomes and generates per-detector confidence weights; severity calibration from historical data injected into deep analysisRelatedContractResolver discovers parent, interface, library, and dependency contracts; per-pass budget system with standard library summarization./output/ — General output root./output/reports/ — Generated reports./output/pocs/ — Generated Foundry PoC suites./output/exploit_tests/ — Results from exploit testingaether.py — Sole entry point; launches the Textual TUIcli/interactive_menu.py — Thin shim creating JobManager + AetherAppcli/tui/app.py — AetherApp(App) — main Textual app with key bindings and 1-second refresh timercli/tui/)MainScreen (jobs table + cost bar), JobDetailScreen (live log + phase + metadata), NewAuditScreen, HistoryScreen, ResumeScreen, PoCScreen, ReportsScreen, FetchScreen, SettingsScreenJobsTable (DataTable polling JobManager), CostBar (session cost by provider), LogViewer (RichLog with incremental refresh), PhaseBar (Unicode block progress)ConfirmDialog, , , , , — all ModalScreen subclassescli/audit_runner.py — AuditRunner class running audits, PoCs, reports, and GitHub audits in daemon threadscore/job_manager.py — JobManager singleton: session job registry (QUEUED/RUNNING/COMPLETED/FAILED/CANCELLED)core/audit_progress.py — ContractAuditStatus with per-job log buffers, ThreadDemuxWriter for stdout/stderr capturecore/llm_usage_tracker.py — Thread-safe singleton with snapshot() for per-job cost deltascli/main.py — AetherCLI class (~2600 lines) — internal audit orchestrator used by AuditRunnercore/enhanced_audit_engine.py — Main audit engine with deep analysis integrationcore/post_audit_summary.py — Post-audit panel with cost-by-provider breakdowncore/deep_analysis_engine.py — 6-pass LLM pipeline plus Pass 3.5 (cross-contract): understand → attack surface → invariants → cross-contract → cross-function → adversarial → edge cases; model tier selection, caching, few-shot examples, chain-of-thought enforcement, CFG context in Pass 2, ML severity calibration in Pass 5, related contract context per passcore/protocol_archetypes.py — Protocol archetype detection (14 types including LIQUID_STAKING, PERPETUAL_DEX, CDP_STABLECOIN, YIELD_AGGREGATOR) with per-archetype vulnerability checklistscore/exploit_knowledge_base.py — 75+ categorized real-world exploit patterns across 14 categories (including CROSS_CONTRACT, SIGNATURE_AUTH, TOKEN_INTEGRATION, PROXY_UPGRADE, TYPE_SAFETY)core/invariant_engine.py — Invariant extraction (NatSpec + LLM + pattern) and Foundry invariant test generation + Halmos property generationcore/solidity_ast.py — Solidity AST parsing via py-solc-x with regex fallback for inheritance, visibility, storage layout, state read/write tracking; control flow graph construction (build_cfg(), get_dominators(), get_loop_headers())core/taint_analyzer.py — Data flow / taint analysis with 8 source types, 12 sink types, sanitizer detection, cross-contract tracking, branch-aware CFG propagationcore/enhanced_vulnerability_detector.py — Primary detector with 60+ patternscore/business_logic_detector.py, core/state_management_detector.py, core/data_inconsistency_detector.py, core/centralization_detector.py, core/looping_detector.py — Move-inspired detectorscore/defi_vulnerability_detector.py, core/mev_detector.py, core/oracle_manipulation_detector.py — DeFi-specific detectors (DeFi detector integrated into enhanced engine in v3.5)core/arithmetic_analyzer.py, core/precision_analyzer.py, core/gas_analyzer.py, , — Specialized analyzers (precision analyzer enhanced with share inflation, rounding direction, division truncation, dust exploitation, accumulator overflow detection)core/validation_pipeline.py — Multi-stage pipeline: built-in protection check, governance detection, taint-aware validation (Stage 1.85), Halmos symbolic verification (Stage 1.95), deployment verification, local validationcore/governance_detector.py, core/deployment_analyzer.py, core/llm_false_positive_filter.pycore/control_flow_guard_detector.py, core/inheritance_verifier.pycore/nodes/halmos_node.py — HalmosSymbolicNode pipeline node for symbolic execution validationcore/enhanced_llm_analyzer.py — Structured LLM analysis (GPT/Gemini/Claude) with JSON output and multi-provider rotationcore/enhanced_prompts.py — Production prompt templates with dynamic exploit pattern loading from knowledge base, few-shot examples, severity calibration, and chain-of-thought enforcementcore/foundry_poc_generator.py (~8000 lines) — AST-based analysis, iterative compilation feedback (up to 5 attempts), auto-execution via forge test --json with PoCTestResult parsing and fork-mode supportcore/llm_foundry_generator.py — LLM-based test generation with mock API documentation and recommended setUp patternscore/enhanced_foundry_integration.py — Foundry validation and formattingcore/poc_templates.py — Mock contract templates (MockERC20, MockOracle, MockWETH, MockFlashLoanProvider)core/poc_setup_generator.py — Intelligent setUp() generation: constructor param extraction, mock deployment, upgradeable contract handling, token minting and approvalscore/database_manager.py — DatabaseManager (local audits) + AetherDatabase (GitHub audits)core/analysis_cache.py — Smart caching for 2x faster repeated analysiscore/accuracy_tracker.py — ML feedback loop: submission outcomes, bounty earnings, per-detector accuracy stats, confidence weight generationcore/github_auditor.py — Clone repos, detect frameworks, discover contracts, coordinate analysiscore/etherscan_fetcher.py, core/basescan_fetcher.py — Fetch verified contracts from block explorerscore/exploit_tester.py — Validate exploits against Anvil forksAudit flows defined in YAML configs (configs/). Enhanced audit pipeline:
FileReaderNode -> StaticAnalysisNode -> LLMAnalysisNode -> EnhancedExploitabilityNode -> [FixGeneratorNode -> ValidationNode -> HalmosSymbolicNode] -> ReportNode
2059 tests across 76 test files, running in ~23 seconds:```bash python -m pytest tests/ # All tests (~23s, 2059 tests) python -m pytest tests/test_enhanced_detectors.py -v # Single file python -m pytest tests/test_enhanced_detectors.py::TestArithmeticAnalyzer -v # Single class python -m pytest tests/ -k "governance" -v # Pattern match python -m pytest tests/ --cov=core --cov-report=html # With coverage
## Solución de problemas
- **Foundry no encontrado** — Asegúrate de que `forge`/`anvil` estén instalados y en el `PATH` (`foundryup` y `export PATH="$PATH:$HOME/.foundry/bin"`)
- **solc no encontrado** — Instala `solc-select` y las versiones requeridas: `solc-select install 0.8.20 latest`
- **Las funciones LLM no funcionan** — Verifica que las claves de API estén configuradas. Es posible que algunos modelos no estén disponibles en tu cuenta/región; el sistema recurre automáticamente a una alternativa
- **Base de datos no encontrada** — Para informes de GitHub, asegúrate de que el flujo de trabajo de auditoría se haya ejecutado primero
- **Textual no carga** — Ejecuta `pip install textual>=1.0.0` si falta
---
## Registro de cambios
### v4.7 — Auto-ejecución de PoC, verificación simbólica con Halmos, análisis de CFG y bucle de retroalimentación de ML
- **Auto-ejecución de PoC** — los PoCs de Foundry generados se compilan y ejecutan automáticamente mediante `forge test --json` con análisis de `PoCTestResult` y soporte de modo fork; fase `POC_TESTING` para seguimiento en vivo en la TUI
- **Ejecución simbólica con Halmos** — nodo de pipeline `HalmosRunner`, `HalmosPropertyGenerator` y `HalmosSymbolicNode` (etapa de validación 1.95) para verificación formal de invariantes; degradación controlada si Halmos no está instalado
- **Análisis de grafo de flujo de control** — `BasicBlock`, `CFGEdge`, `ControlFlowGraph` con `build_cfg()`, árboles de dominancia, detección de cabeceras de bucle, análisis de bloques de ensamblador; contexto CFG inyectado en el Paso 2 del análisis profundo; propagación de taint consciente de ramas
- **Bucle de retroalimentación de ML** — `AccuracyTracker` registra los resultados de los envíos con `get_detector_accuracy()` y `get_detector_weights()` para estadísticas por detector; ajuste de peso de confianza en `EnhancedVulnerabilityDetector`; calibración de severidad en el Paso 5 del análisis profundo
- **Contexto de contratos relacionados** — `RelatedContractResolver` descubre contratos padre, de interfaz, de biblioteca y de dependencia con un sistema de presupuesto por pasada (200K/100K/50K caracteres); resumen de la biblioteca estándar; descubrimiento de contratos hermanos en un solo archivo
- **Limpieza de deuda técnica** — se eliminaron 8.500 líneas de código muerto: se borraron `ai_ensemble.py`, `audit_engine.py`, `fork_verifier.py`; se quitaron todas las referencias a ai_ensemble de la CLI, el ejecutor de auditorías, las pantallas TUI y el generador de informes
- **2059 pruebas** superadas en 76 archivos de prueba
### v4.0 — Análisis del AST de Solidity, análisis de taint y seguimiento del flujo de datos
- **Analizador de AST de Solidity** — integración completa con solc mediante py-solc-x para una resolución de herencia correcta, visibilidad de funciones, disposición del almacenamiento, seguimiento de lectura/escritura de estado; respaldo elegante mediante regex
- **Motor de análisis de taint** — rastrea entradas controladas por el usuario a través de 8 tipos de fuentes hasta 12 sumideros peligrosos con detección de saneamiento y seguimiento entre contratos
- **Integración del pipeline** — los datos del AST alimentan el Paso 1, los datos de taint alimentan el Paso 2, etapa de validación 1.85 consciente de taint
- **1839 pruebas** superadas en 67 archivos de prueba (~23 segundos)
### v3.8 — Detección mejorada y generación de PoC
- **Análisis entre contratos** — nuevo Paso 3.5 con analizador de relaciones entre contratos, detección de límites de confianza y agrupación union-find
- **Base de datos de peculiaridades de tokens** — 12 categorías de comportamientos ERC-20 no estándar (fee-on-transfer, rebasing, ERC-777, etc.)
- **Motor de precisión mejorado** — detección de inflación de participaciones, análisis de dirección de redondeo, seguimiento de truncamiento de divisiones, explotación de residuos (dust), desbordamiento de acumuladores
- **Generación de PoC ejecutables** — biblioteca de contratos mock (ERC20, Oracle, WETH, FlashLoan), setUp() inteligente, máximo de intentos de compilación 3→5
- **Ejemplos few-shot** en los Pasos 3, 4 y 5 del análisis profundo con ejemplos reales de vulnerabilidades y falsos positivos
- **Calibración de severidad** — umbrales concretos (Crítica >$1M, Alta >$100K, Media >$10K, Baja teórica)
- **Aplicación de la cadena de pensamiento** — razonamiento obligatorio en 5 pasos antes de la salida JSON
- **Ensamble de IA retirado** — reemplazado por rotación de múltiples proveedores en los pasos de análisis profundo
- **Rotación de múltiples proveedores** — Gemini Flash (pasadas económicas), Anthropic Claude (razonamiento), OpenAI GPT (diversidad)
- **1682 pruebas** superadas
### v3.7 — Arquetipos ampliados y patrones de exploit
- **4 nuevos arquetipos de protocolo** — LIQUID_STAKING, PERPETUAL_DEX, CDP_STABLECOIN, YIELD_AGGREGATOR (10→14 en total)
- **25 nuevos patrones de exploit** — categorías CROSS_CONTRACT, SIGNATURE_AUTH, TOKEN_INTEGRATION, PROXY_UPGRADE, TYPE_SAFETY (50→75 en total)
- **Escáner de contratos mejorado** — ahora se puntúan los contratos abstractos y se ajustaron los umbrales para soporte de monorepos
- **1528 pruebas** superadas
### v3.5.2 — Reducción de falsos positivos
- **Detección de scripts en el descubrimiento de contratos** — los archivos en `script/`/`scripts/`, los archivos `.s.sol` y los contratos que importan `forge-std/Script.sol` o heredan `is Script` se etiquetan como scripts de despliegue y se excluyen del análisis de vulnerabilidades por LLM. Elimina toda una clase de falsos positivos provocados por los asistentes de despliegue de Foundry analizados como código de producción
- **Marcadores de contexto de archivo en los prompts de LLM** — el contenido combinado ahora incluye marcadores `// FILE: <name>` por archivo, y los pasos 1 y 3 del análisis profundo reciben un encabezado `## Project Files` que etiqueta cada archivo como `[PRODUCTION]` o `[DEPLOYMENT SCRIPT]` para que los LLM se centren en el código correcto
- **Detección dinámica de modificadores** — `GovernanceDetector` ahora extrae los modificadores personalizados de control de acceso definidos en el contrato (p. ej. `onlyDistributor`, `onlyMinter`, `authorized`) escaneando definiciones de modificadores con prefijo `only` o comprobaciones de `msg.sender`. Estos se fusionan con la lista de modificadores fijos para `has_access_control()` y `is_governance_function()`
- **Desduplicación por ámbito de función** — `VulnerabilityDeduplicator` ahora agrupa los hallazgos por `(function_name, vuln_type)` cuando el código del contrato está disponible, reemplazando el frágil emparejamiento por línea exacta que omitía duplicados en líneas adyacentes de la misma función. Recurre a la agrupación por bloques de 20 líneas cuando el contexto de la función no está disponible
- **Ampliada la tolerancia de líneas del ensamble de IA** — la tolerancia de `_findings_match_fuzzy()` aumentó de ±5 a ±15 líneas para detectar duplicados de la misma función entre agentes
- **Patrón de falso positivo en constructor atómico** — `_check_constructor_context()` ahora detecta cuando un contrato se despliega (`new`/`Create2`) y se inicializa (`.initialize()`) en el mismo constructor, marcando las preocupaciones de front-running como falsos positivos, ya que las operaciones son atómicas
- **Patrón de validación LLM #18** — se añadió "Atomic Deployment + Initialization" a la lista de verificación de falsos positivos de 18 patrones en el prompt de validación del LLM
- **1489 pruebas** superadas en 56 archivos de prueba (~40 segundos), frente a 1461
### v3.5 — Motor de análisis profundo
- **Pipeline de análisis profundo de 6 pasadas** — reemplaza las llamadas LLM de una sola pasada con razonamiento estructurado de múltiples pasadas: Comprensión del Protocolo → Mapeo de la Superficie de Ataque → Análisis de Violación de Invariantes → Interacción entre Funciones → Modelado Adversario → Casos Límite y Extremos. Cada pasada recibe el contexto acumulado de las pasadas anteriores. Las pasadas 1-2 se cachean mediante hash de contenido para reauditorías rápidas
- **Detección de arquetipo de protocolo** — identifica automáticamente el tipo de protocolo (Vault ERC-4626, Lending Pool, DEX/AMM, Bridge, Staking, Gobernanza, Oracle, Marketplace NFT, Token, Orderbook) con listas de verificación de vulnerabilidades por arquetipo extraídas de exploits reales
- **Base de conocimientos de exploits** — más de 50 patrones de exploits categorizados en 9 categorías (Inflation/Share, Reentrancy, Oracle, Governance, Bridge, Precision/Rounding, Access Control, Economic/DeFi, Logic) que reemplazan la lista estática de 10 patrones. Cada patrón incluye indicadores de código, protecciones faltantes, mecanismo de exploit paso a paso, precedentes del mundo real con montos en dólares y aplicabilidad por arquetipo
- **Motor de invariantes** — extrae invariantes de protocolo de las etiquetas NatSpec `@invariant`, del análisis LLM y de 6 detectores de patrones comunes (conservación del vault, seguimiento de saldos, contabilidad de suministro, producto constante de AMM, colateralización de préstamos, recompensas de staking). Genera suites de pruebas `invariant_*()` de Foundry como pruebas de verificación formal ligera
- **Calibración de severidad consciente del contexto** — reemplaza las rebajas generalizadas de severidad por comprobaciones de contexto de riesgo. Los hallazgos en bloques `unchecked{}`, cerca de transferencias de valor (`call{value:}`, `_mint`, `safeTransfer`), cálculos de precios o contextos de oráculo conservan su severidad original
- **Corrección de la puerta de validación** — los hallazgos `"pending"` ahora pasan al análisis LLM con la bandera `needs_llm_validation`. Solo se descartan los hallazgos explícitamente `"false_positive"` (antes, todos los hallazgos que no fueran `"validated"` se filtraban silenciosamente)
- **Penalización de confianza según especialización** — los hallazgos de un solo agente que coinciden con la especialización del agente (p. ej., AnthropicReasoningSpecialist + ataques económicos) reciben una penalización de -0.05; los hallazgos no especializados mantienen -0.15
- **Corrección de desduplicación por bloques de líneas** — se eliminó la agrupación `(line // 10) * 10` que causaba problemas arbitrarios de límites (líneas 9 y 11 en bloques diferentes). La desduplicación ahora usa solo el tipo de vulnerabilidad normalizado, siendo `_findings_match_fuzzy()` quien gestiona la proximidad de líneas
- **Integración del detector DeFi** — `DeFiVulnerabilityDetector` (análisis semántico de presencia/ausencia en dos etapas) ahora se ejecuta en el motor de auditoría mejorado junto con `EnhancedVulnerabilityDetector`
- **Patrones de exploits dinámicos en prompts** — `enhanced_prompts.py` ahora carga patrones de ExploitKnowledgeBase filtrados por área de enfoque, con respaldo a los patrones estáticos
- **1461 pruebas** superadas en 55 archivos de prueba (~50 segundos)
### v3.2 — Estadísticas de trabajos y correcciones de UI
- **Corregidas las estadísticas de hallazgos/costo/LLM de trabajos que siempre mostraban cero** — el worker de auditoría ahora captura el dict de resultados de `run_audit()` para extraer el número de hallazgos; se eliminó `LLMUsageTracker.reset()`, que dejaba referencias huérfanas al singleton; los 4 tipos de worker calculan las estadísticas por trabajo a partir de deltas de snapshots
- **Corregido el artefacto de repintado de la UI al cambiar de ventana** — se reemplazaron los contenedores desplazables por un `Container` simple + `overflow: hidden` en JobDetailScreen para evitar frames obsoletos del compositor
- **Se movió "Job Details" a border_title** para un renderizado más limpio del panel de metadatos
- Se eliminó `CLAUDE.md` del seguimiento de git
### v3.0 — TUI Textual totalmente integrada
- **Cero llamadas a `app.suspend()`** — la TUI nunca cae a una terminal en bruto; cada operación se ejecuta de forma integrada
- **Generación de PoC en segundo plano** — se ejecuta como hilo daemon mediante `AuditRunner.start_poc_generation()` con salida en vivo en JobDetailScreen
- **Generación de informes en segundo plano** — se ejecuta como hilo daemon mediante `AuditRunner.start_report_generation()` con salida en vivo
- **Auditorías de GitHub en segundo plano** — selección de alcance mediante diálogos de Textual; la auditoría se ejecuta como hilo daemon a través de `AuditRunner.start_github_audit()`
- **ContractSelectorDialog** — modal de selección múltiple filtrable casi a pantalla completa que reemplaza al `ScopeManager.interactive_select()` basado en curses. Espacio para alternar, `a`/`n` para todos/ninguno, escribir para filtrar, contratos previamente auditados con código de colores
- **GitHubAuditHelper** — envoltorio descompuesto alrededor de `GitHubAuditor`/`AetherDatabase` que proporciona operaciones atómicas (`clone_and_discover`, `get_scope_state`, `save_new_scope`, `get_pending_contracts`, `handle_reaudit`) invocables desde las pantallas de Textual
- **Configuración integrada** — configuración de claves de API y modelos mediante TextInputDialog/SelectDialog nativos, sin necesidad de un asistente de configuración externo
- **Gestión integrada del alcance de GitHub** — continuar, reauditar o crear un nuevo alcance mediante SelectDialog; selección de contratos mediante ContractSelectorDialog
- **6 pantallas reescritas** — PoCScreen, ReportsScreen, SettingsScreen, NewAuditScreen, HistoryScreen, ResumeScreen — todas totalmente integradas
- **770 pruebas** superadas en 50 archivos de prueba
### v2.2 — Panel de control TUI Textual
- TUI Textual a pantalla completa con aplicación persistente, atajos de teclado y temporizador de actualización de 1 segundo
- MainScreen con tabla de trabajos en vivo y barra de costo de sesión
- JobDetailScreen con visor de registros en vivo, barra de progreso de fases y metadatos
- Diálogos modales (confirmación, entrada de texto, selección, casilla de verificación, selector de rutas) que reemplazan los prompts de questionary
- Ejecución de auditoría en segundo plano mediante AuditRunner con captura de salida por ThreadDemuxWriter
- JobManager singleton como registro de trabajos de la sesión
- Seguimiento de costo por trabajo mediante snapshots de LLMUsageTracker
### v2.1 — Auditorías paralelas, eliminación de Slither y limpieza de pruebas
- Motor de auditoría paralela — ejecuta múltiples contratos de forma concurrente con `ThreadPoolExecutor`, configurable hasta 8 workers paralelos
- Seguimiento de progreso thread-safe — `ContractAuditStatus` con bloqueos, `ThreadDemuxWriter` para multiplexar stdout
- Resumen posterior a la auditoría — vista consolidada de resultados tras completar las auditorías paralelas
- Seguimiento de uso de LLM — rastrea el uso de tokens, costos y llamadas de API en los tres proveedores
- Slither eliminado por completo — se borraron todas las dependencias, el código de integración y las pruebas (~1200 líneas); los detectores basados en patrones + ABI de Foundry + regex son las únicas herramientas de análisis
- Limpieza del conjunto de pruebas — se eliminaron más de 40 archivos de prueba antiguos/lentos/de integración
### v2.0 — TUI de menú interactivo
- TUI interactiva controlada por menús como interfaz principal
- Asistente de auditoría guiado con selección de fuente, casillas de verificación de funciones y confirmación
- Capacidad de reanudar auditorías de GitHub en curso
- Navegador unificado del historial de auditorías en bases de datos locales y de GitHub
- Flujos de trabajo integrados de generación de PoC e informes desde el menú
- Obtención de contratos de múltiples cadenas con auditoría inmediata opcional
- Gestión de configuración desde el menú
- Lanzamiento/retorno a consola desde el menú
### v1.5 — Soporte LLM de tres proveedores y análisis mejorado
- Integración de Anthropic Claude (Sonnet 4.5, Opus 4.6, Haiku 4.5) como tercer proveedor de LLM
- Ensamble de IA de 6 agentes: 2 agentes especialistas de OpenAI + 2 de Gemini + 2 de Anthropic
- Respaldo automático entre proveedores para máxima disponibilidad
- Modelos actualizados de OpenAI (GPT-5.3) y de Google Gemini (3.0 Flash/Pro)
- Asistente de configuración actualizado con la configuración de la clave API de Anthropic y la selección de modelos
- Corregido el comando CLI generate-foundry que estaba roto
---
## Licencia
Aether se distribuye bajo la **Licencia MIT**. Consulta el archivo [LICENSE](https://github.com/l33tdawg/aether/blob/HEAD/LICENSE) para más detalles.
## Autor
**Dhillon Andrew Kannabhiran** (@l33tdawg)
- Email: [email protected]
- Twitter: [@l33tdawg](https://twitter.com/l33tdawg)
- GitHub: [@l33tdawg](https://github.com/l33tdawg)
## Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviar issues, hacer fork del repositorio y crear pull requests.
| Categoría | Severidad | Tokens de ejemplo |
|---|
| Tarifa por transferencia | ALTA | USDT, STA, PAXG |
| Tokens con rebase | ALTA | stETH, AMPL, OHM |
| Callbacks ERC-777 | ALTA | imBTC |
| Mintable flash | ALTA | DAI |
| Retorno no estándar | MEDIA | USDT antiguo |
| Tokens en lista negra | MEDIA | USDC, USDT |
| Tokens pausables | MEDIA | USDC |
| Tokens de decimales bajos | MEDIA | USDC (6), WBTC (8) |
| Hooks de transferencia | MEDIA | LINK (ERC-677) |
| Carrera de aprobación | BAJA | Varios |
| Múltiples puntos de entrada | BAJA | TUSD |
| Tokens actualizables | BAJA | USDC v2 |
| Pass | Propósito | Nivel de modelo |
|---|
| Pass 1 | Comprensión del protocolo: qué ES el protocolo, sus invariantes, flujos de valor y supuestos de confianza | Barato (en caché) |
| Pass 2 | Mapeo de superficie de ataque: cada punto de entrada, lecturas/escrituras de estado, ventanas de reentrancy | Barato (en caché) |
| Pass 3 | Análisis de violación de invariantes: verificar sistemáticamente cada invariante contra cada ruta de código | Potente |
| Pass 4 | Interacción entre funciones: análisis de dependencias de estado, dependencias temporales, secuencias de flash loans | Potente |
| Pass 5 | Modelado adversarial: perspectiva explícita del atacante con flash loans, MEV y múltiples cuentas | Potente |
| Pass 6 | Casos límite y bordes: operaciones primera/última, valores cero, valores máximos, operaciones autorreferenciales | Medio |
| Arquetipo | Ejemplos de elementos de la lista |
|---|
| Vault ERC-4626 | Inflación del primer depositante, dirección de redondeo, manipulación del precio de la participación mediante donaciones |
| Pool de préstamos | Manipulación del precio del oráculo, manipulación del umbral de liquidación, cascada de deuda incobrable, manipulación de la tasa de interés |
| DEX/AMM | Manipulación del primer LP, ataques sandwich, oráculo de precio basado en reservas |
| Puente | Replay entre cadenas, compromiso de validadores, desajuste de mapeo de tokens, falsificación de pruebas de retiro |
| Staking | Manipulación del cálculo de recompensas, desbordamiento de la tasa de recompensa, reentrancy en unstaking |
| Gobernanza | Ataques de gobernanza con flash loans, bypass de timelock, manipulación de quórum |
| Oráculo | Datos de precio obsoletos, desviación de precio, inactividad del secuenciador L2 |
| Categoría | Patrones | Ejemplos |
|---|
| Ataques de inflación/participaciones | 6 | Primer depositante ERC-4626, inflación de tokens LP, manipulación basada en donaciones |
| Reentrancy | 7 | Clásica, de solo lectura, entre funciones, entre contratos, hooks ERC-777/1155, callbacks de flash loans |
| Oráculo | 5 | Manipulación del precio spot, manipulación de TWAP, obsolescencia, desajuste de decimales, secuenciador L2 |
| Gobernanza | 4 | Votación con flash loans (Beanstalk), bypass de timelock, manipulación de quórum |
| Puente | 5 | Replay de mensajes (Nomad), compromiso de validadores (Ronin), mapeo de tokens (Wormhole) |
| Precisión/Redondeo | 4 | Dirección de redondeo, desbordamiento no verificado, fee-on-transfer, deriva de tokens rebasing |
| Control de acceso | 5 | Proxy no inicializado, colisión de almacenamiento, colisión de selectores, inyección de delegatecall |
| Económico/DeFi | 8 | Ataques sandwich, liquidez JIT, cascada de deuda incobrable, bomba de returndata, replay de firmas |
| Lógica | 6 | Off-by-one, falta de deadline/slippage, retornos no verificados, contabilidad de auto-transferencias |
pofsqgithub| Auditorías de repositorios de GitHub con alcance preseleccionado |
poc | Generación de pruebas de concepto de Foundry |
report | Generación de informes de auditoría (markdown/json/html) |
forge test --json with fork-mode supportTextInputDialogSelectDialogCheckboxDialogPathDialogContractSelectorDialogGitHubAuditHelper — decomposed GitHub audit operations for TUI integrationtheme.tcss — cyan-themed Textual CSScore/cross_contract_analyzer.py — Inter-contract relationship analysis with trust boundary detection, union-find grouping, and RelatedContractResolver for dependency contextcore/token_quirks.py — Token quirks database (12 categories of non-standard ERC-20 behaviors)core/halmos_runner.py — Halmos symbolic execution runner for formal verificationcore/halmos_property_generator.py — Auto-generates Halmos verification properties from invariantscore/accuracy_tracker.py — ML feedback loop: per-detector accuracy tracking, confidence weight adjustment, severity calibrationcore/input_validation_detector.pycore/data_decoding_analyzer.pycore/token_quirks.py