Gaia - Découverte de la surface d'attaque et triage assisté par IA
Gaia est un outil d'analyse de surface d'attaque orienté CLI qui découvre les points de terminaison et les paramètres, réduit le bruit et met en évidence les risques pertinents pour la sécurité à l'aide d'heuristiques statiques et d'un raisonnement IA optionnel. Il orchestre Katana, gau, arjun, linkfinder et uro pour transformer des collections brutes d'URL en une vue normalisée et consciente des risques, adaptée aux workflows de bug bounty, AppSec et ingénierie de sécurité.
Gaia n'est pas un scanner de vulnérabilités automatisé. Il cartographie la surface d'attaque, applique des heuristiques déterministes et peut utiliser des LLM pour générer des conseils de test. Les résultats sont des indications, pas des vulnérabilités confirmées. Une validation manuelle est requise. La sortie IA est consultative et non autoritaire ; utilisez-la pour décider où concentrer vos efforts et comment tester.

Ce que fait Gaia
Gaia se concentre sur le signal plutôt que le bruit. Il :
- Explore les applications en direct
- Collecte les URL historiques
- Extrait les paramètres
- Normalise et déduplique les points de terminaison
- Analyse le JavaScript pour les points de terminaison, URL, secrets, emails et fichiers
- Applique des heuristiques de sécurité déterministes
- Enrichit optionnellement les résultats avec un raisonnement basé sur LLM (limité et optimisé)
Le résultat est une carte rapide et lisible de ce qui compte dans la surface d'attaque d'une application.
À qui cela s'adresse
- Chasseurs de bug bounty effectuant une reconnaissance et un triage rapides
- Ingénieurs AppSec cartographiant les surfaces d'attaque
- Ingénieurs en sécurité automatisant l'analyse précoce
- Développeurs souhaitant une visibilité sur les points de terminaison et paramètres exposés
Fonctionnalités clés
- Exploration en direct via Katana
- Découverte d'URL historiques via gau
- Découverte de paramètres via arjun + analyse de requête
- Normalisation et déduplication d'URL avec uro
- Analyseur JS pour extraction JS à bruit réduit
- Heuristiques de risque statiques (IDOR, SSRF, auth, traversal, injection, etc.)
- Analyse assistée par LLM optionnelle (limitée, minifiée, rapide)
- Réduction du bruit : filtrage des actifs statiques, filtrage des paramètres de suivi/inutiles
- Conception axée sur la performance : appels IA limités, charges utiles compactes, instantanés de réponse légers
- Résoudre les outils externes
- Explorer la cible (Katana)
- Collecter les URL historiques (gau)
- Analyse JS
- Extraire les paramètres (arjun + analyse)
- Normaliser et dédupliquer les URL (uro)
- Analyser (statique + IA optionnelle)
- Générer le rapport
Chaque étape indique combien d'URL ou de paramètres elle a découverts.
Utilisation
Scan de base
gaia -u https://example.com
Désactiver des étapes spécifiques
gaia -u https://example.com --no-gau --no-ai
Lire les URL depuis stdin
cat urls.txt | gaia --stdin
Exemple d'exécution CLI
Démo CLI Gaia – exploration, normalisation et analyse assistée par IA
Installation
Prérequis
- Python 3.10+
- (Optionnel) virtualenv
- Chaîne d'outils Go (pour l'installation automatique de katana / gau)
Configuration
python3 -m venv venv
source venv/bin/activate
pip install -e .
Les outils externes (katana, gau, arjun, linkfinder, uro) peuvent être installés automatiquement si activé.
Drapeaux CLI
- -u, --url URL cible
- --stdin Lire les URL depuis stdin
- --no-gau Désactiver la collecte d'URL historiques
- --no-arjun Désactiver la découverte de paramètres arjun
- --no-linkfinder Désactiver la découverte JS linkfinder
- --no-uro Désactiver la normalisation d'URL
- --no-js-analyzer Désactiver l'étape d'analyse JS
- --js-max-fetches N Nombre max de fichiers JS à récupérer pour l'analyse
- --no-ai Désactiver le raisonnement IA
- --show-assets Afficher les actifs statiques dans la sortie
- --only-params Afficher uniquement les points de terminaison avec paramètres
- --auto-install Installer automatiquement les outils manquants
- --max-urls N Limiter les URL collectées
- --format console|md|json Format de sortie
- --output PATH Écrire le rapport dans un fichier
- -h, --help Afficher l'aide
Variables d'environnement
AI / LLM
- GAIA_LLM_MODEL Nom du modèle pour LiteLLM (requis pour activer l'IA)
- GAIA_LLM_MAX_ENDPOINTS Nombre max de points de terminaison envoyés au LLM (défaut : 15)
- GAIA_LLM_INCLUDE_RESPONSES Inclure les instantanés de réponse HTTP (défaut : true)
- GAIA_LLM_MAX_RESPONSES Nombre max d'instantanés à récupérer (défaut : 50)
- GAIA_LLM_MAX_BODY_CHARS Nombre max de caractères du corps de réponse (défaut : 4000)
Feature Toggles
- GAIA_DISABLE_AI
- GAIA_DISABLE_GAU
- GAIA_DISABLE_ARJUN
- GAIA_DISABLE_LINKFINDER
- GAIA_DISABLE_URO
- GAIA_DISABLE_JS_ANALYZER
Debugging
- GAIA_VERBOSE
- GAIA_DEBUG
- GAIA_LLM_DEBUG
- GAIA_JS_MAX_FETCHES
- GAIA_JS_MAX_CHARS
Notes et modes :
- Mode rapide : désactiver l'IA et les outils historiques (--no-ai --no-gau) pour une reconnaissance rapide.
- Mode profond : activer tous les outils et l'IA avec GAIA_LLM_MODEL défini ; augmenter GAIA_LLM_MAX_ENDPOINTS si vous avez besoin d'une couverture IA plus large.
- Mode triage : garder l'IA activée mais utiliser les paramètres par défaut (points de terminaison limités, charges utiles minifiées) pour un équilibre entre vitesse et couverture.
Configuration LiteLLM / IA
L'IA est optionnelle. Gaia fonctionne parfaitement sans.
Using OpenAI:
- GAIA_LLM_MODEL (example: gpt-4o-mini or gpt-4.1)
- OPENAI_API_KEY : LiteLLM achemine les requêtes vers OpenAI en fonction de ces variables.
Using Google Gemini
- GAIA_LLM_MODEL (example: gemini/gemini-1.5-pro)
- GOOGLE_API_KEY : LiteLLM achemine les requêtes vers Gemini en fonction de ces variables.
Using Local Models (Ollama / LM Studio)
- GAIA_LLM_MODEL (example: ollama/llama3 or ollama/qwen2.5)
- LiteLLM se connecte au point de terminaison local ; aucune clé API requise pour les modèles locaux.
Sortie
Console Output
- Tableau des points de terminaison (filtré, lisible)
- Étiquettes de risque par paramètre
- Statistiques récapitulatives
- Indicateur de progression IA (une ligne)
Parameter Notes
À la fin du rapport, Gaia imprime des notes de paramètres agrégées :
- Pourquoi un paramètre semble risqué
- Où il a été vu
- Idées de test pratiques
Autres formats
- JSON (lisible par machine)
- Markdown (prêt pour le rapport)
- Les appels IA sont strictement limités
- Les charges utiles sont minifiées et les clés raccourcies
- Les actifs statiques et les paramètres inutiles sont ignorés
- Les réponses 2xx envoient uniquement le type de contenu + un extrait court
- Conçu pour rester rapide même sur de grandes surfaces
Contribution
Les contributions sont les bienvenues. Veuillez garder les PR ciblées et lisibles. Les améliorations des heuristiques, des performances, du filtrage, des invites IA et de la documentation sont encouragées. Pour les changements plus importants, ouvrez d'abord une issue pour en discuter.
Licence
MIT
Avertissement
Gaia est un outil de reconnaissance et d'analyse. Testez toujours de manière responsable et uniquement contre les systèmes que vous êtes autorisé à évaluer.