TruffleHog

Git の履歴やファイル、クラウドのストレージなどから、漏れた API キーやパスワードを探すスキャナー。見つけた鍵が今も使えるかを確かめる機能があります。

cat trufflehog/meta.yml確認日 2026-10-25

安全性

影響範囲 外に届く他人の通信を見る、または他人の機器へ通信を送る
管理者権限
不要
検証環境
不要

使い方

用途
防御
難易度
初級
形態
コマンドライン
対応環境
Linux / macOS / Windows / Docker

信頼性

リポジトリ
trufflesecurity/trufflehog
ライセンス
条件つきAGPL-3.0
GitHub
スター28,6982026-10-25 時点
メンテ状況
更新が続いている最終更新 2026-10-24
目次
  1. はじめに
  2. TruffleHog でできること
  3. 検証の仕組み:見つけた鍵を発行元に送る
  4. 安全な試し方:自分のテスト用フォルダを調べる
  5. 主な使い方
  6. Gitleaks との違い
  7. 注意点
  8. 次に読む
  9. 出典

TruffleHog は、コードの履歴やファイル、クラウドのストレージに紛れ込んだ API キーやパスワードを探すツールです。見つけた鍵を発行元のサービスに送って、今も使えるかを確かめる機能があるので、使う前にこの仕組みを理解しておきましょう。

この記事は、GitHub などでコードを管理している開発者に向けています。読み終えると、次のことができるようになります。

  • 自分のリポジトリやフォルダから秘密情報を探す
  • 鍵の確認(検証)を止めたり、結果を絞り込んだりする
  • 秘密情報が見つかったときに、正しく後始末をする

TruffleHog でできること

TruffleHog には、調べる対象ごとにサブコマンドがあります。README に載っている主なものは次のとおりです。

サブコマンド 調べるもの
git Git リポジトリのコミット履歴
github / gitlab GitHub・GitLab 上のリポジトリや組織
filesystem ファイルやディレクトリ
docker Docker イメージ
s3 / gcs Amazon S3・Google Cloud Storage のバケット
stdin 標準入力から渡したテキスト

ほかに huggingface、syslog、circleci、travisci、postman、jenkins、elasticsearch、multi-scan もあります。README によると、TruffleHog は 800 種類を超える秘密情報を見分けられます。

検証の仕組み:見つけた鍵を発行元に送る

TruffleHog は、見つけた鍵ごとに、その鍵が属するサービスの API へ実際に接続して、有効かどうかを確かめます。README はこれを credential verification と呼んでいます。たとえば AWS の鍵なら、AWS の API に GetCallerIdentity を呼び出して確かめます。

検証は既定で動きます。結果は次の 3 種類に分かれます。

結果 意味
verified API で確かめた結果、有効だった
unverified 見つけたが、有効とは確かめられなかった(無効・期限切れ・検証を止めた場合を含む)
unknown 確かめようとしたが、通信や API のエラーで失敗した

検証と出力は、次のオプションで変えられます。

オプション 働き
--no-verification 検証をしない。鍵を外部のサービスへ送らない
--results=verified 有効と確かめられたものだけ表示する
--results=verified,unknown 有効なものと、確かめられなかったものを表示する

--results を付けないときは、verified,unverified,unknown がすべて表示されます。また、README によると、よく漏れる 20 種類ほどの鍵については、analyze サブコマンドで多数のリクエストを送り、その鍵の権限や使える範囲まで調べられます。

しないことTruffleHog は秘密情報を見つけて確かめるだけで、消したり無効にしたりはしません。鍵の無効化と作り直しは、発行元のサービスで自分で行います。

安全な試し方:自分のテスト用フォルダを調べる

実在する鍵は使わず、自分で作ったテスト用のフォルダとダミーの文字列で試します。最初は --no-verification を付けて、外部への送信を止めておきましょう。

  1. TruffleHog をインストールします。macOS では brew install trufflehog で入ります。Windows と Linux はリリース一覧から OS 用のファイルを入手して展開します。Docker イメージ trufflesecurity/trufflehog もあります。

  2. 練習用のフォルダ(例:practice)を作り、設定ファイル風のテキストにダミーの文字列を書きます。実在するサービスの鍵は入れないでください。

  3. 次のコマンドを実行します。

    trufflehog filesystem practice --no-verification
  4. 何も見つからないと、TruffleHog のロゴの行だけが出て終わります。ダミーの文字列は、形式によっては検出されないことがあります。

公式の README は、例に test_keys という練習用リポジトリを使っています。Git の履歴の調べ方を練習するときは、これを手元に複製し、その外側のフォルダから実行します。

git clone https://github.com/trufflesecurity/test_keys.git
trufflehog git file://test_keys --no-verification

主な使い方

やりたいこと コマンドの例
自分のリポジトリの履歴を調べる trufflehog git file://. --no-verification
フォルダやファイルを調べる trufflehog filesystem path/to/dir
CI で、新しいコミットだけ調べて失敗させる trufflehog git file://. --since-commit main --branch feature-1 --results=verified,unknown --fail

--fail を付けると、結果が見つかったときに終了コード 183 で終わります。エラーなしで何も見つからなければ 0、エラーが起きると 1 です。コミット前に止めたいときは、公式の PreCommit.md に pre-commit フックの設定方法があります。特定の行を除外したいときは、その行に trufflehog:ignore というコメントを書きます。

Gitleaks との違い

どちらも秘密情報を探すツールです。公式の情報で確かめられる違いは次のとおりです。

TruffleHog Gitleaks
見つけた鍵の検証 あり(既定で有効) README に検証機能の説明はない
ライセンス AGPL-3.0 MIT
調べる対象 Git、ファイル、クラウドのストレージ、CI など多数 Git、ディレクトリ、標準入力

手元だけで完結させたいなら、Gitleaks か、TruffleHog に --no-verification を付けて使います。

注意点

  • 調べる対象は、自分か自分の組織のリポジトリに限ってください。他人のリポジトリで見つけた鍵を検証すると、他人の認証情報を使ってサービスに接続することになります。許可なく行ってはいけません。
  • 他人のリポジトリを調べる必要があるときは、書面で許可を得たうえで、--no-verification を付けてください。
  • 秘密情報が見つかったら、ファイルや履歴から消すだけでは足りません。鍵は発行元のサービスで無効にして、新しいものを作り直してください。過去のコミットや複製されたリポジトリに残っている可能性があります。
  • 結果には鍵そのものが表示されます。画面共有中や、ログが他人に見える場所では実行しないでください。
  • TruffleHog には更新を確認する機能があります。止めたいときは --no-update を付けます。

次に読む

出典

  1. 公式リポジトリ READMEgithub.com/trufflesecurity/trufflehog
  2. ライセンス(LICENSE)github.com/trufflesecurity/trufflehog/blob/main/LICENSE
  3. リリース一覧github.com/trufflesecurity/trufflehog/releases
  4. pre-commit フックの説明(PreCommit.md)github.com/trufflesecurity/trufflehog/blob/main/PreCommit.md
  5. 練習用リポジトリ test_keysgithub.com/trufflesecurity/test_keys
  6. Gitleaks 公式リポジトリ READMEgithub.com/gitleaks/gitleaks

確認日 2026-10-25

似たツール

Gitleaks

影響範囲 手元だけ
gitleaks/gitleaks

Git リポジトリやファイルに紛れ込んだパスワード、API キー、トークンなどの秘密情報を見つけるコマンドラインツール。

用途
防御
形式
コマンドライン
難易度
初級
ライセンス
自由に使えるMIT
分類
脆弱性スキャン
更新が続いているスター30,315最終更新 2026-10-23
Gitleaksの解説を読む

Infisical

影響範囲 手元だけ
infisical/infisical

API キーやパスワードなどの秘密情報を 1 か所に保管し、アプリや CI に実行時に渡すシークレット管理基盤。クラウド版と自前で動かす版がある。

用途
防御
形式
サーバーで動かす
難易度
中級
ライセンス
要確認MIT(ee ディレクトリは商用の Enterprise ライセンス)
分類
防御・エンドポイント/アプリケーションセキュリティ
更新が続いているスター29,981最終更新 2026-10-25
Infisicalの解説を読む