Gaia - 攻撃面の発見とAI支援トリアージ
GaiaはCLIファーストの攻撃面分析ツールです。エンドポイントとパラメータを発見し、ノイズを削減し、静的ヒューリスティクスとオプションのAI推論を使用してセキュリティ関連のリスクを強調表示します。Katana、gau、arjun、linkfinder、uroを統括し、生のURLコレクションを、バグバウンティ、AppSec、セキュリティエンジニアリングのワークフローに適した、正規化されリスクを考慮したビューに変換します。
Gaiaは自動化された脆弱性スキャナではありません。攻撃面をマッピングし、決定的ヒューリスティクスを適用し、LLMを使用してテストのヒントを生成できます。発見事項はガイダンスであり、確認された脆弱性ではありません。手動による検証が必要です。AIの出力は助言であり、権威あるものではありません。どこに焦点を当て、どのようにテストするかを判断するために使用してください。

Gaiaの機能
Gaiaはノイズよりもシグナルに焦点を当てています。具体的には:
- ライブアプリケーションをクロールします
- 過去のURLを収集します
- パラメータを抽出します
- エンドポイントを正規化および重複排除します
- エンドポイント、URL、シークレット、メール、ファイルについてJavaScriptを解析します
- 決定的セキュリティヒューリスティクスを適用します
- オプションでLLMベースの推論により発見事項を拡充します(制限付き&最適化)
その結果、アプリケーションの攻撃面で重要な箇所を示す、高速かつ読みやすいマップが得られます。
対象ユーザー
- 高速な偵察とトリアージを行うバグバウンティハンター
- 攻撃面をマッピングするAppSecエンジニア
- 初期段階の分析を自動化するセキュリティエンジニア
- 露出したエンドポイントとパラメータの可視性を求める開発者
主な機能
- Katanaによるライブクロール
- gauによる過去のURL発見
- arjun + クエリ解析によるパラメータ発見
- uroによるURLの正規化と重複排除
- ノイズを低減したJS抽出のためのJSアナライザー
- 静的リスクヒューリスティクス(IDOR、SSRF、認証、トラバーサル、インジェクションなど)
- オプションのLLM支援分析(上限付き、最小化、高速)
- ノイズ削減:静的アセットのフィルタリング、トラッキング/ジャンクパラメータのフィルタリング
- パフォーマンス重視の設計:AI呼び出しの制限、コンパクトなペイロード、スリムなレスポンススナップショット
動作の仕組み(パイプライン)
- 外部ツールの解決
- ターゲットのクロール(Katana)
- 過去のURLの収集(gau)
- JS分析
- パラメータの抽出(arjun + 解析)
- URLの正規化と重複排除(uro)
- 分析(静的 + 任意のAI)
- レポートのレンダリング
各ステージは、発見したURLまたはパラメータの数を報告します。
使用方法
基本スキャン
gaia -u https://example.com
特定のステージを無効化
gaia -u https://example.com --no-gau --no-ai
stdinからURLを読み込む
cat urls.txt | gaia --stdin
CLI実行例
Gaia CLIデモ – クロール、正規化、AI支援分析
インストール
要件
- Python 3.10+
- (任意)virtualenv
- Goツールチェーン(katana / gauの自動インストール用)
セットアップ
python3 -m venv venv
source venv/bin/activate
pip install -e .
外部ツール(katana、gau、arjun、linkfinder、uro)は、有効にすると自動インストールできます。
CLIフラグ
- -u, --url ターゲットURL
- --stdin stdinからURLを読み込む
- --no-gau 過去のURL収集を無効化
- --no-arjun arjunのパラメータ発見を無効化
- --no-linkfinder linkfinderのJS発見を無効化
- --no-uro URLの正規化を無効化
- --no-js-analyzer JSアナライザーステージを無効化
- --js-max-fetches N 分析のために取得する最大JSファイル数
- --no-ai AI推論を無効化
- --show-assets 出力に静的アセットを表示
- --only-params パラメータを持つエンドポイントのみを表示
- --auto-install 不足しているツールを自動インストール
- --max-urls N 収集するURLの上限を設定
- --format console|md|json 出力形式
- --output PATH レポートをファイルに書き込む
- -h, --help ヘルプを表示
環境変数
AI / LLM
- GAIA_LLM_MODEL LiteLLMのモデル名(AIを有効化するために必須)
- GAIA_LLM_MAX_ENDPOINTS LLMに送信する最大エンドポイント数(デフォルト:15)
- GAIA_LLM_INCLUDE_RESPONSES HTTPレスポンススナップショットを含める(デフォルト:true)
- GAIA_LLM_MAX_RESPONSES 取得する最大スナップショット数(デフォルト:50)
- GAIA_LLM_MAX_BODY_CHARS レスポンスボディの最大文字数(デフォルト:4000)
機能トグル
- GAIA_DISABLE_AI
- GAIA_DISABLE_GAU
- GAIA_DISABLE_ARJUN
- GAIA_DISABLE_LINKFINDER
- GAIA_DISABLE_URO
- GAIA_DISABLE_JS_ANALYZER
デバッグ
- GAIA_VERBOSE
- GAIA_DEBUG
- GAIA_LLM_DEBUG
- GAIA_JS_MAX_FETCHES
- GAIA_JS_MAX_CHARS
注記とモード:
- 高速モード:AIと履歴ツールを無効化(--no-ai --no-gau)して、迅速な偵察を行います。
- 詳細モード:GAIA_LLM_MODELを設定してすべてのツールとAIを有効化します。より広範なAIカバレッジが必要な場合はGAIA_LLM_MAX_ENDPOINTSを増やしてください。
- トリアージモード:AIをオンにしたままデフォルト設定(制限付きエンドポイント、最小化ペイロード)に依存して、速度とカバレッジのバランスを取ります。
LiteLLM / AI設定
AIはオプションです。GaiaはAIなしでも完全に動作します。
OpenAIを使用する場合:
- GAIA_LLM_MODEL(例:gpt-4o-mini または gpt-4.1)
- OPENAI_API_KEY:LiteLLMはこれらの変数に基づいてリクエストをOpenAIにルーティングします。
Google Geminiを使用する場合
- GAIA_LLM_MODEL(例:gemini/gemini-1.5-pro)
- GOOGLE_API_KEY:LiteLLMはこれらの変数に基づいてリクエストをGeminiにルーティングします。
ローカルモデルを使用する場合(Ollama / LM Studio)
- GAIA_LLM_MODEL(例:ollama/llama3 または ollama/qwen2.5)
- LiteLLMはローカルエンドポイントに接続します。ローカルモデルにはAPIキーは不要です。
出力
コンソール出力
- エンドポイントテーブル(フィルタリング済み、読み取り可能)
- パラメータごとのリスクタグ
- サマリー統計
- AI進捗インジケーター(単一行)
パラメータノート
レポートの最後に、Gaiaは集約されたパラメータノートを出力します:
- パラメータがリスクに見える理由
- パラメータが確認された場所
- 実践的なテストのアイデア
その他の形式
- JSON(機械可読)
- Markdown(レポート対応)
パフォーマンスに関する注意
- AI呼び出しは厳密に上限が設定されています
- ペイロードは最小化され、キーが短縮されます
- 静的アセットとジャンクパラメータはスキップされます
- 2xxレスポンスはcontent-type + 短いスニペットのみを送信します
- 大規模な攻撃面でも高速を維持するように設計されています
コントリビューション
コントリビューションを歓迎します。PRは焦点を絞り、読みやすいものにしてください。ヒューリスティクス、パフォーマンス、フィルタリング、AIプロンプト、ドキュメントの改善を歓迎します。大規模な変更については、先にイシューを開いて議論してください。
ライセンス
MIT
免責事項
Gaiaは偵察および分析ツールです。常に責任を持って、評価する権限のあるシステムに対してのみテストしてください。