Gaia - Angriffsflächen-Entdeckung & KI-gestützte Triage
Gaia ist ein CLI-first Tool zur Analyse von Angriffsflächen, das Endpunkte und Parameter entdeckt, Rauschen reduziert und sicherheitsrelevante Risiken mithilfe statischer Heuristiken und optionaler KI-Argumentation hervorhebt. Es orchestriert Katana, gau, arjun, linkfinder und uro, um rohe URL-Sammlungen in eine normalisierte, risikobewusste Ansicht zu überführen, die sich für Bug Bounty, AppSec und Security-Engineering-Workflows eignet.
Gaia ist kein automatischer Schwachstellenscanner. Es kartiert die Angriffsfläche, wendet deterministische Heuristiken an und kann LLMs nutzen, um Testhinweise zu generieren. Die Ergebnisse sind Hinweise, keine bestätigten Schwachstellen. Eine manuelle Validierung ist erforderlich. KI-Ausgaben sind beratend und nicht autoritativ; nutze sie, um zu entscheiden, worauf du dich konzentrieren und wie du testen solltest.

Was Gaia tut
Gaia konzentriert sich auf Signal statt Rauschen. Es:
- Crawlt Live-Anwendungen
- Sammelt historische URLs
- Extrahiert Parameter
- Normalisiert und dedupliziert Endpunkte
- Analysiert JavaScript auf Endpunkte, URLs, Secrets, E-Mails und Dateien
- Wendet deterministische Sicherheitsheuristiken an
- Ergänzt Ergebnisse optional um LLM-basierte Argumentation (begrenzt & optimiert)
Das Ergebnis ist eine schnelle, lesbare Karte dessen, was in der Angriffsfläche einer Anwendung wichtig ist.
Für wen es gedacht ist
- Bug-Bounty-Jäger, die schnelle Recon und Triage betreiben
- AppSec-Ingenieure, die Angriffsflächen kartieren
- Security-Ingenieure, die die frühe Analysephase automatisieren
- Entwickler, die Sichtbarkeit über exponierte Endpunkte und Parameter wünschen
Hauptfunktionen
- Live-Crawling über Katana
- Historische URL-Erkennung über gau
- Parametererkennung über arjun + Query-Parsing
- URL-Normalisierung und Deduplizierung mit uro
- JS-Analyzer für rauschreduzierte JS-Extraktion
- Statische Risikoheuristiken (IDOR, SSRF, Auth, Traversal, Injection usw.)
- Optionale LLM-gestützte Analyse (gedeckelt, minifiziert, schnell)
- Rauschreduzierung: Filterung statischer Assets, Filterung von Tracking-/Junk-Parametern
- Performance-orientiertes Design: begrenzte KI-Aufrufe, kompakte Payloads, schlanke Antwort-Snapshots
Wie es funktioniert (Pipeline)
- Externe Tools auflösen
- Ziel crawlen (Katana)
- Historische URLs sammeln (gau)
- JS-Analyse
- Parameter extrahieren (arjun + Parsing)
- URLs normalisieren & deduplizieren (uro)
- Analysieren (statisch + optional KI)
- Bericht rendern
Jede Stufe meldet, wie viele URLs oder Parameter sie entdeckt hat.
Verwendung
Basis-Scan
gaia -u https://example.com
Bestimmte Stufen deaktivieren
gaia -u https://example.com --no-gau --no-ai
URLs von stdin lesen
cat urls.txt | gaia --stdin
Beispiel-CLI-Lauf
Gaia CLI-Demo – Crawling, Normalisierung und KI-gestützte Analyse
Installation
Anforderungen
- Python 3.10+
- (Optional) virtualenv
- Go-Toolchain (für die automatische Installation von katana / gau)
Einrichtung
python3 -m venv venv
source venv/bin/activate
pip install -e .
Externe Tools (katana, gau, arjun, linkfinder, uro) können bei Bedarf automatisch installiert werden, sofern aktiviert.
CLI-Flags
- -u, --url Ziel-URL
- --stdin URLs von stdin lesen
- --no-gau Historische URL-Sammlung deaktivieren
- --no-arjun arjun-Parametererkennung deaktivieren
- --no-linkfinder linkfinder-JS-Erkennung deaktivieren
- --no-uro URL-Normalisierung deaktivieren
- --no-js-analyzer JS-Analyzer-Stufe deaktivieren
- --js-max-fetches N Maximale Anzahl abzurufender JS-Dateien für die Analyse
- --no-ai KI-Argumentation deaktivieren
- --show-assets Statische Assets in der Ausgabe anzeigen
- --only-params Nur Endpunkte mit Parametern anzeigen
- --auto-install Fehlende Tools automatisch installieren
- --max-urls N Gesammelte URLs begrenzen
- --format console|md|json Ausgabeformat
- --output PATH Bericht in Datei schreiben
- -h, --help Hilfe anzeigen
Umgebungsvariablen
KI / LLM
- GAIA_LLM_MODEL Modellname für LiteLLM (erforderlich, um KI zu aktivieren)
- GAIA_LLM_MAX_ENDPOINTS Maximale Anzahl an Endpunkten, die an das LLM gesendet werden (Standard: 15)
- GAIA_LLM_INCLUDE_RESPONSES HTTP-Antwort-Snapshots einbeziehen (Standard: true)
- GAIA_LLM_MAX_RESPONSES Maximale Anzahl abzurufender Snapshots (Standard: 50)
- GAIA_LLM_MAX_BODY_CHARS Maximale Zeichenzahl des Antwort-Bodys (Standard: 4000)
Feature-Schalter
- 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
Hinweise und Modi:
- Schnellmodus: KI und historische Tools deaktivieren (--no-ai --no-gau) für schnelle Aufklärung.
- Tiefenmodus: Alle Tools und KI aktivieren, mit gesetzter GAIA_LLM_MODEL; erhöhe GAIA_LLM_MAX_ENDPOINTS, falls du eine breitere KI-Abdeckung benötigst.
- Triage-Modus: KI aktiviert lassen, aber auf die Standardwerte vertrauen (gedeckelte Endpunkte, minifizierte Payloads) für ein ausgewogenes Verhältnis von Geschwindigkeit und Abdeckung.
LiteLLM / KI-Konfiguration
KI ist optional. Gaia funktioniert auch vollständig ohne sie.
Verwendung von OpenAI:
- GAIA_LLM_MODEL (Beispiel: gpt-4o-mini oder gpt-4.1)
- OPENAI_API_KEY: LiteLLM leitet Anfragen basierend auf diesen Variablen an OpenAI weiter.
Verwendung von Google Gemini
- GAIA_LLM_MODEL (Beispiel: gemini/gemini-1.5-pro)
- GOOGLE_API_KEY: LiteLLM leitet Anfragen basierend auf diesen Variablen an Gemini weiter.
Verwendung lokaler Modelle (Ollama / LM Studio)
- GAIA_LLM_MODEL (Beispiel: ollama/llama3 oder ollama/qwen2.5)
- LiteLLM verbindet sich mit dem lokalen Endpunkt; für lokale Modelle ist kein API-Schlüssel erforderlich.
Ausgabe
Konsolenausgabe
- Endpunkt-Tabelle (gefiltert, lesbar)
- Risiko-Tags pro Parameter
- Zusammenfassungsstatistiken
- KI-Fortschrittsanzeige (einzeilig)
Parameterhinweise
Am Ende des Berichts gibt Gaia aggregierte Parameterhinweise aus:
- Warum ein Parameter riskant aussieht
- Wo er gesehen wurde
- Praktische Testideen
Andere Formate
- JSON (maschinenlesbar)
- Markdown (berichtsfähig)
- KI-Aufrufe sind strikt gedeckelt
- Payloads sind minifiziert und mit gekürzten Schlüsseln versehen
- Statische Assets und Junk-Parameter werden übersprungen
- 2xx-Antworten senden nur Content-Type + kurzen Ausschnitt
- Entwickelt, um auch bei großen Angriffsflächen schnell zu bleiben
Mitwirkung
Beiträge sind willkommen. Bitte halte Pull-Requests fokussiert und lesbar. Verbesserungen an Heuristiken, Performance, Filterung, KI-Prompts und Dokumentation sind ausdrücklich erwünscht. Bei größeren Änderungen bitte zuerst ein Issue eröffnen, um sie zu besprechen.
Lizenz
MIT
Haftungsausschluss
Gaia ist ein Recon- und Analysetool. Teste immer verantwortungsvoll und nur gegen Systeme, für die du autorisiert bist, Bewertungen durchzuführen.