
Framework d'analyse de sécurité des contrats intelligents et de génération de PoC par IA
Version 6.0 | Nouveautés de v6.0 | Changelog
Aether est un framework Python pour analyser les contrats intelligents Solidity, générer des constatations de vulnérabilités, produire des tests de preuve de concept (PoC) basés sur Foundry et valider des exploits sur des forks du mainnet. Il combine l'analyse AST Solidity, l'analyse de taint, l'analyse de graphe de flux de contrôle, l'analyse inter-contrats, l'exécution symbolique Halmos, plus de 180 détecteurs statiques basés sur des motifs, un pipeline LLM multi-agents collaboratif (GPT/Gemini/Claude) avec une mémoire institutionnelle SAGE partagée, 14 archétypes de protocoles, une base de connaissances de plus de 75 exploits, la détection calibrée par ML, la détection des particularités de jetons, l'extraction d'invariants, la résolution du contexte des contrats liés et un filtrage avancé sensible au contexte dans une interface TUI plein écran persistante unique.
Pipeline d'agents collaboratifs — Le pipeline d'analyse approfondie passe de 5 passes indépendantes à 5 agents collaboratifs partageant des connaissances structurées via la mémoire institutionnelle SAGE :
docker compose up -d pour démarrer.Mémoire institutionnelle SAGE — Aether apprend désormais de chaque audit, réduisant les faux positifs et améliorant la qualité des constatations au fil du temps :
SageFeedbackManager.sync_detector_accuracy() identifie les détecteurs à haute/basse performance et stocke des réflexions sur les comportements à adopter et à éviterdocker compose up -d démarre SAGE ; configuration via sage_enabled/sage_url dans ~/.aether/config.yamlContributeurs: Merci à @sashavdv pour avoir corrigé les variables de chemin codées en dur (PR #1) et à @pro258b pour avoir identifié la méthode validate_anthropic_key() manquante (PR #2).
SAGE est un système de mémoire institutionnelle persistant propulsé par le consensus BFT. Consultez le projet SAGE pour la documentation complète.```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()"
### Comment SAGE améliore les audits```
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
Exécution automatique des PoC — Les PoC Foundry générés se compilent et s'exécutent désormais automatiquement :
forge test --json exécute les PoC immédiatement après la compilationPoCTestResult pour un rapport structuré succès/échec/erreurPOC_TESTING dans JobManager pour le suivi en direct de la progression dans la TUIExécution symbolique Halmos — Vérification formelle par exécution symbolique :
HalmosRunner pour exécuter les tests symboliques Halmos contre les propriétés généréesHalmosPropertyGenerator pour générer automatiquement des propriétés de vérification à partir des invariants extraitsHalmosSymbolicNode intégré à l'étape de validation 1.95enable_symbolic_verification, halmos_timeoutAnalyse du graphe de flux de contrôle — Compréhension du flux de contrôle au niveau du compilateur :
BasicBlock, CFGEdge, ControlFlowGraph dans solidity_ast.pybuild_cfg(), get_dominators(), get_loop_headers(), format_cfg_for_llm() pour l'analyse structurelleparse_assembly_block() pour la prise en charge de l'assembly inlineBoucle de rétroaction ML — Calibrage basé sur les résultats historiques :
AccuracyTracker.record_finding_outcome() pour suivre les résultats de soumission et les gains de bountyget_detector_accuracy() et get_detector_weights() pour les statistiques de performance par détecteurDetectorStats suivant les vrais/faux positifs et la précision historiqueEnhancedVulnerabilityDetector en fonction de l'historique du détecteurContexte des contrats liés — L'analyse LLM voit désormais le code source complet des dépendances :
RelatedContractResolver découvre automatiquement les contrats parents, interfaces, bibliothèques et dépendancesNettoyage de la dette technique — 8 500 lignes de code mort supprimées :
ai_ensemble.py, audit_engine.py, fork_verifier.pyslither_project_cache du gestionnaire de base de donnéesAnalyse AST Solidity — Aether v4.0 ajoute une analyse de code basée sur le compilateur via py-solc-x, allant au-delà de l'analyse statique par regex uniquement :
solc --ast-json pour une résolution correcte de l'héritage, la visibilité des fonctions, la disposition du stockage avec numéros de slots et le suivi des lectures/écritures de variables d'état par fonctionMoteur d'analyse de taint — Suit les entrées contrôlées par l'utilisateur à travers les contrats pour identifier les flux de données dangereux :
Analyse inter-contrats (Pass 3.5) — Nouvelle passe d'analyse approfondie ciblant les vulnérabilités multi-contrats :
Base de données des particularités de jetons — 12 catégories de comportements ERC-20 non standard qui causent de vrais exploits :
Intégrée au pipeline de détection statique et aux listes de contrôle des archétypes.
Moteur de précision amélioré — Détection avancée des vulnérabilités d'arrondi et de précision :
Génération de PoC exécutables — Les tests Foundry générés se compilent et s'exécutent réellement :
Améliorations du pipeline LLM :
Moteur d'analyse approfondie — Aether v3.5 transforme fondamentalement la façon dont l'outil détecte les vulnérabilités, passant d'un appel LLM unique « trouver des bugs » à un pipeline structuré en 6 passes qui reflète la manière dont les auditeurs professionnels abordent la revue de code : comprendre d'abord, puis attaquer systématiquement.
Au lieu d'envoyer un contrat entier à un LLM avec une seule invite, Aether exécute désormais six passes d'analyse séquentielles avec un contexte accumulé :
Les passes 1-2 sont mises en cache par hash du contenu du contrat, de sorte que les ré-audits sautent la phase de compréhension. Chaque passe suivante reçoit tout le contexte précédent, construisant un modèle d'attaque complet. Activé par le flag AETHER_DEEP_ANALYSIS=1 (activé par défaut) ; en cas d'échec, repli sur l'approche one-shot.
Avant d'analyser les bugs, Aether détecte quel type de protocole le contrat implémente et charge des listes de contrôle de vulnérabilités spécifiques à l'archétype :
10 archétypes au total, chacun avec 3 à 7 éléments de liste de contrôle spécifiques tirés d'exploits réels.
Une base de données structurée de plus de 50 schémas d'exploits réels catégorisés remplace l'ancienne liste statique de 10 schémas :
Chaque schéma comprend des indicateurs de code, les protections manquantes, le mécanisme d'exploit étape par étape et des précédents réels (avec les montants en dollars). Les schémas sont filtrés par archétype détecté et par domaine de concentration de l'agent.
Extrait automatiquement les invariants du protocole à partir de trois sources :
@invariant dans les commentaires des contratsGénère des suites de tests Foundry invariant_*() qui servent de preuves de vérification formelle allégée — un test d'invariant qui échoue prouve que le bug est réel.
division_by_zero, integer_underflow, etc. en faible. Vérifie désormais si le résultat se trouve dans un bloc unchecked{}, à proximité de transferts de valeur, dans des calculs de prix ou dans des contextes d'oracle avant de décider"pending" passent désormais à l'analyse LLM (précédemment, seuls les "validated" passaient, ce qui écartait silencieusement de nombreux vrais résultats)(line // 10) * 10 qui séparait des résultats distants de 2 lignes en groupes différentsDeFiVulnerabilityDetector (analyse de présence/absence en deux étapes) s'exécute désormais dans le moteur d'audit amélioré principal, pas seulement dans le pipeline basé sur les fluxTUI textuelle entièrement intégrée — Aether v3.0 est une application plein écran persistante qui ne revient jamais à un terminal brut. Chaque opération — audits, génération de PoC, génération de rapports, sélection de la portée GitHub, configuration des paramètres — s'exécute entièrement dans la TUI :
app.suspend() — la TUI ne disparaît jamais, aucune bascule de terminal brutaleEntrée sur une tâche pour voir la sortie défilante en direct, la barre de progression des phases et les métadonnéesa/n pour tout/rien, taper pour filtrer, contrats déjà audités codés par couleurn Nouvel audit, r Reprendre, h Historique, PoC, Rapports, Récupérer, Paramètres, QuitterQuatre types de tâches en arrière-plan : Toutes les opérations lourdes s'exécutent en tant que threads démons en arrière-plan via AuditRunner, avec la sortie capturée par ThreadDemuxWriter et visible dans JobDetailScreen :
| Type de tâche | Description |
|---|---|
local | Audits de contrats uniques ou parallèles |
github |
Prise en charge de trois fournisseurs LLM : OpenAI (GPT-5/5.3), Google Gemini (2.5/3.0) et Anthropic Claude (Sonnet 4.5/Opus 4.6) pour une flexibilité et une redondance maximales.
Génération de PoC améliorée : Analyse de contrats basée sur l'AST, corrections itératives de compilation et invites LLM prêtes pour la production générant des exploits adaptés aux soumissions de bug bounty.
Filtrage avancé des faux positifs : La validation en plusieurs étapes réduit les faux positifs de 66 % à environ 20-25 %, améliorant la précision de 33 % à 75-80 % :
script/, .s.sol, forge-std/Script.sol) sont automatiquement exclus de l'analyse des vulnérabilités[PRODUCTION]/[DEPLOYMENT SCRIPT] afin que les modèles se concentrent sur le code de productiononlyDistributor, authorized) sont extraits du code source du contrat et reconnus aux côtés des schémas codés en durIntégration de la base de données de vulnérabilités Move : Schémas issus de 128 résultats critiques/élevés sur 77 audits, adaptés pour Solidity/EVM :
python setup.py # Interactive installer (recommended)
### 2. Lancer Aether```bash
python aether.py # Launches the full-screen Textual TUI
C'est tout. La TUI vous guide à travers tout via des raccourcis clavier et des boîtes de dialogue modales.
OPENAI_API_KEY (pour les modèles GPT)GEMINI_API_KEY (pour les modèles Gemini)ANTHROPIC_API_KEY (pour les modèles Claude)ETHERSCAN_API_KEY (optionnel, pour récupérer les contrats vérifiés)Si vous préférez l'installation manuelle :```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
L'assistant de configuration (`python setup.py`) gère tout. Vous pouvez également configurer depuis l'interface TUI via `s` (Paramètres) :
- **Configurer les clés API** — invites séquentielles pour les clés OpenAI, Gemini, Anthropic, Etherscan avec valeurs actuelles masquées
- **Configurer les modèles** — sélectionner les modèles par fournisseur parmi les options disponibles
- **Assistant complet** — exécute la saisie des clés API puis la sélection des modèles
- **Paramètres de triage** — ajuster les seuils de gravité, les niveaux de confiance, le nombre maximal de résultats
Ou définissez les variables d'environnement directement :```bash
export OPENAI_API_KEY=sk-...
export GEMINI_API_KEY=...
export ANTHROPIC_API_KEY=...
Configuration is stored in ~/.aether/config.yaml.
Emplacements des bases de données :
~/.aether/aetheraudit.db~/.aether/aether_github_audit.dbToute interaction se fait via des raccourcis clavier depuis l'écran principal :
n — Nouvel auditAssistant en plusieurs étapes avec trois types de source :
Fichier ou répertoire local :
URL GitHub :
a/n pour tout/rien)URL d'explorateur de blocs / adresse :
r — Reprendre un auditTableau de tous les audits GitHub en cours avec nom du projet, périmètre, progression (N/M contrats) et heure de dernière mise à jour. Sélectionnez-en un pour vérifier les contrats en attente et le lancer comme tâche en arrière-plan.
h — Historique des auditsVue unifiée de tous les audits passés des deux bases de données (locale + GitHub). Sélectionnez une entrée pour afficher un sous-menu :
p — Générer des PoCsSélectionnez un projet, configurez le nombre maximal d'éléments, la sévérité minimale et le filtrage par consensus uniquement. La génération de PoC s'exécute comme tâche en arrière-plan — surveillez la progression dans le tableau des tâches.
o — RapportsSélectionnez le projet, le périmètre et le format (markdown/json/html/tous). La génération du rapport s'exécute comme tâche en arrière-plan.
f — Récupérer un contratChoisissez un réseau parmi plus de 10 chaînes prises en charge, saisissez une adresse ou collez une URL d'explorateur, récupérez le code source vérifié et, éventuellement, auditez-le immédiatement.
s — ParamètresEntrée — Détail de la tâcheAppuyez sur Entrée sur n'importe quelle ligne du tableau des tâches pour voir :
q — QuitterQuitte la TUI. Si des tâches sont en cours, demande une confirmation.
build_cfg() construit des blocs de base avec arbres de dominance et détection des en-têtes de boucle ; analyse des blocs d'assembly ; contexte CFG injecté dans l'analyse approfondie et la propagation de taintRelatedContractResolver pour le contexte de dépendancesHalmosRunner + HalmosPropertyGenerator pour la vérification formelle des invariants ; intégré à l'étape de validation 1.95 ; dégradation élégante si Halmos n'est pas installéAccuracyTracker enregistre les résultats des soumissions et génère des poids de confiance par détecteur ; calibration de la sévérité à partir des données historiques injectée dans l'analyse approfondie./output/ — Racine générale de sortie./output/reports/ — Rapports générés./output/pocs/ — Suites de PoCs Foundry générées./output/exploit_tests/ — Résultats des tests d'exploitsaether.py — Point d'entrée unique ; lance la TUI Textualcli/interactive_menu.py — Fine couche d'adaptation créant JobManager + AetherAppcli/tui/app.py — AetherApp(App) — application Textual principale avec raccourcis clavier et minuteur d'actualisation d'une secondecli/tui/)MainScreen (tableau des tâches + barre de coûts), JobDetailScreen (journal en direct + phase + métadonnées), NewAuditScreen, HistoryScreen, ResumeScreen, PoCScreen, ReportsScreen, FetchScreen, SettingsScreenJobsTable (DataTable interrogeant JobManager), CostBar (coût de session par fournisseur), LogViewer (RichLog avec actualisation incrémentale), PhaseBar (progression par blocs Unicode)ConfirmDialog, , , , , — toutes des sous-classes de ModalScreencli/audit_runner.py — classe AuditRunner exécutant les audits, PoCs, rapports et audits GitHub dans des threads daemoncore/job_manager.py — singleton JobManager : registre des tâches de session (QUEUED/RUNNING/COMPLETED/FAILED/CANCELLED)core/audit_progress.py — ContractAuditStatus avec tampons de journal par tâche, ThreadDemuxWriter pour la capture stdout/stderrcore/llm_usage_tracker.py — singleton thread-safe avec snapshot() pour les écarts de coût par tâchecli/main.py — classe AetherCLI (~2600 lignes) — orchestrateur d'audit interne utilisé par AuditRunnercore/enhanced_audit_engine.py — Moteur d'audit principal avec intégration de l'analyse approfondiecore/post_audit_summary.py — panneau post-audit avec répartition des coûts par fournisseurcore/deep_analysis_engine.py — pipeline LLM en 6 passes plus Pass 3.5 (inter-contrats) : comprendre → surface d'attaque → invariants → inter-contrats → inter-fonctions → adversarial → cas limites ; sélection du niveau de modèle, mise en cache, exemples few-shot, application du raisonnement en chaîne, contexte CFG dans la passe 2, calibration ML de la sévérité dans la passe 5, contexte des contrats liés par passecore/protocol_archetypes.py — détection d'archétypes de protocoles (14 types dont LIQUID_STAKING, PERPETUAL_DEX, CDP_STABLECOIN, YIELD_AGGREGATOR) avec listes de contrôle de vulnérabilités par archétypecore/exploit_knowledge_base.py — plus de 75 schémas d'exploits réels catégorisés dans 14 catégories (dont CROSS_CONTRACT, SIGNATURE_AUTH, TOKEN_INTEGRATION, PROXY_UPGRADE, TYPE_SAFETY)core/invariant_engine.py — extraction d'invariants (NatSpec + LLM + schéma) et génération de tests d'invariants Foundry + génération de propriétés Halmoscore/solidity_ast.py — analyse AST Solidity via py-solc-x avec repli regex pour l'héritage, la visibilité, la disposition du stockage, le suivi des lectures/écritures d'état ; construction du graphe de flux de contrôle (build_cfg(), get_dominators(), get_loop_headers())core/taint_analyzer.py — analyse de flux de données / taint avec 8 types de sources, 12 types de sinks, détection de sanitizers, suivi inter-contrats, propagation CFG sensible aux branchescore/enhanced_vulnerability_detector.py — détecteur principal avec plus de 60 schémascore/business_logic_detector.py, core/state_management_detector.py, core/data_inconsistency_detector.py, core/centralization_detector.py, core/looping_detector.py — détecteurs inspirés de Movecore/defi_vulnerability_detector.py, core/mev_detector.py, core/oracle_manipulation_detector.py — détecteurs spécifiques DeFi (détecteur DeFi intégré au moteur amélioré en v3.5)core/arithmetic_analyzer.py, core/precision_analyzer.py, core/gas_analyzer.py, , — analyseurs spécialisés (analyseur de précision amélioré avec détection de l'inflation des parts, de la direction d'arrondi, de la troncature des divisions, de l'exploitation de poussière et des dépassements d'accumulateur)core/validation_pipeline.py — pipeline en plusieurs étapes : vérification des protections intégrées, détection de gouvernance, validation sensible au taint (étape 1.85), vérification symbolique Halmos (étape 1.95), vérification de déploiement, validation localecore/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 — nœud de pipeline HalmosSymbolicNode pour la validation par exécution symboliquecore/enhanced_llm_analyzer.py — analyse LLM structurée (GPT/Gemini/Claude) avec sortie JSON et rotation multi-fournisseurscore/enhanced_prompts.py — modèles de prompts de production avec chargement dynamique des schémas d'exploits depuis la base de connaissances, exemples few-shot, calibration de la sévérité et application du raisonnement en chaînecore/foundry_poc_generator.py (~8000 lignes) — analyse basée sur l'AST, retour de compilation itératif (jusqu'à 5 tentatives), exécution automatique via forge test --json avec analyse de PoCTestResult et prise en charge du mode forkcore/llm_foundry_generator.py — génération de tests basée sur LLM avec documentation d'API mock et schémas setUp recommandéscore/enhanced_foundry_integration.py — validation et formatage Foundrycore/poc_templates.py — modèles de contrats mock (MockERC20, MockOracle, MockWETH, MockFlashLoanProvider)core/poc_setup_generator.py — génération intelligente de setUp() : extraction des paramètres du constructeur, déploiement de mocks, gestion des contrats upgradeables, mint et approbations de jetonscore/database_manager.py — DatabaseManager (audits locaux) + AetherDatabase (audits GitHub)core/analysis_cache.py — mise en cache intelligente pour une analyse répétée 2 fois plus rapidecore/accuracy_tracker.py — boucle de rétroaction ML : résultats des soumissions, gains de bounties, statistiques de précision par détecteur, génération des poids de confiancecore/github_auditor.py — clone des dépôts, détection des frameworks, découverte des contrats, coordination de l'analysecore/etherscan_fetcher.py, core/basescan_fetcher.py — récupération des contrats vérifiés depuis les explorateurs de blocscore/exploit_tester.py — validation des exploits contre des forks AnvilLes flux d'audit sont définis dans des configurations YAML (configs/). Pipeline d'audit amélioré :
FileReaderNode -> StaticAnalysisNode -> LLMAnalysisNode -> EnhancedExploitabilityNode -> [FixGeneratorNode -> ValidationNode -> HalmosSymbolicNode] -> ReportNode
2059 tests répartis dans 76 fichiers de test, exécutés en ~23 secondes :```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
## Dépannage
- **Foundry introuvable** — Vérifiez que `forge`/`anvil` sont installés et dans le `PATH` (`foundryup` et `export PATH="$PATH:$HOME/.foundry/bin"`)
- **solc introuvable** — Installez `solc-select` et les versions requises : `solc-select install 0.8.20 latest`
- **Fonctionnalités LLM non fonctionnelles** — Vérifiez que les clés API sont définies. Certains modèles peuvent être indisponibles dans votre compte/région ; le système bascule automatiquement en mode de repli
- **Base de données introuvable** — Pour les rapports GitHub, assurez-vous que le workflow d'audit a été exécuté au préalable
- **Textual ne se charge pas** — Exécutez `pip install textual>=1.0.0` s'il manque
---
## Journal des modifications
### v4.7 — Auto-exécution des PoC, vérification symbolique Halmos, analyse CFG et boucle de rétroaction ML
- **Auto-exécution des PoC** — les PoC Foundry générés sont automatiquement compilés et exécutés via `forge test --json` avec l'analyse des `PoCTestResult` et le support du mode fork ; phase `POC_TESTING` pour le suivi en direct dans la TUI
- **Exécution symbolique Halmos** — nœud de pipeline `HalmosRunner`, `HalmosPropertyGenerator` et `HalmosSymbolicNode` (étape de validation 1.95) pour la vérification formelle des invariants ; dégradation progressive si Halmos n'est pas installé
- **Analyse du graphe de flux de contrôle** — `BasicBlock`, `CFGEdge`, `ControlFlowGraph` avec `build_cfg()`, arbres de dominance, détection des en-têtes de boucle, analyse des blocs d'assembly ; contexte CFG injecté dans la passe 2 d'analyse approfondie ; propagation de taint sensible aux branches
- **Boucle de rétroaction ML** — `AccuracyTracker` enregistre les résultats des soumissions avec `get_detector_accuracy()` et `get_detector_weights()` pour des statistiques par détecteur ; ajustement des poids de confiance dans `EnhancedVulnerabilityDetector` ; calibration de la sévérité dans la passe 5 d'analyse approfondie
- **Contexte des contrats liés** — `RelatedContractResolver` découvre les contrats parents, interfaces, bibliothèques et dépendances avec un système de budget par passe (200K/100K/50K caractères) ; résumé de la bibliothèque standard ; découverte de contrats frères au sein d'un même fichier
- **Nettoyage de la dette technique** — 8 500 lignes de code mort supprimées : suppression de `ai_ensemble.py`, `audit_engine.py`, `fork_verifier.py` ; retrait de toutes les références ai_ensemble du CLI, de l'exécuteur d'audit, des écrans TUI et du générateur de rapports
- **2059 tests** réussis dans 76 fichiers de test
### v4.0 — Analyse AST Solidity, analyse de taint et suivi du flux de données
- **Analyseur AST Solidity** — intégration complète de solc via py-solc-x pour une résolution correcte de l'héritage, la visibilité des fonctions, la disposition du stockage, le suivi des lectures/écritures d'état ; repli élégant sur les regex
- **Moteur d'analyse de taint** — suit les entrées contrôlées par l'utilisateur à travers 8 types de sources vers 12 sinks dangereux avec détection des assainisseurs et suivi inter-contrats
- **Intégration au pipeline** — les données AST alimentent la passe 1, les données de taint alimentent la passe 2, étape de validation 1.85 sensible au taint
- **1839 tests** réussis dans 67 fichiers de test (~23 secondes)
### v3.8 — Détection améliorée et génération de PoC
- **Analyse inter-contrats** — nouvelle passe 3.5 avec analyseur de relations inter-contrats, détection des frontières de confiance, regroupement union-find
- **Base de données des particularités de jetons** — 12 catégories de comportements ERC-20 non standard (fee-on-transfer, rebasing, ERC-777, etc.)
- **Moteur de précision amélioré** — détection de l'inflation des parts, analyse du sens d'arrondi, suivi des troncatures de division, exploitation du dust, dépassement d'accumulateur
- **Génération de PoC exécutables** — bibliothèque de contrats simulés (ERC20, Oracle, WETH, FlashLoan), setUp() intelligent, tentatives de compilation maximales 3→5
- **Exemples few-shot** dans les passes d'analyse approfondie 3, 4, 5 avec de vraies vulnérabilités et des exemples de faux positifs
- **Calibration de la sévérité** — seuils concrets (Critique >1 M$, Élevée >100 K$, Moyenne >10 K$, Faible théorique)
- **Imposition de la chaîne de raisonnement** — raisonnement obligatoire en 5 étapes avant la sortie JSON
- **Ensemble IA retiré** — remplacé par une rotation multi-fournisseurs dans les passes d'analyse approfondie
- **Rotation multi-fournisseurs** — Gemini Flash (passes économiques), Anthropic Claude (raisonnement), OpenAI GPT (diversité)
- **1682 tests** réussis
### v3.7 — Archétypes étendus et schémas d'exploitation
- **4 nouveaux archétypes de protocole** — LIQUID_STAKING, PERPETUAL_DEX, CDP_STABLECOIN, YIELD_AGGREGATOR (10→14 au total)
- **25 nouveaux schémas d'exploitation** — catégories CROSS_CONTRACT, SIGNATURE_AUTH, TOKEN_INTEGRATION, PROXY_UPGRADE, TYPE_SAFETY (50→75 au total)
- **Scanner de contrats amélioré** — les contrats abstraits sont désormais notés, seuils ajustés pour le support des monorepos
- **1528 tests** réussis
### v3.5.2 — Réduction des faux positifs
- **Détection des scripts dans la découverte de contrats** — les fichiers sous `script/`/`scripts/`, les fichiers `.s.sol`, et les contrats qui importent `forge-std/Script.sol` ou qui héritent de `is Script` sont marqués comme scripts de déploiement et exclus de l'analyse des vulnérabilités par LLM. Élimine toute une classe de faux positifs provenant des helpers de déploiement Foundry analysés comme code de production
- **Marqueurs de contexte de fichier dans les invites LLM** — le contenu combiné inclut désormais des marqueurs `// FILE: <name>` par fichier, et les passes d'analyse approfondie 1 et 3 reçoivent un en-tête `## Project Files` étiquetant chaque fichier comme `[PRODUCTION]` ou `[DEPLOYMENT SCRIPT]` afin que les LLM se concentrent sur le bon code
- **Détection dynamique des modificateurs** — `GovernanceDetector` extrait désormais les modificateurs de contrôle d'accès personnalisés définis dans le contrat (par ex. `onlyDistributor`, `onlyMinter`, `authorized`) en recherchant les définitions de modificateurs avec le préfixe `only` ou des vérifications `msg.sender`. Ceux-ci sont fusionnés avec la liste codée en dur des modificateurs pour `has_access_control()` et `is_governance_function()`
- **Déduplication à l'échelle de la fonction** — `VulnerabilityDeduplicator` regroupe désormais les constats par `(function_name, vuln_type)` lorsque le code du contrat est disponible, remplaçant la correspondance fragile par ligne exacte qui manquait les doublons de lignes adjacentes dans la même fonction. Repli sur un regroupement par compartiments de 20 lignes lorsque le contexte de la fonction est indisponible
- **Tolérance de lignes élargie pour l'ensemble IA** — la tolérance de `_findings_match_fuzzy()` passe de ±5 à ±15 lignes pour détecter les doublons dans une même fonction entre agents
- **Schéma de faux positif du constructeur atomique** — `_check_constructor_context()` détecte désormais lorsqu'un contrat est déployé (`new`/`Create2`) et initialisé (`.initialize()`) dans le même constructeur, marquant les préoccupations de front-running comme faux positifs puisque les opérations sont atomiques
- **Schéma de validation LLM n°18** — ajout de « Atomic Deployment + Initialization » à la liste de contrôle des 18 schémas de faux positifs dans l'invite de validation LLM
- **1489 tests** réussis dans 56 fichiers de test (~40 secondes), contre 1461 auparavant
### v3.5 — Moteur d'analyse approfondie
- **Pipeline d'analyse approfondie en 6 passes** — remplace les appels LLM uniques par un raisonnement structuré multi-passes : Compréhension du protocole → Cartographie de la surface d'attaque → Analyse des violations d'invariants → Interaction inter-fonctions → Modélisation adverse → Cas limites et extrêmes. Chaque passe reçoit le contexte accumulé des passes précédentes. Passes 1-2 mises en cache par hash de contenu pour des ré-audits rapides
- **Détection d'archétype de protocole** — identifie automatiquement le type de protocole (Vault ERC-4626, Pool de prêt, DEX/AMM, Pont, Staking, Gouvernance, Oracle, Place de marché NFT, Jeton, Carnet d'ordres) avec des listes de contrôle de vulnérabilités par archétype issues d'exploits réels
- **Base de connaissances des exploits** — 50+ schémas d'exploitation catégorisés dans 9 catégories (Inflation/Parts, Réentrance, Oracle, Gouvernance, Pont, Précision/Arrondi, Contrôle d'accès, Économique/DeFi, Logique) remplaçant la liste statique de 10 schémas. Chaque schéma inclut des indicateurs de code, les protections manquantes, le mécanisme d'exploitation étape par étape, des précédents réels avec montants en dollars et l'applicabilité par archétype
- **Moteur d'invariants** — extrait les invariants du protocole à partir des balises NatSpec `@invariant`, de l'analyse LLM et de 6 détecteurs de schémas courants (conservation du vault, suivi des soldes, comptabilité de l'offre, produit constant AMM, collatéralisation des prêts, récompenses de staking). Génère des suites de tests Foundry `invariant_*()` comme preuves de vérification formelle allégée
- **Calibration de sévérité contextuelle** — remplace les réductions de sévérité systématiques par des vérifications du contexte de risque. Les constats dans les blocs `unchecked{}`, près de transferts de valeur (`call{value:}`, `_mint`, `safeTransfer`), de calculs de prix ou de contextes oracle conservent leur sévérité d'origine
- **Correction de la porte de validation** — les constats `"pending"` passent désormais à l'analyse LLM avec le drapeau `needs_llm_validation`. Seuls les constats explicitement `"false_positive"` sont écartés (auparavant, tous les constats non-`"validated"` étaient silencieusement filtrés)
- **Pénalité de confiance adaptée aux spécialistes** — les constats d'un agent unique correspondant à sa spécialisation (par ex., AnthropicReasoningSpecialist + attaques économiques) reçoivent une pénalité de -0,05 ; les constats non spécialisés conservent -0,15
- **Correction de la déduplication par compartiments de lignes** — suppression du compartimentage `(line // 10) * 10` qui causait des problèmes de frontières arbitraires (lignes 9 et 11 dans des compartiments différents). La déduplication n'utilise désormais que le type de vulnérabilité normalisé, `_findings_match_fuzzy()` gérant la proximité des lignes
- **Intégration du détecteur DeFi** — `DeFiVulnerabilityDetector` (analyse sémantique de présence/absence en deux étapes) s'exécute désormais dans le moteur d'audit amélioré aux côtés de `EnhancedVulnerabilityDetector`
- **Schémas d'exploitation dynamiques dans les invites** — `enhanced_prompts.py` charge désormais les schémas de ExploitKnowledgeBase filtrés par domaine d'intérêt, avec repli sur les schémas statiques
- **1461 tests** réussis dans 55 fichiers de test (~50 secondes)
### v3.2 — Statistiques des tâches et correctifs d'interface
- **Correction des statistiques de tâche (constats/coût/LLM) qui s'affichaient toujours à zéro** — le worker d'audit capture désormais le dict de résultats de `run_audit()` pour extraire le nombre de constats ; suppression de `LLMUsageTracker.reset()` qui orphelinait les références singleton ; les 4 types de workers calculent les statistiques par tâche à partir des deltas d'instantanés
- **Correction de l'artefact de rafraîchissement de l'interface lors du changement de fenêtre** — remplacement des conteneurs défilants par un simple `Container` + `overflow: hidden` dans JobDetailScreen pour empêcher les trames de compositeur obsolètes
- **Déplacement de « Job Details » vers border_title** pour un rendu plus propre du panneau de métadonnées
- Suppression de `CLAUDE.md` du suivi git
### v3.0 — TUI Textual entièrement intégrée
- **Zéro appel `app.suspend()`** — la TUI ne retombe jamais sur un terminal brut ; chaque opération s'exécute en ligne
- **Génération de PoC en arrière-plan** — s'exécute en tant que thread daemon via `AuditRunner.start_poc_generation()` avec sortie en direct dans JobDetailScreen
- **Génération de rapports en arrière-plan** — s'exécute en tant que thread daemon via `AuditRunner.start_report_generation()` avec sortie en direct
- **Audits GitHub en arrière-plan** — sélection du périmètre via les dialogues Textual, l'audit s'exécute en tant que thread daemon via `AuditRunner.start_github_audit()`
- **ContractSelectorDialog** — modale multi-sélection filtrable quasi plein écran remplaçant `ScopeManager.interactive_select()` basé sur curses. Espace pour basculer, `a`/`n` pour tout/sélectionner aucun, taper pour filtrer, contrats déjà audités avec code couleur
- **GitHubAuditHelper** — wrapper décomposé autour de `GitHubAuditor`/`AetherDatabase` fournissant des opérations atomiques (`clone_and_discover`, `get_scope_state`, `save_new_scope`, `get_pending_contracts`, `handle_reaudit`) appelables depuis les écrans Textual
- **Paramètres intégrés** — configuration des clés API et des modèles via TextInputDialog/SelectDialog natifs, aucun assistant de configuration externe requis
- **Gestion intégrée du périmètre GitHub** — continuer, ré-auditer ou créer un nouveau périmètre via SelectDialog ; sélection des contrats via ContractSelectorDialog
- **6 écrans réécrits** — PoCScreen, ReportsScreen, SettingsScreen, NewAuditScreen, HistoryScreen, ResumeScreen — tous entièrement intégrés
- **770 tests** réussis dans 50 fichiers de test
### v2.2 — Tableau de bord TUI Textual
- TUI Textual plein écran avec application persistante, raccourcis clavier et minuteur de rafraîchissement d'une seconde
- MainScreen avec tableau des tâches en direct et barre de coût de session
- JobDetailScreen avec visualiseur de journaux en direct, barre de progression des phases et métadonnées
- Dialogues modaux (confirmation, saisie de texte, sélection, case à cocher, sélecteur de chemin) remplaçant les invites questionary
- Exécution d'audit en arrière-plan via AuditRunner avec capture de sortie ThreadDemuxWriter
- Singleton JobManager pour le registre des tâches de session
- Suivi du coût par tâche via les instantanés LLMUsageTracker
### v2.1 — Audits parallèles, suppression de Slither et nettoyage des tests
- Moteur d'audit parallèle — exécute plusieurs contrats simultanément avec `ThreadPoolExecutor`, configurable jusqu'à 8 workers parallèles
- Suivi de progression thread-safe — `ContractAuditStatus` avec verrouillage, `ThreadDemuxWriter` pour le multiplexage de stdout
- Résumé post-audit — vue consolidée des résultats après la fin des audits parallèles
- Suivi d'utilisation LLM — suivi de l'utilisation des jetons, des coûts et des appels API sur les trois fournisseurs
- Slither entièrement supprimé — toutes les dépendances, le code d'intégration et les tests supprimés (~1 200 lignes) ; les détecteurs basés sur des schémas + l'ABI Foundry + les regex sont les seuls outils d'analyse
- Nettoyage de la suite de tests — suppression de 40+ fichiers de test anciens/lents/d'intégration
### v2.0 — TUI à menu interactif
- TUI pilotée par menu interactif comme interface principale
- Assistant d'audit guidé avec sélection de la source, cases à cocher des fonctionnalités et confirmation
- Capacité de reprendre un audit pour les audits GitHub en cours
- Navigateur d'historique d'audit unifié sur les bases locales et GitHub
- Flux de travail intégrés de génération de PoC et de rapports depuis le menu
- Récupération de contrats multi-chaînes avec audit immédiat facultatif
- Gestion des paramètres depuis le menu
- Lancement/retour console depuis le menu
### v1.5 — Support LLM à trois fournisseurs et analyse améliorée
- Intégration d'Anthropic Claude (Sonnet 4.5, Opus 4.6, Haiku 4.5) comme troisième fournisseur LLM
- Ensemble IA de 6 agents spécialisés : 2 OpenAI + 2 Gemini + 2 Anthropic
- Repli automatique inter-fournisseurs pour une disponibilité maximale
- Modèles OpenAI mis à jour (GPT-5.3) et modèles Google Gemini (3.0 Flash/Pro)
- Assistant de configuration mis à jour avec configuration de la clé API Anthropic et sélection du modèle
- Correction de la commande CLI generate-foundry cassée
---
## Licence
Aether est distribué sous la **licence MIT**. Voir le fichier [LICENSE](https://github.com/l33tdawg/aether/blob/HEAD/LICENSE) pour plus de détails.
## Auteur
**Dhillon Andrew Kannabhiran** (@l33tdawg)
- Email: [email protected]
- Twitter: [@l33tdawg](https://twitter.com/l33tdawg)
- GitHub: [@l33tdawg](https://github.com/l33tdawg)
## Contribution
Les contributions sont les bienvenues ! N'hésitez pas à soumettre des issues, à forker le dépôt et à créer des pull requests.
| Catégorie | Sévérité | Exemples de jetons |
|---|
| Frais sur transfert | ÉLEVÉE | USDT, STA, PAXG |
| Jetons rebasés | ÉLEVÉE | stETH, AMPL, OHM |
| Callbacks ERC-777 | ÉLEVÉE | imBTC |
| Flash-mintables | ÉLEVÉE | DAI |
| Retour non standard | MOYENNE | Ancien USDT |
| Jetons avec liste noire | MOYENNE | USDC, USDT |
| Jetons pausables | MOYENNE | USDC |
| Jetons à faible nombre de décimales | MOYENNE | USDC (6), WBTC (8) |
| Hooks de transfert | MOYENNE | LINK (ERC-677) |
| Course d'approbation | FAIBLE | Divers |
| Points d'entrée multiples | FAIBLE | TUSD |
| Jetons évolutifs | FAIBLE | USDC v2 |
| Pass | Objectif | Niveau de modèle |
|---|
| Pass 1 | Compréhension du protocole — ce que le protocole EST, ses invariants, les flux de valeur, les hypothèses de confiance | Économique (mis en cache) |
| Pass 2 | Cartographie de la surface d'attaque — chaque point d'entrée, lectures/écritures d'état, fenêtres de réentrance | Économique (mis en cache) |
| Pass 3 | Analyse des violations d'invariants — vérifier systématiquement chaque invariant contre chaque chemin de code | Puissant |
| Pass 4 | Interaction inter-fonctions — analyse des dépendances d'état, dépendances temporelles, séquences de flash loans | Puissant |
| Pass 5 | Modélisation adverse — perspective explicite de l'attaquant avec flash loans, MEV, comptes multiples | Puissant |
| Pass 6 | Cas limites et extrêmes — premières/dernières opérations, valeurs nulles, valeurs maximales, opérations autoréférentielles | Moyen |
| Archétype | Exemples d'éléments de liste de contrôle |
|---|
| Coffre ERC-4626 | Inflation du premier déposant, sens d'arrondi, manipulation du prix des parts via don |
| Pool de prêt | Manipulation du prix de l'oracle, manipulation du seuil de liquidation, cascade de créances irrécouvrables, manipulation du taux d'intérêt |
| DEX/AMM | Manipulation du premier LP, attaques sandwich, oracle de prix via les réserves |
| Pont | Rejeu inter-chaînes, compromission de validateur, inadéquation du mappage de jetons, falsification de preuve de retrait |
| Staking | Manipulation du calcul des récompenses, débordement du taux de récompense, réentrance lors du unstaking |
| Gouvernance | Attaques de gouvernance par flash loan, contournement du timelock, manipulation du quorum |
| Oracle | Données de prix obsolètes, déviation de prix, indisponibilité du séquenceur L2 |
| Catégorie | Schémas | Exemples |
|---|
| Attaques d'inflation/parts | 6 | Premier déposant ERC-4626, inflation de jetons LP, manipulation par dons |
| Réentrance | 7 | Classique, lecture seule, inter-fonctions, inter-contrats, hooks ERC-777/1155, callbacks de flash loan |
| Oracle | 5 | Manipulation du prix spot, manipulation du TWAP, obsolescence, inadéquation des décimales, séquenceur L2 |
| Gouvernance | 4 | Vote par flash loan (Beanstalk), contournement du timelock, manipulation du quorum |
| Pont | 5 | Rejeu de message (Nomad), compromission de validateur (Ronin), mappage de jetons (Wormhole) |
| Précision/Arrondi | 4 | Sens d'arrondi, débordement non vérifié, frais sur transfert, dérive des jetons rebasés |
| Contrôle d'accès | 5 | Proxy non initialisé, collision de stockage, collision de sélecteur, injection delegatecall |
| Économique/DeFi | 8 | Attaques sandwich, liquidité JIT, cascade de créances irrécouvrables, bombe returndata, rejeu de signature |
| Logique | 6 | Erreur off-by-one, absence de deadline/slippage, retours non vérifiés, comptabilité des auto-transferts |
pofsq| Audits de dépôts GitHub avec portée présélectionnée |
poc | Génération de preuves de concept Foundry |
report | Génération de rapports d'audit (markdown/json/html) |
RelatedContractResolver découvre les contrats parents, interfaces, bibliothèques et dépendances ; système de budget par passe avec résumé des bibliothèques standardforge test --json avec prise en charge du mode forkTextInputDialogSelectDialogCheckboxDialogPathDialogContractSelectorDialogGitHubAuditHelper — opérations d'audit GitHub décomposées pour l'intégration TUItheme.tcss — CSS Textual à thème cyancore/cross_contract_analyzer.py — analyse des relations inter-contrats avec détection des frontières de confiance, regroupement union-find et RelatedContractResolver pour le contexte de dépendancescore/token_quirks.py — base de données des particularités de jetons (12 catégories de comportements ERC-20 non standards)core/halmos_runner.py — exécuteur d'exécution symbolique Halmos pour la vérification formellecore/halmos_property_generator.py — génère automatiquement les propriétés de vérification Halmos à partir des invariantscore/accuracy_tracker.py — boucle de rétroaction ML : suivi de précision par détecteur, ajustement des poids de confiance, calibration de la sévéritécore/input_validation_detector.pycore/data_decoding_analyzer.pycore/token_quirks.py