Trufflehog
Overview
Заголовок раздела «Overview»TruffleHog — сканер для поиска утечек секретов (токены, API keys, ключи доступа, креды) в исходном коде и артефактах. В TRAIO используется как Secrets Detection сканер и поддерживает два режима запуска: Directory Scan и Git Scan.
Requirements
Заголовок раздела «Requirements »- В Sequences перед этим инструментом должен быть добавлен job Code Downloader
Run modes
Заголовок раздела «Run modes »Поддерживаются два режима:
- Directory Scan (
TRUFFLE_MODE=dir) — сканирует файловую систему по пути, который передаёт TRAIO. - Git Scan (
TRUFFLE_MODE=git) — сканирует .git
How it works
Заголовок раздела «How it works»Сканер использует официальный docker-образ:
registry.gitlab.com/gitlab-org/security-products/analyzers/secrets:latest
Команда запуска
TMP="/tmp/trufflehog.jsonl"JQ="/tmp/jq"
# Stage 0 — Validate correct choose of parserecho "Stage 0 — Validate correct choose of parser SCAN_TYPE='$SCAN_TYPE' TRUFFLE_MODE='$TRUFFLE_MODE'"
case "$SCAN_TYPE" in "Trufflehog - Git Scan") [ "$TRUFFLE_MODE" = "git" ] || { echo "ERROR: Config mismatch: SCAN_TYPE='$SCAN_TYPE' requires TRUFFLE_MODE=git"; exit 2; } ;; "Trufflehog - Directory Scan") [ "$TRUFFLE_MODE" = "dir" ] || { echo "ERROR: Config mismatch: SCAN_TYPE='$SCAN_TYPE' requires TRUFFLE_MODE=dir"; exit 2; } ;;esac
# Stage 1 — Scanningecho "Stage 1 — Scan Scanning TRUFFLE_MODE=$TRUFFLE_MODE"case "$TRUFFLE_MODE" in dir) trufflehog filesystem "$SEC_CODE_FOLDER" --json $EXTRA_ARGS > "$TMP" || true ;; git) trufflehog git "file://$SEC_CODE_FOLDER" --json $EXTRA_ARGS > "$TMP" || true ;; *) echo "Unknown TRUFFLEHOG_MODE=$TRUFFLE_MODE. Use: dir|git"; exit 2 ;;esac
# Stage 2 — Empty report fallbackecho "Stage 2 — Empty report fallback check"[ -s "$TMP" ] || { echo "[]" > "/data/$REPORT_FILE_NAME"; exit 0; }
# Stage 3 — Install needed tools to convert report (install curl + download jq)echo "Stage 3 — Install needed tools to convert report (install curl & fetch jq)"apk add --no-cache curl >/dev/nullcurl -fsSL -o "$JQ" "https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64"chmod +x "$JQ"
# Stage 4 — Convert JSONL report -> To parsable JSON arrayecho "Stage 4 — Convert JSONL report -> To parsable JSON array""$JQ" -s '.' "$TMP" > "/data/$REPORT_FILE_NAME" || echo "[]" > "/data/$REPORT_FILE_NAME"Environment variables
Заголовок раздела «Environment variables»| Переменная | Пример | Обязательная | Описание |
| SEC_CODE_FOLDER | Да | Путь к исходному коду. Проставляется автоматический | |
| REPORT_FILE_NAME | trufflehog.json | Да | Имя отчёта |
| SCAN_TYPE | Trufflehog - Directory Scan | Да | Тип сканирования для парсинга Возможные значения: Trufflehog - Directory Scan, Trufflehog - Git Scan. |
| TRUFFLE_MODE | git или dir | Да | Режим запуска: dir или git |
| EXTRA_ARGS | Нет | Дополнительные CLI-флаги, которые прокидываются в TruffleHog. |
EXTRA_ARGS
Заголовок раздела «EXTRA_ARGS»--no-verification— отключить внешнюю верификацию секретов--results=unverified,unknown— оставить только непроверенные/unknown результаты
Severity and CWE
Заголовок раздела «Severity and CWE»TruffleHog не отдаёт severity и CWE
Рекомендуемые дефолты в TRAIO:
- Severity:
Mediumпо умолчанию
Notes / Troubleshooting
Заголовок раздела «Notes / Troubleshooting»- JSON format: TruffleHog отдаёт JSONL; в пресете используется
jq -s '.'для конвертации в JSON array. - Network access: для работы пресета нужен исходящий доступ к Alpine репозиториям (для
apk add curl) и GitHub (для скачиванияjq).