
trufflehog v3.97.0
Находите, проверяйте и анализируйте утекшие учетные данные
TruffleHog
Найдите утекшие учетные данные.
🔎 Сейчас сканируется
...и многое другое
Чтобы узнать больше о TruffleHog и его функциях и возможностях, посетите нашу страницу продукта.
🌐 TruffleHog Enterprise
Вас интересует непрерывный мониторинг Git, Jira, Slack, Confluence, Microsoft Teams, Sharepoint (и других) на предмет учетных данных? У нас есть корпоративный продукт, который может помочь! Узнайте больше на https://trufflesecurity.com/trufflehog-enterprise.
Мы направляем доход от корпоративного продукта на финансирование более крутых проектов с открытым исходным кодом, от которых может выиграть всё сообщество.
Что такое TruffleHog 🐽
TruffleHog — это самый мощный инструмент для обнаружения, классификации, валидации и анализа секретов. В данном контексте секрет — это учетные данные, которые машина использует для аутентификации на другой машине. Это включает ключи API, пароли к базам данных, закрытые ключи шифрования и другое.
Обнаружение 🔍
TruffleHog может искать секреты во многих местах, включая Git, чаты, вики, журналы, платформы тестирования API, хранилища объектов, файловые системы и многое другое.
Классификация 📁
TruffleHog классифицирует более 800 типов секретов, соотнося их с конкретными сущностями, к которым они относятся. Это секрет AWS? Секрет Stripe? Секрет Cloudflare? Пароль Postgres? Закрытый ключ SSL? Иногда трудно определить на глаз, поэтому TruffleHog классифицирует всё, что находит.
Валидация ✅
Для каждого секрета, который TruffleHog может классифицировать, он также может выполнить вход, чтобы подтвердить, активен ли этот секрет. Этот шаг критически важен для понимания, существует ли активная угроза.
Анализ 🔬
Для примерно 20 наиболее часто утекающих типов учетных данных вместо отправки одного запроса для проверки, может ли секрет выполнить вход, TruffleHog отправляет множество запросов, чтобы узнать всё о секрете. Кто его создал? К каким ресурсам он может получить доступ? Какие разрешения он имеет на этих ресурсах?
📢 Присоединяйтесь к нашему сообществу
Есть вопросы? Есть отзыв? Заходите в Slack или Discord и общайтесь с нами.
Присоединяйтесь к нашему Slack-сообществу
Присоединяйтесь к Discord-сообществу проверки секретов
📺 Демо
```bash
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --org=trufflesecurity
# :floppy_disk: Установка
Для вас доступно несколько вариантов:
### Пользователи MacOS```bash
brew install trufflehog
Docker:
Убедитесь, что Docker engine запущен перед выполнением следующих команд:
Unix```bash
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
#### Командная строка Windows```bash
docker run --rm -it -v "%cd:/=\%:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
Windows PowerShell```bash
docker run --rm -it -v "${PWD}:/pwd" trufflesecurity/trufflehog github --repo https://github.com/trufflesecurity/test_keys
#### M1 and M2 Mac```bash
docker run --platform linux/arm64 --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
Бинарные релизы```bash
Download and unpack from https://github.com/trufflesecurity/trufflehog/releases
### Скомпилировать из исходного кода```bash
git clone https://github.com/trufflesecurity/trufflehog.git
cd trufflehog; go install
Использование скрипта установки```bash
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
### Использование сценария установки, проверить подпись контрольной суммы (требуется установка cosign)```bash
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -v -b /usr/local/bin
Использование установочного скрипта для установки определенной версии```bash
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
# :closed_lock_with_key: Проверка артефактов
Контрольные суммы применяются ко всем артефактам, и результирующий файл контрольных сумм подписывается с помощью cosign.
Для проверки подписи вам понадобится следующий инструмент:
- [Cosign](https://docs.sigstore.dev/cosign/system_config/installation/)
Шаги проверки следующие:
1. Загрузите нужные вам файлы артефактов и следующие файлы со страницы [релизов](https://github.com/trufflesecurity/trufflehog/releases).
- trufflehog\_{version}\_checksums.txt
- trufflehog\_{version}\_checksums.txt.pem
- trufflehog\_{version}\_checksums.txt.sig
2. Проверьте подпись: ```shell
cosign verify-blob <path to trufflehog_{version}_checksums.txt> \
--certificate <path to trufflehog_{version}_checksums.txt.pem> \
--signature <path to trufflehog_{version}_checksums.txt.sig> \
--certificate-identity-regexp 'https://github\.com/trufflesecurity/trufflehog/\.github/workflows/.+' \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
- После подтверждения действительности подписи можно приступить к проверке соответствия контрольных сумм SHA256 загруженному артефакту: ```shell
sha256sum --ignore-missing -c trufflehog_{version}_checksums.txt
Замените {version} на версию загруженных файлов
Кроме того, если вы используете скрипт установки, передайте опцию -v для проверки подписи. Для этого необходимо, чтобы бинарный файл Cosign был установлен перед запуском скрипта установки.
🚀 Быстрый старт
1: Сканирование репозитория только для проверенных секретов
Команда:```bash trufflehog git https://github.com/trufflesecurity/test_keys --results=verified
Ожидаемый вывод:```
🐷🔑🐷 TruffleHog. Unearth your secrets. 🐷🔑🐷
Found verified result 🐷🔑
Detector Type: AWS
Decoder Type: PLAIN
Raw result: AKIAYVP4CIPPERUVIFXG
Line: 4
Commit: fbc14303ffbf8fb1c2c1914e8dda7d0121633aca
File: keys
Email: counter <[email protected]>
Repository: https://github.com/trufflesecurity/test_keys
Timestamp: 2022-06-16 10:17:40 -0700 PDT
...
2: Сканировать организацию GitHub только для проверенных секретов```bash
trufflehog github --org=trufflesecurity --results=verified
## 3: Сканировать организацию GitHub, исключая архивированные репозитории```bash
trufflehog github --org=trufflesecurity --exclude-archived
4: Сканировать GitHub-репозиторий только для верифицированных секретов и получить JSON-вывод
Команда:```bash trufflehog git https://github.com/trufflesecurity/test_keys --results=verified --json
Ожидаемый вывод:```
{"SourceMetadata":{"Data":{"Git":{"commit":"fbc14303ffbf8fb1c2c1914e8dda7d0121633aca","file":"keys","email":"counter \[email protected]\u003e","repository":"https://github.com/trufflesecurity/test_keys","timestamp":"2022-06-16 10:17:40 -0700 PDT","line":4}}},"SourceID":0,"SourceType":16,"SourceName":"trufflehog - git","DetectorType":2,"DetectorName":"AWS","DecoderName":"PLAIN","Verified":true,"Raw":"AKIAYVP4CIPPERUVIFXG","Redacted":"AKIAYVP4CIPPERUVIFXG","ExtraData":{"account":"595918472158","arn":"arn:aws:iam::595918472158:user/canarytokens.com@@mirux23ppyky6hx3l6vclmhnj","user_id":"AIDAYVP4CIPPJ5M54LRCY"},"StructuredData":null}
...
5: Сканировать репозиторий GitHub + его Issues и Pull Requests```bash
trufflehog github --repo=https://github.com/trufflesecurity/test_keys --issue-comments --pr-comments
## 6: Сканировать S3-бакет на предмет результатов с высокой достоверностью (подтвержденных + неизвестных)```bash
trufflehog s3 --bucket=<bucket name> --results=verified,unknown
7: Сканирование S3 buckets с использованием IAM Roles```bash
trufflehog s3 --role-arn=
## 8: Сканирование репозитория Github с помощью SSH-аутентификации в Docker```bash
docker run --rm -v "$HOME/.ssh:/root/.ssh:ro" trufflesecurity/trufflehog:latest git ssh://github.com/trufflesecurity/test_keys
9: Сканировать отдельные файлы или каталоги```bash
trufflehog filesystem path/to/file1.txt path/to/file2.txt path/to/dir
## 10: Сканирование локального git-репозитория
Клонируйте git-репозиторий. Например, репозиторий [test keys](https://github.com/trufflesecurity/trufflehog/blob/HEAD/[email protected]:trufflesecurity/test_keys.git).```bash
git clone [email protected]:trufflesecurity/test_keys.git
Запустите trufflehog из родительской директории (за пределами git-репозитория).```bash trufflehog git file://test_keys --results=verified,unknown
Чтобы защититься от вредоносных git-конфигураций при локальном сканировании (см. CVE-2025-41390), TruffleHog клонирует локальные git-репозитории во временный каталог перед сканированием. Это соответствует [рекомендациям Git по безопасности](https://git-scm.com/docs/git#_security). Если вы хотите указать собственный путь для клонирования репозитория (вместо tmp), используйте флаг `--clone-path`. Если вы хотите пропустить процесс локального клонирования и сканировать репозиторий напрямую (делайте это только для доверенных репозиториев), используйте флаг `--trust-local-git-config`.
## 11: Сканирование корзин GCS только для проверенных секретов```bash
trufflehog gcs --project-id=<project-ID> --cloud-environment --results=verified
12: Сканирование Docker-образа только на проверенные секреты
Используйте флаг --image несколько раз для сканирования нескольких образов.```bash
to scan from a remote registry
trufflehog docker --image trufflesecurity/secrets --results=verified
to scan from the local docker daemon
trufflehog docker --image docker://new_image:tag --results=verified
to scan from an image saved as a tarball
trufflehog docker --image file://path_to_image.tar --results=verified
## 13: Сканирование в CI
Установите флаг `--since-commit` на вашу ветку по умолчанию, в которую люди сливают изменения (например, "main"). Установите флаг `--branch` на имя ветки вашего PR (например, "feature-1"). В зависимости от используемой платформы CI/CD это значение может быть получено динамически (например, [CIRCLE_BRANCH в Circle CI](https://circleci.com/docs/variables/) и [TRAVIS_PULL_REQUEST_BRANCH в Travis CI](https://docs.travis-ci.com/user/environment-variables/)). Если репозиторий клонирован и целевая ветка уже переключена во время рабочего процесса CI/CD, то `--branch HEAD` должно быть достаточно. Флаг `--fail` вернет код ошибки 183, если будут найдены действительные учетные данные.```bash
trufflehog git file://. --since-commit main --branch feature-1 --results=verified,unknown --fail
14: Сканирование рабочего пространства Postman
Используйте флаги --workspace-id, --collection-id, --environment несколько раз для сканирования нескольких целей.```bash
trufflehog postman --token= --workspace-id=
## 15: Сканировать сервер Jenkins```bash
trufflehog jenkins --url https://jenkins.example.com --username admin --password admin
16: Сканирование сервера Elasticsearch
Сканирование локального кластера
Существует два способа аутентификации в локальном кластере с помощью TruffleHog: (1) имя пользователя и пароль, (2) сервисный токен.
Подключение к локальному кластеру с помощью имени пользователя и пароля```bash
trufflehog elasticsearch --nodes 192.168.14.3 192.168.14.4 --username truffle --password hog
#### Подключиться к локальному кластеру с сервисным токеном```bash
trufflehog elasticsearch --nodes 192.168.14.3 192.168.14.4 --service-token ‘AAEWVaWM...Rva2VuaSDZ’
Сканирование кластера Elastic Cloud
Для сканирования кластера в Elastic Cloud вам понадобятся Cloud ID и API key.```bash
trufflehog elasticsearch
--cloud-id 'search-prod:dXMtY2Vx...YjM1ODNlOWFiZGRlNjI0NA=='
--api-key 'MlVtVjBZ...ZSYlduYnF1djh3NG5FQQ=='
## 17. Сканирование репозитория GitHub на предмет перекрёстных ссылок на объекты форков и удалённых коммитов
Следующая команда перечислит удалённые и скрытые коммиты в репозитории GitHub, а затем просканирует их на наличие секретов. Это функция альфа-релиза.```bash
trufflehog github-experimental --repo https://github.com/<USER>/<REPO>.git --object-discovery
В дополнение к обычному выводу TruffleHog, флаг --object-discovery создает два файла в новой директории $HOME/.trufflehog: valid_hidden.txt и invalid.txt. Они используются для отслеживания состояния во время перечисления коммитов, а также для предоставления пользователям полного списка всех скрытых и удаленных коммитов (valid_hidden.txt). Если вы хотите автоматически удалять эти файлы после сканирования, добавьте флаг --delete-cached-data.
Примечание: Перечисление всех действительных коммитов в репозитории с помощью этого метода занимает от 20 минут до нескольких часов, в зависимости от размера вашего репозитория. Мы добавили индикатор выполнения, чтобы вы могли отслеживать, сколько времени займет перечисление. Фактическое сканирование секретов выполняется чрезвычайно быстро.
Для получения дополнительной информации о Cross Fork Object References, пожалуйста, прочитайте наш пост в блоге.
18. Сканирование Hugging Face
Сканирование модели, набора данных, пространства или корзины Hugging Face```bash
trufflehog huggingface
--model <model_id>
--dataset <dataset_id>
--space <space_id>
--bucket <bucket_id>
### Сканирование всех моделей, наборов данных, пространств и сегментов, принадлежащих организации или пользователю Hugging Face```bash
trufflehog huggingface --org <orgname> --user <username>
(Опционально) При сканировании организации или пользователя вы можете пропустить целый класс ресурсов с помощью --skip-all-models, --skip-all-datasets, --skip-all-spaces, --skip-all-buckets ИЛИ отдельный ресурс с помощью --ignore-models <model_id>, --ignore-datasets <dataset_id>, --ignore-spaces <space_id>, --ignore-buckets <bucket_id>.
Сканирование обсуждений и комментариев PR```bash
trufflehog huggingface --model <model_id> --include-discussions --include-prs
## 19. Сканирование ввода stdin```bash
aws s3 cp s3://example/gzipped/data.gz - | gunzip -c | trufflehog stdin
❓ Часто задаваемые вопросы
- Я вижу только
🐷🔑🐷 TruffleHog. Unearth your secrets. 🐷🔑🐷и программа завершает работу. В чем дело?- Это означает, что секреты не обнаружены
- Почему сканирование занимает много времени при сканировании организации GitHub?
- Неаутентифицированные сканирования GitHub имеют ограничения скорости. Чтобы улучшить лимиты, добавьте флаг
--tokenс персональным токеном доступа
- Неаутентифицированные сканирования GitHub имеют ограничения скорости. Чтобы улучшить лимиты, добавьте флаг
- Сообщается, что закрытый ключ был проверен. Что это значит?
- Результат "verified" означает, что TruffleHog подтвердил действительность учётных данных, проверив их через API сервиса. Для закрытых ключей мы подтвердили, что ключ может быть использован в реальном времени для аутентификации SSH или SSL. Прочитайте наш пост в блоге Driftwood, чтобы узнать больше: Блог пост
- Есть ли простой способ игнорировать определённые секреты?
- Если сканируемый источник поддерживает номера строк, то вы можете добавить комментарий
trufflehog:ignoreна строке, содержащей секрет, чтобы игнорировать этот секрет.
- Если сканируемый источник поддерживает номера строк, то вы можете добавить комментарий
📰 Что нового в v3?
TruffleHog v3 — это полная переработка на Go с множеством новых мощных возможностей.
- Мы добавили более 700 детекторов учётных данных, поддерживающих активную проверку через соответствующие API.
- Мы также добавили встроенную поддержку сканирования GitHub, GitLab, Docker, файловых систем, S3, GCS, Circle CI и Travis CI.
- Мгновенная проверка закрытых ключей среди миллионов пользователей GitHub и миллиардов TLS-сертификатов с помощью нашей технологии Driftwood.
- Сканирование бинарных файлов, документов и других форматов файлов
- Доступен в качестве GitHub Action и pre-commit хука
Что такое проверка учётных данных?
Для каждого потенциального учётного данного, которое обнаруживается, мы тщательно реализовали программную проверку через API, к которому, как мы считаем, оно относится. Проверка устраняет ложные срабатывания и предоставляет три статуса результата:
- verified: Учётное данное подтверждено как действительное и активное посредством проверки API
- unverified: Учётное данное обнаружено, но не подтверждено (может быть недействительным, просроченным или проверка отключена)
- unknown: Проверка предпринята, но не удалась из-за ошибок, например, сетевого сбоя или сбоя API
Например, детектор учётных данных AWS выполняет вызов API GetCallerIdentity к AWS API, чтобы проверить, активно ли учётное данное AWS.
📝 Использование
У TruffleHog есть подкоманда для каждого источника данных, который вы хотите отсканировать:
- git
- github
- gitlab
- huggingface
- docker
- s3
- filesystem (файлы и каталоги)
- syslog
- circleci
- travisci
- gcs (Google Cloud Storage)
- postman
- jenkins
- elasticsearch
- stdin
- multi-scan
Каждая подкоманда может иметь параметры, которые можно просмотреть с помощью флага --help, переданного подкоманде:```
$ trufflehog git --help
usage: TruffleHog [] [ ...]
TruffleHog is a tool for finding credentials.
Flags: -h, --[no-]help Show context-sensitive help (also try --help-long and --help-man). --log-level=0 Logging verbosity on a scale of 0 (info) to 5 (trace). Can be disabled with "-1". --[no-]profile Enables profiling and sets a pprof and fgprof server on :18066. -j, --[no-]json Output in JSON format. --[no-]json-legacy Use the pre-v3.0 JSON format. Only works with git, gitlab, and github sources. --[no-]github-actions Output in GitHub Actions format. --concurrency=12 Number of concurrent workers. --[no-]no-verification Don't verify the results. --results=RESULTS Specifies which type(s) of results to output: verified (confirmed valid by API), unknown (verification failed due to error), unverified (detected but not verified), filtered_unverified (unverified but would have been filtered out). Defaults to verified,unverified,unknown. --[no-]no-color Disable colorized output --[no-]allow-verification-overlap Allow verification of similar credentials across detectors --[no-]filter-unverified Only output first unverified result per chunk per detector if there are more than one results. --filter-entropy=FILTER-ENTROPY Filter unverified results with Shannon entropy. Start with 3.0. --config=CONFIG Path to configuration file. --[no-]print-avg-detector-time Print the average time spent on each detector. --[no-]no-update Don't check for updates. --[no-]fail Exit with code 183 if results are found. --[no-]fail-on-scan-errors Exit with non-zero error code if an error occurs during the scan. --verifier=VERIFIER ... Set custom verification endpoints. --[no-]custom-verifiers-only Only use custom verification endpoints. --detector-timeout=DETECTOR-TIMEOUT Maximum time to spend scanning chunks per detector (e.g., 30s). --archive-max-size=ARCHIVE-MAX-SIZE Maximum size of archive to scan. (Byte units eg. 512B, 2KB, 4MB) --archive-max-depth=ARCHIVE-MAX-DEPTH Maximum depth of archive to scan. --archive-timeout=ARCHIVE-TIMEOUT Maximum time to spend extracting an archive. --include-detectors="all" Comma separated list of detector types to include. Protobuf name or IDs may be used, as well as ranges. --exclude-detectors=EXCLUDE-DETECTORS Comma separated list of detector types to exclude. Protobuf name or IDs may be used, as well as ranges. IDs defined here take precedence over the include list. --[no-]no-verification-cache Disable verification caching --[no-]force-skip-binaries Force skipping binaries. --[no-]force-skip-archives Force skipping archives. --[no-]skip-additional-refs Skip additional references. --user-agent-suffix=USER-AGENT-SUFFIX Suffix to add to User-Agent. --[no-]version Show application version.
Commands: help [...] Show help.
git []
Find credentials in git repositories.
github [] Find credentials in GitHub repositories.
github-experimental --repo=REPO [] Run an experimental GitHub scan. Must specify at least one experimental sub-module to run: object-discovery.
gitlab --token=TOKEN [] Find credentials in GitLab repositories.
filesystem [] [...] Find credentials in a filesystem.
s3 [] Find credentials in S3 buckets.
gcs [] Find credentials in GCS buckets.
syslog --format=FORMAT [] Scan syslog
circleci --token=TOKEN Scan CircleCI
docker [] Scan Docker Image
travisci --token=TOKEN Scan TravisCI
postman [] Scan Postman
elasticsearch [] Scan Elasticsearch
jenkins --url=URL [] Scan Jenkins
huggingface [] Find credentials in HuggingFace datasets, models and spaces.
stdin Find credentials from stdin.
multi-scan Find credentials in multiple sources defined in configuration.
json-enumerator [...] Find credentials from a JSON enumerator input.
analyze Analyze API keys for fine-grained permissions information.
Например, чтобы просканировать репозиторий `git`, начните с```
trufflehog git https://github.com/trufflesecurity/trufflehog.git
Конфигурация
TruffleHog поддерживает определение пользовательских детекторов регулярных выражений
и несколько источников в файле конфигурации, предоставляемом через флаг --config.
Детекторы регулярных выражений могут использоваться с любой подкомандой, в то время как источники, определённые в конфигурации, предназначены только для подкоманды multi-scan.
Формат конфигурации для источников можно найти на странице документации по конфигурации источников Truffle Security.
Пример конфигурации источника GitHub и справочник параметров:```yaml sources:
- connection:
'@type': type.googleapis.com/sources.GitHub
repositories:
- https://github.com/trufflesecurity/test_keys.git unauthenticated: {} name: example config scan type: SOURCE_TYPE_GITHUB verify: true
Вы можете определить несколько соединений в ключе `sources` (см. выше), и TruffleHog будет сканировать все источники одновременно.
## S3
Источник S3 поддерживает использование ролей IAM для сканирования в дополнение к пользователям IAM. Это упрощает сканирование нескольких учетных записей AWS без необходимости полагаться на жестко заданные учетные данные для каждой учетной записи.
Удостоверению IAM, которое изначально использует TruffleHog, потребуется иметь привилегии `AssumeRole` в качестве участника в [политике доверия](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/) каждой роли IAM, которую он должен принять.
Для сканирования конкретного контейнера (bucket) с использованием локально установленных учетных данных или метаданных экземпляра, если работа ведется на EC2-инстансе:```bash
trufflehog s3 --bucket=<bucket-name>
Для сканирования конкретного бакета с использованием предполагаемой роли:```bash trufflehog s3 --bucket= --role-arn=
Несколько ролей могут быть переданы в качестве отдельных аргументов. Следующая команда попытается просканировать каждый bucket, к которому каждая роль имеет разрешение на перечисление через S3 API:```bash
trufflehog s3 --role-arn=<iam-role-arn-1> --role-arn=<iam-role-arn-2>
Коды выхода:
- 0: Ошибок нет, результаты не найдены.
- 1: Произошла ошибка. Возможно, источники не завершили сканирование.
- 183: Ошибок не было, но результаты найдены. Будет возвращён только при использовании флага
--fail.
:octocat: TruffleHog Github Action
Общее использование```
on: push: branches: - main pull_request:
jobs: test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Secret Scanning uses: trufflesecurity/trufflehog@main with: extra_args: --results=verified,unknown
В приведённом выше примере конфигурации мы ищем живые секреты во всех PR и пушах в `main`. Сканируются только изменения кода в указанных коммитах. Если вы хотите отсканировать всю ветку, см. раздел «Расширенное использование» ниже.
### Поверхностное клонирование
Если вы интегрируете TruffleHog в автономный рабочий процесс и не используете другие инструменты CI/CD вместе с TruffleHog, мы рекомендуем использовать [поверхностное клонирование](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---depthltdepthgt) для ускорения вашего рабочего процесса. Вот пример того, как это сделать:```
...
- shell: bash
run: |
if [ "${{ github.event_name }}" == "push" ]; then
echo "depth=$(($(jq length <<< '${{ toJson(github.event.commits) }}') + 2))" >> $GITHUB_ENV
echo "branch=${{ github.ref_name }}" >> $GITHUB_ENV
fi
if [ "${{ github.event_name }}" == "pull_request" ]; then
echo "depth=$((${{ github.event.pull_request.commits }}+2))" >> $GITHUB_ENV
echo "branch=${{ github.event.pull_request.head.ref }}" >> $GITHUB_ENV
fi
- uses: actions/checkout@v3
with:
ref: ${{env.branch}}
fetch-depth: ${{env.depth}}
- uses: trufflesecurity/trufflehog@main
with:
extra_args: --results=verified,unknown
...
В зависимости от типа события (push или PR), мы вычисляем количество присутствующих коммитов. Затем мы добавляем 2, чтобы иметь возможность ссылаться на базовый коммит до наших изменений кода. Мы передаем это целочисленное значение флагу fetch-depth в действии checkout вместе с соответствующей веткой. Теперь наш процесс checkout должен быть намного короче.
Обнаружение канареек
TruffleHog статически обнаруживает https://canarytokens.org/.

Расширенное использование```yaml
- name: TruffleHog
uses: trufflesecurity/trufflehog@main
with:
Repository path
path:Start scanning from here (usually main branch).
base:Scan commits until here (usually dev branch).
head: # optionalExtra args to be passed to the trufflehog cli.
extra_args: --log-level=2 --results=verified,unknownScan with a specific TruffleHog version (default: latest).
version:Docker image to pull. Override to use a registry mirror (default: ghcr.io/trufflesecurity/trufflehog).
image:
Если вы хотите указать конкретные ссылки `base` и `head`, вы можете использовать аргумент `base` (флаг `--since-commit` в TruffleHog CLI) и аргумент `head` (флаг `--branch` в TruffleHog CLI). Мы рекомендуем использовать эти аргументы только для очень специфических случаев, когда поведение по умолчанию не работает.
#### Расширенное использование: Сканирование всей ветки```
- name: scan-push
uses: trufflesecurity/trufflehog@main
with:
base: ""
head: ${{ github.ref_name }}
extra_args: --results=verified,unknown
TruffleHog GitLab CI
Пример использования```yaml
stages:
- security
security-secrets: stage: security allow_failure: false image: alpine:latest variables: SCAN_PATH: "." # Set the relative path in the repo to scan before_script: - apk add --no-cache git curl jq - curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin script: - trufflehog filesystem "$SCAN_PATH" --results=verified,unknown --fail --json | jq rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
В приведённом выше примере пайплайна мы сканируем все каталоги и файлы репозитория на предмет живых секретов. Эта задача выполняется только когда источником пайплайна является событие слияния (merge request), то есть запускается при создании нового запроса на слияние.
## Pre-commit Hook
TruffleHog можно использовать в pre-commit хуке, чтобы предотвратить утечку учётных данных до того, как они покинут ваш компьютер.
Смотрите [документацию по pre-commit хуку](https://github.com/trufflesecurity/trufflehog/blob/HEAD/PreCommit.md) для получения дополнительной информации.
## Custom Regex Detector (alpha)
TruffleHog поддерживает обнаружение и верификацию пользовательских регулярных выражений.
Для обнаружения требуется как минимум одно **регулярное выражение** и **ключевое слово**.
**Ключевое слово** — это фиксированный строковый литерал, который встречается внутри или рядом
с обнаруживаемым регулярным выражением. Для обеспечения максимальной гибкости верификации используется
вебхук, содержащий совпадения с регулярным выражением.
TruffleHog отправит JSON POST-запрос, содержащий совпадения с регулярным выражением, на
настроенную конечную точку вебхука. Если конечная точка ответит кодом состояния `200 OK`,
секрет считается подтверждённым. Если верификация не удалась из-за ошибок сети/API, результат помечается как неизвестный.
Пользовательские детекторы поддерживают несколько различных механизмов фильтрации: энтропия, регулярное выражение, нацеленное на всё совпадение, регулярное выражение, нацеленное на захваченный секрет,
и списки исключённых слов, проверяемые по секрету (захваченная группа, если есть, иначе всё совпадение). Обратите внимание, что если
ваш пользовательский детектор имеет несколько установленных `regex` (в этом примере `hogID` и `hogToken`), то фильтры применяются к каждому регулярному выражению. [Здесь](https://github.com/trufflesecurity/trufflehog/blob/HEAD/examples/generic_with_filters.yml) приведён пример пользовательского детектора с использованием этих фильтров.
**NB:** Эта функция является альфа-версией и может быть изменена.
### Пример детектора регулярных выражений
[Здесь](https://github.com/trufflesecurity/trufflehog/blob/HEAD/pkg/custom_detectors/CUSTOM_DETECTORS.md) описана настройка пользовательского детектора регулярных выражений с сервером верификации.
## Generic JWT Detection
TruffleHog поддерживает обнаружение и верификацию подмножества найденных универсальных JWT.
В частности, если JWT использует криптографию с открытым ключом, а не HMAC, и открытый ключ может быть получен, TruffleHog может определить, является ли JWT действующим или нет.
## :mag: Анализ
TruffleHog поддерживает углублённый анализ учётных данных для просмотра их разрешений и ресурсов, к которым они имеют доступ.```bash
trufflehog analyze
❤️ Участники
Этот проект существует благодаря всем людям, которые вносят вклад. [Сделать вклад].
💻 Внесение вклада
Вклад приветствуется! Пожалуйста, ознакомьтесь с нашими руководствами по внесению вклада.
Мы больше не принимаем вклад в TruffleHog v2, но этот код доступен в ветке v2.
Добавление новых детекторов секретов
Мы опубликовали документацию и инструменты для начала работы по добавлению новых детекторов секретов. Давайте улучшать обнаружение вместе!
Использование в качестве библиотеки
В настоящее время trufflehog находится в стадии активной разработки, и никаких гарантий стабильности публичных API на данный момент дать нельзя.
Изменение лицензии
Начиная с v3.0, TruffleHog выпускается под лицензией AGPL 3, включенной в LICENSE. TruffleHog v3.0 не использует ни одной части предыдущей кодовой базы, но были предприняты меры для сохранения обратной совместимости с интерфейсом командной строки. Работа, предшествующая этому выпуску, все еще доступна под лицензией GPL 2.0 в истории этого репозитория и предыдущих релизах и тегах пакетов. Для принятия вклада в будущем требуется заполненное CLA.