美容院コントで学ぶ、Trufflehogを使ったソースコードのセキュリティチェック
ソフトウェア開発において、認証情報やAPIキー、パスワードなどの秘密情報が誤ってGitリポジトリにコミットされてしまうことはよくあります。これは、ソースコードが公開されると、悪意のある第三者にこれらの情報が利用され、深刻なセキュリティインシデントに繋がる可能性があります。
trufflehogは、このようなリスクを未然に防ぐために、以下のような面でソフトウェアエンジニアの強力な味方になります。
継続的なセキュリティチェック
CI/CDパイプラインに組み込むことで、コミットやプッシュのたびに自動的にリポジトリをスキャンし、秘密情報の流出を即座に検知できます。これにより、手動でのチェックの手間が省け、開発スピードを落とすことなくセキュリティを確保できます。
歴史的なスキャン
過去のコミット履歴全体をスキャンできるため、すでに流出してしまった秘密情報を発見し、対処することができます。
多様なファイル形式のサポート
単なるテキストファイルだけでなく、ZIPファイルやDockerイメージなど、様々なファイル形式の中にある秘密情報も検出できます。
高精度な検出
正規表現だけでなく、エントロピー分析(データの無秩序性を評価する方法)や、APIキーのプレフィックスなどのルールベースのパターンも利用することで、誤検知を減らし、高精度な検出を実現します。
たとえて言うなら、trufflehogは、美容院のスタイリストがカットの仕上げに、鏡を使って見えない後ろの部分まで細かくチェックしてくれるようなものです。 普段見落としがちな、隠れたセキュリティリスクをしっかり見つけてくれます。
trufflehogの導入はとても簡単です。Go言語がインストールされていれば、以下のコマンドでインストールできます。
go install github.com/trufflesecurity/trufflehog/v3@latest
もしGo言語がインストールされていなくても、HomebrewやDockerなど、様々な方法でインストールが可能です。
Homebrew (macOS/Linux)
brew install trufflehog
Docker
docker pull trufflesecurity/trufflehog
現在作業しているローカルリポジトリをスキャンしたい場合は、以下のコマンドを実行します。
trufflehog git file:///path/to/your/repository
このコマンドは、指定されたリポジトリ内のすべてのファイルとコミット履歴をスキャンし、検出された秘密情報を出力します。
GitHubなどのリモートリポジトリをスキャンする場合は、リポジトリのURLを指定します。
trufflehog git https://github.com/trufflesecurity/test_keys.git
特定のコミットから先の変更だけをスキャンしたい場合や、特定のブランチだけをスキャンしたい場合は、--since-commitや--branchオプションを使います。
trufflehog git https://github.com/trufflesecurity/test_keys.git --since-commit <コミットID>
trufflehog git https://github.com/trufflesecurity/test_keys.git --branch <ブランチ名>
スキャン結果をJSON形式で出力したい場合は、--jsonオプションを使います。これは、CI/CDツールと連携する際に非常に便利です。
trufflehog git https://github.com/trufflesecurity/test_keys.git --json