Перейти к содержанию

Сканирование на наличие секретов

Важно

Для использования данного функционала платформа должна иметь активный модуль CodeScoring.Secrets.

Сканирование на наличие секретов выполняется с помощью следующих команд:

  • johnny secrets gitleaks dir — сканирование файлов в указанной директории;
  • johnny secrets gitleaks git — сканирование истории локального git-репозитория;
  • johnny secrets trufflehog dir — сканирование файлов в указанной директории с помощью Trufflehog;
  • johnny secrets trufflehog git — сканирование истории локального git-репозитория с помощью Trufflehog.

Важно: агент работает только с версией Gitleaks 8.19.0 и выше, и с версией Trufflehog 3.93.8 и выше.

При запуске агент:

  1. Анализирует файлы в указанной директории или историю коммитов репозитория на наличие секретов (пароли, токены, ключи доступа и т. д.).
  2. исключает файлы и каталоги, указанные в .gitleaksignore;
  3. игнорирует секреты, зафиксированные в отчете Gitleaks, если задан baseline-path.
  4. Формирует результаты по найденным секретами, при необходимости сохраняет их на платформе CodeScoring и создает отчет в формате GitLab.

Сканирование git-репозитория

Режим git позволяет сканировать историю коммитов локального git-репозитория. В отличие от режима dir, который анализирует текущее состояние файлов, режим git проверяет секреты во всех коммитах репозитория или в ограниченном диапазоне.

Пример запуска команды для Gitleaks

johnny secrets gitleaks git /path/to/repo \
--gitleaks-path <path-to-gitleaks> \
--api_token <api_token> \
--api_url <api_url> \
--save-results \
--project <project-name> \
--git-ref main \
--git-depth 100

Пример запуска команды для Trufflehog

johnny secrets trufflehog git /path/to/repo \
--trufflehog-path <path-to-trufflehog> \
--api_token <api_token> \
--api_url <api_url> \
--save-results \
--project <project-name> \
--git-ref main \
--git-depth 100

Параметры git-режима

Команды johnny secrets gitleaks git и johnny secrets trufflehog git поддерживают следующие дополнительные параметры:

  • --git-ref – ветка, тег или коммит git, которые будут сканироваться. Если не задан, сканируются все ссылки. Примеры: main, v1.0.0, a1b2c3d;
  • --git-depth – ограничение сканирования заданным количеством коммитов от вершины истории. Значение 0 означает отсутствие ограничения.

Пример конфига для Gitleaks

Пример конфига, который расширяет стандартную конфигурацию, добавляя новое правило со своим регулярным выражением

title = “Custom gitleaks config”

[extend]
useDefault = true

[[rules]]
id = “custom-generic-password”
description = “Detected a Generic password”
regex = ‘’‘passw(?:or)d.+’‘’
entropy = 1

Пример запуска команды

johnny secrets gitleaks dir . \
--gitleaks-path <path-to-gitleaks> \
--gitleaks-config <path-to-gitleaks-config> \
--api_token <api_token> \
--api_url <api_url> \
--save-results \
--create-project \
--project <project-name> \
--gitleaks-ignore-path .gitleaksignore \
--gl-secrets-report \
--gl-secrets-report-filename secrets-report.json

Данная команда запускает сканирование секретов в текущей директории, игнорируя файлы, перечисленные в .gitleaksignore, отправляет результаты в платформу CodeScoring, и формирует отчет в формате GitLab, записывая его в secrets-report.json.

Параметры команды

Команды johnny secrets gitleaks dir, johnny secrets gitleaks git, johnny secrets trufflehog dir и johnny secrets trufflehog git имеют следующие уникальные параметры:

Параметры запуска поиска секретов

  • --commit – хэш коммита, который будет привязан к найденным секретам при сохранении результатов. Используется только для команд dir, если инструмент не определяет коммит самостоятельно (например: --commit a1b2c3d);
  • --gl-secrets-report – включение формирования отчета о найденных секретах в формате GitLab;
  • --gl-secrets-report-filename – имя выходного файла для отчета в формате GitLab (по умолчанию gl-secrets-report.json).

Параметры Gitleaks

  • --gitleaks-path – путь к исполняемому файлу Gitleaks, который будет использоваться при сканировании. Если не задан, будет выполняться вызов системной команды gitleaks;
  • --gitleaks-config - путь к конфигурационному файлу Gitleaks;
  • --baseline-path – путь к файлу отчета Gitleaks, который используется в качестве базовой линии для игнорирования ранее найденных секретов;
  • --enable-rule – список ID правил, которые будут включены при сканировании;
  • --gitleaks-ignore-path – путь к файлу .gitleaksignore или директории, содержащей его, для добавления fingerprint найденных ранее секретов;
  • --ignore-gitleaks-allow – игнорирование комментариев gitleaks:allow, которые помечают строки как безопасные для игнорирования;
  • --log-level – уровень логирования, который контролирует подробность выводимых сообщений. Возможные значения: trace, debug, info, warn, error, fatal;
  • --max-decode-depth – максимальная глубина рекурсивного декодирования при поиске секретов. Значение 0 отключает декодирование;
  • --max-target-megabytes – максимальный размер анализируемых файлов в мегабайтах. Файлы, превышающие этот размер, будут пропущены;
  • --no-banner – отключение баннера Gitleaks, который отображается при запуске инструмента;
  • --no-color – отключение цветного вывода для подробного режима (verbose);
  • --redact – маскирование найденных секретов в логах. Можно задать промежуточные значения (например, 20 для скрытия 20% секрета);
  • --verbose – включение подробного (verbose) вывода, предоставляющего больше информации о процессе сканирования.

Параметры Trufflehog

  • --trufflehog-path – путь к исполняемому файлу Trufflehog, который будет использоваться при сканировании. Если не задан, будет выполняться вызов системной команды trufflehog;
  • --trufflehog-config – путь к конфигурационному файлу Trufflehog;
  • --concurrency – количество параллельных воркеров при сканировании;
  • --no-verification – отключить верификацию найденных секретов;
  • --only-verified – выводить только верифицированные секреты;
  • --include-paths – путь к файлу с regex-шаблонами (по одному на строку) для включения файлов в сканирование;
  • --exclude-paths – путь к файлу с regex-шаблонами (по одному на строку) для исключения файлов из сканирования;
  • --trufflehog-log-level – уровень логирования Trufflehog. Возможные значения: debug, info, warn, error.

Для сводки доступных параметров команды и инструкции по использованию можно вызвать команду с флагом -h, --help.

Страница была полезна?