[Trufflehog] SecretsとCredentials検査

[Trufflehog] SecretsとCredentials検査

2023-08-31 hit count image

Trufflehogを使ってコードにSecretsとCredentialsが含まれたかチェックする方法について説明します。

概要

ローカルで開発をする時、サーバ、GitHubAWSなどの秘密キー(Secrets)Credentialsを使うことになります。この時、間違ってこのSecretsCredentialsをコミット(Commit)してしまうと、セキュリティに非常に脆弱になります。

今回のブログポストではGitHub ActionsまたはGitLab CITrufflehogを実行して、コミット(Commit)にSecretsCredentialsが含まれているか確認する方法について説明します。

TruffleHog

TruffleHog700個以上のSecrets / Credentials検査機を使ってコードでSecrets / Credentialsが含まれたかどうかを確認するツールです。

TruffleHogのインストール

TruffleHogは次のように色んな方法でインストールすることができます。

# 1. MacOS users
brew install trufflesecurity/trufflehog/trufflehog

# 2. Docker
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys

# 3. Docker for M1 and M2 Mac
docker run --platform linux/arm64 --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys

# 4. Binary releases
Download and unpack from https://github.com/trufflesecurity/trufflehog/releases

# 5. Compile from source
git clone https://github.com/trufflesecurity/trufflehog.git
cd trufflehog; go install

TruffleHogの実行

TruffleHogは次のように色んな方法で実行することができます。

# 1. Scan a repo for only verified secrets
trufflehog git https://github.com/trufflesecurity/test_keys --only-verified

# 2. Scan a GitHub Org for only verified secrets
trufflehog github --org=trufflesecurity --only-verified

# 3. Scan a GitHub Repo for only verified keys and get JSON output
trufflehog git https://github.com/trufflesecurity/test_keys --only-verified --json

# 4. Scan an S3 bucket for verified keys
trufflehog s3 --bucket=<bucket name> --only-verified

# 5. Scan a Github Repo using SSH authentication in docker
docker run --rm -v "$HOME/.ssh:/root/.ssh:ro" trufflesecurity/trufflehog:latest git ssh://github.com/trufflesecurity/test_keys

# 6. Scan individual files or directories
trufflehog filesystem path/to/file1.txt path/to/file2.txt path/to/dir

# 7. Scan GCS buckets for verified secrets.
trufflehog gcs --project-id=<project-ID> --cloud-environment --only-verified

GitHub Acionts

GitHub ActionsTrufflehogを実行して、コミット(Commit)にSecretsCredentialsが含まれているか確認することができます。.github/workflows/scan_secrets.ymlファイルを作って次のように修正します。


name: Scan secrets
on:
  pull_request:
    branches:
      - main
jobs:
  ScanSecrets:
    name: Scan secrets
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Scan secrets
        uses: trufflesecurity/trufflehog@main
        with:
          path: ./
          base: ${{ github.event.repository.default_branch }}
          extra_args: --only-verified

このようにGitHub Actionsを生成すると、Pull Requestを生成するたびにTrufflehogを実行して、SecretsCredentialsが含まれているか確認することができます。

GitLab CI

GitLab CITrufflehogを実行して、コミット(Commit)にSecretsCredentialsが含まれているか確認することができます。.gitlab-ci.ymlファイルを生成して次のように修正します。

...
scan_secrets:
  stage: scan
  tags:
    - docker
  image: golang:latest
  script:
    - git clone https://github.com/trufflesecurity/trufflehog.git
    - cd trufflehog; go install
    - cd ..
    - trufflehog git file://. --only-verified --fail --no-update --since-commit=main
  only:
    refs:
      - merge_requests
...

このようにGitLab CIを生成すると、Pull Requestを生成するたびにTrufflehogを実行して、SecretsCredentialsが含まれているか確認することができます。

完了

これでTrufflehogを使ってコミット(Commit)にSecretsCredentialsが含まれているか確認する方法について見てみました。またGitHub ActionsGitLab CITrufflehogを実行する方法についても説明しました。

皆さんもGitHub ActionsGitLab CITrufflehogを適用してコミット(Commit)にSecretsCredentialsが含まれているか確認してみてください。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts