Gaia - Обнаружение поверхности атаки и ИИ-ассистированная триаж
Gaia — это инструмент анализа поверхности атаки с приоритетом CLI, который обнаруживает конечные точки и параметры, снижает шум и выделяет риски, важные для безопасности, используя статические эвристики и опционально ИИ-рассуждения. Он оркестрирует Katana, gau, arjun, linkfinder и uro, преобразуя необработанные коллекции URL в нормализованное, ориентированное на риски представление, подходящее для баг-баунти, AppSec и рабочих процессов инженеров безопасности.
Gaia не является автоматическим сканером уязвимостей. Он картирует поверхность атаки, применяет детерминированные эвристики и может использовать LLM для генерации подсказок по тестированию. Результаты — это рекомендации, а не подтверждённые уязвимости. Требуется ручная проверка. Вывод ИИ носит рекомендательный, а не авторитетный характер; используйте его, чтобы решить, на чём сосредоточиться и как тестировать.

Что делает Gaia
Gaia фокусируется на сигнале, а не на шуме. Он:
- Сканирует живые приложения
- Собирает исторические URL
- Извлекает параметры
- Нормализует и дедуплицирует конечные точки
- Анализирует JavaScript на предмет конечных точек, URL, секретов, email и файлов
- Применяет детерминированные эвристики безопасности
- Опционально обогащает результаты рассуждениями на основе LLM (ограниченно и оптимизированно)
Результат — быстрая, читаемая карта того, что имеет значение в поверхности атаки приложения.
Для кого это
- Охотники за баг-баунти, выполняющие быструю разведку и триаж
- AppSec-инженеры, картиующие поверхности атаки
- Инженеры безопасности, автоматизирующие ранний анализ
- Разработчики, желающие получить видимость открытых конечных точек и параметров
Ключевые возможности
- Сканирование в реальном времени через Katana
- Обнаружение исторических URL через gau
- Обнаружение параметров через arjun + разбор запросов
- Нормализация URL и дедупликация с uro
- JS-анализатор для извлечения JS с уменьшенным шумом
- Статические эвристики рисков (IDOR, SSRF, аутентификация, обход каталогов, инъекции и т.д.)
- Опциональный анализ с помощью LLM (ограниченный, минимизированный, быстрый)
- Снижение шума: фильтрация статических ресурсов, фильтрация трекеров/мусорных параметров
- Производительно-ориентированный дизайн: ограниченные вызовы ИИ, компактные полезные нагрузки, компактные снимки ответов
Как это работает (конвейер)
- Разрешение внешних инструментов
- Сканирование цели (Katana)
- Сбор исторических URL (gau)
- Анализ JS
- Извлечение параметров (arjun + разбор)
- Нормализация и дедупликация URL (uro)
- Анализ (статический + опциональный ИИ)
- Отображение отчёта
Каждый этап сообщает, сколько URL или параметров было обнаружено.
Использование
Базовое сканирование
gaia -u https://example.com
Отключение отдельных этапов
gaia -u https://example.com --no-gau --no-ai
Чтение URL из stdin
cat urls.txt | gaia --stdin
Пример запуска CLI
Gaia CLI demo – сканирование, нормализация и анализ с ИИ-ассистированием
Установка
Требования
- Python 3.10+
- (Опционально) virtualenv
- Go toolchain (для автоматической установки katana / gau)
Настройка
python3 -m venv venv
source venv/bin/activate
pip install -e .
Внешние инструменты (katana, gau, arjun, linkfinder, uro) могут быть установлены автоматически, если это включено.
Параметры CLI
- -u, --url Целевой URL
- --stdin Чтение URL из stdin
- --no-gau Отключить сбор исторических URL
- --no-arjun Отключить arjun для поиска параметров
- --no-linkfinder Отключить linkfinder для обнаружения JS
- --no-uro Отключить нормализацию URL
- --no-js-analyzer Отключить этап JS-анализатора
- --js-max-fetches N Максимальное количество JS-файлов для анализа
- --no-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 (требуется для включения ИИ)
- 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
Режимы и заметки:
- Быстрый режим: отключить ИИ и исторические инструменты (--no-ai --no-gau) для быстрой разведки.
- Глубокий режим: включить все инструменты и ИИ с установленным GAIA_LLM_MODEL; увеличьте GAIA_LLM_MAX_ENDPOINTS, если требуется более широкое покрытие ИИ.
- Режим триажа: оставить ИИ включённым, но полагаться на настройки по умолчанию (ограниченные конечные точки, минимизированные полезные нагрузки) для сбалансированной скорости и покрытия.
Конфигурация LiteLLM / ИИ
ИИ опционален. Gaia полностью работает без него.
Использование 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 не требуется.
Вывод
Консольный вывод
- Таблица конечных точек (отфильтрованная, читаемая)
- Метки риска для каждого параметра
- Сводная статистика
- Индикатор прогресса ИИ (одна строка)
Примечания по параметрам
В конце отчёта Gaia выводит агрегированные примечания по параметрам:
- Почему параметр выглядит рискованным
- Где он был замечен
- Практические идеи для тестирования
Другие форматы
- JSON (машиночитаемый)
- Markdown (готовый к отчёту)
Замечания по производительности
- Количество вызовов ИИ строго ограничено
- Полезные нагрузки минимизированы и сокращены по ключам
- Статические ресурсы и мусорные параметры пропускаются
- Ответы 2xx отправляют только content-type + короткий фрагмент
- Разработан для сохранения скорости даже на больших поверхностях
Вклад
Вклад приветствуется. Пожалуйста, делайте PR сфокусированными и читаемыми. Поощряются улучшения эвристик, производительности, фильтрации, ИИ-промптов и документации. Для крупных изменений сначала откройте issue для обсуждения.
Лицензия
MIT
Отказ от ответственности
Gaia — это инструмент разведки и анализа. Всегда тестируйте ответственно и только против систем, которые вы уполномочены оценивать.