Gaia - Scoperta della Superficie di Attacco e Triage Assistito dall'IA
Gaia è uno strumento di analisi della superficie di attacco basato su CLI che scopre endpoint e parametri, riduce il rumore e mette in evidenza rischi rilevanti per la sicurezza utilizzando euristiche statiche e ragionamento AI opzionale. Orchestra Katana, gau, arjun, linkfinder e uro per trasformare raccolte grezze di URL in una vista normalizzata e consapevole dei rischi, adatta per bug bounty, AppSec e flussi di lavoro di ingegneria della sicurezza.
Gaia non è uno scanner automatico di vulnerabilità. Mappa la superficie di attacco, applica euristiche deterministiche e può utilizzare LLM per generare suggerimenti per i test. I risultati sono indicazioni, non vulnerabilità confermate. È necessaria una convalida manuale. L'output dell'IA è consultivo e non autorevole; usalo per decidere dove concentrarti e come testare.

Cosa Fa Gaia
Gaia si concentra sul segnale piuttosto che sul rumore.:
- Esegue il crawling di applicazioni live
- Raccoglie URL storici
- Estrae parametri
- Normalizza e deduplica gli endpoint
- Analizza JavaScript per endpoint, URL, segreti, email e file
- Applica euristiche di sicurezza deterministiche
- Opzionalmente arricchisce i risultati con ragionamento basato su LLM (limitato e ottimizzato)
Il risultato è una mappa veloce e leggibile di ciò che conta nella superficie di attacco di un'applicazione.
A Chi è Destinato
- Cacciatori di bug bounty che effettuano ricognizione e triage rapidi
- Ingegneri AppSec che mappano superfici di attacco
- Ingegneri della sicurezza che automatizzano l'analisi in fase iniziale
- Sviluppatori che desiderano visibilità su endpoint e parametri esposti
Caratteristiche Principali
- Crawling live tramite Katana
- Scoperta di URL storici tramite gau
- Scoperta di parametri tramite arjun + parsing delle query
- Normalizzazione e deduplicazione degli URL con uro
- Analizzatore JS per estrazione JS a rumore ridotto
- Euristiche di rischio statiche (IDOR, SSRF, autenticazione, traversal, injection, ecc.)
- Analisi assistita da LLM opzionale (limitata, minimizzata, veloce)
- Riduzione del rumore: filtraggio di asset statici, filtraggio di parametri di tracciamento/spazzatura
- Design orientato alle prestazioni: chiamate AI limitate, payload compatti, snapshot di risposta snelli
Come Funziona (Pipeline)
- Risoluzione degli strumenti esterni
- Crawling del target (Katana)
- Raccolta di URL storici (gau)
- Analisi JS
- Estrazione dei parametri (arjun + parsing)
- Normalizzazione e deduplicazione degli URL (uro)
- Analisi (statica + IA opzionale)
- Generazione del report
Ogni fase riporta quanti URL o parametri ha scoperto.
Utilizzo
Scansione Base
gaia -u https://example.com
Disabilitare Fasi Specifiche
gaia -u https://example.com --no-gau --no-ai
Leggere URL da stdin
cat urls.txt | gaia --stdin
Esempio di Esecuzione CLI
Gaia CLI demo – crawling, normalizzazione e analisi assistita dall'IA
Installazione
Requisiti
- Python 3.10+
- (Opzionale) virtualenv
- Toolchain Go (per installazione automatica di katana / gau)
Configurazione
python3 -m venv venv
source venv/bin/activate
pip install -e .
Gli strumenti esterni (katana, gau, arjun, linkfinder, uro) possono essere installati automaticamente se abilitati.
Flag CLI
- -u, --url URL di destinazione
- --stdin Leggi URL da stdin
- --no-gau Disabilita raccolta URL storici
- --no-arjun Disabilita scoperta parametri arjun
- --no-linkfinder Disabilita scoperta JS di linkfinder
- --no-uro Disabilita normalizzazione URL
- --no-js-analyzer Disabilita fase analizzatore JS
- --js-max-fetches N Massimo di file JS da recuperare per l'analisi
- --no-ai Disabilita ragionamento AI
- --show-assets Mostra asset statici nell'output
- --only-params Mostra solo endpoint con parametri
- --auto-install Installa automaticamente strumenti mancanti
- --max-urls N Limita URL raccolti
- --format console|md|json Formato di output
- --output PATH Scrivi report su file
- -h, --help Mostra aiuto
Variabili d'Ambiente
AI / LLM
- GAIA_LLM_MODEL Nome del modello per LiteLLM (necessario per abilitare l'IA)
- GAIA_LLM_MAX_ENDPOINTS Numero massimo di endpoint inviati al LLM (default: 15)
- GAIA_LLM_INCLUDE_RESPONSES Includi snapshot delle risposte HTTP (default: true)
- GAIA_LLM_MAX_RESPONSES Numero massimo di snapshot da recuperare (default: 50)
- GAIA_LLM_MAX_BODY_CHARS Numero massimo di caratteri del corpo della risposta (default: 4000)
Attivazione/Disattivazione Funzionalità
- GAIA_DISABLE_AI
- GAIA_DISABLE_GAU
- GAIA_DISABLE_ARJUN
- GAIA_DISABLE_LINKFINDER
- GAIA_DISABLE_URO
- GAIA_DISABLE_JS_ANALYZER
Debug
- GAIA_VERBOSE
- GAIA_DEBUG
- GAIA_LLM_DEBUG
- GAIA_JS_MAX_FETCHES
- GAIA_JS_MAX_CHARS
Note e modalità:
- Modalità veloce: disabilita l'IA e gli strumenti storici (--no-ai --no-gau) per una ricognizione rapida.
- Modalità approfondita: abilita tutti gli strumenti e l'IA con GAIA_LLM_MODEL impostato; aumenta GAIA_LLM_MAX_ENDPOINTS se hai bisogno di una copertura IA più ampia.
- Modalità triage: mantieni l'IA attiva ma affidati ai valori predefiniti (endpoint limitati, payload minimizzati) per un equilibrio tra velocità e copertura.
Configurazione LiteLLM / IA
L'IA è opzionale. Gaia funziona completamente senza.
Utilizzo di OpenAI:
- GAIA_LLM_MODEL (example: gpt-4o-mini or gpt-4.1)
- OPENAI_API_KEY: LiteLLM instrada le richieste a OpenAI basandosi su queste variabili.
Utilizzo di Google Gemini
- GAIA_LLM_MODEL (example: gemini/gemini-1.5-pro)
- GOOGLE_API_KEY: LiteLLM instrada le richieste a Gemini basandosi su queste variabili.
Utilizzo di Modelli Locali (Ollama / LM Studio)
- GAIA_LLM_MODEL (example: ollama/llama3 or ollama/qwen2.5)
- LiteLLM si connette all'endpoint locale; non è necessaria alcuna chiave API per i modelli locali.
Output
Output Console
- Tabella degli endpoint (filtrata, leggibile)
- Tag di rischio per parametro
- Statistiche riassuntive
- Indicatore di progresso dell'IA (su una riga)
Note sui Parametri
Alla fine del report, Gaia stampa note aggregate sui parametri:
- Perché un parametro sembra rischioso
- Dove è stato visto
- Idee pratiche per i test
Altri Formati
- JSON (machine-readable)
- Markdown (report-ready)
Note sulle Prestazioni
- Le chiamate AI sono rigorosamente limitate
- I payload sono minimizzati e le chiavi accorciate
- Gli asset statici e i parametri spazzatura vengono saltati
- Le risposte 2xx inviano solo content-type + breve frammento
- Progettato per rimanere veloce anche su superfici di grandi dimensioni
Contributi
I contributi sono benvenuti. Tieni le PR focalizzate e leggibili. Sono incoraggiati miglioramenti a euristiche, prestazioni, filtraggio, prompt AI e documentazione. Per modifiche più ampie, apri prima una issue per discutere.
Licenza
MIT
Disclaimer
Gaia è uno strumento di ricognizione e analisi. Testa sempre in modo responsabile e solo su sistemi che sei autorizzato a valutare.