テック技報最新号へ →
セキュリティ

Semgrep+gitleaks(+secretlint)の二段構えを全リポジトリに入れる

コードの危険パターンは Semgrep、シークレット混入は gitleaks / secretlint で、pre-commit と CI の両方で自動スキャンする。AI を使っていないプロジェクトでも価値がある。

@matsuu · 2026-10-09
#sast#secret-scanning#ci#ai-coding

何を解決するか

  • バイブコーディングで大量に生成されるコードに、SQL インジェクション等の危険パターンや API キーのハードコードが紛れ込む。

手順

yaml
# .pre-commit-config.yaml
repos:
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.x.x          # 実際はSHAで固定推奨
    hooks: [{ id: gitleaks }]
  - repo: https://github.com/semgrep/pre-commit
    rev: v1.x.x
    hooks: [{ id: semgrep, args: ["--config", "p/default", "--error"] }]
yaml
# GitHub Actions(抜粋)
- run: semgrep scan --config p/default --error
- run: gitleaks detect --redact --exit-code 1
  • secretlint は false positive を避けるため厳密にチェックできないルールを recommended に入れていないことがある(@azu_re)。必要なルールは個別に有効化する。
  • Claude Code の env scrub(子プロセスに渡す環境変数の除去)と secretlint・gitleaks で多層防御する構成が DevelopersIO で紹介されている。
  • 個人 OSS の全 repo にセキュリティベースラインを宣言的に配る方法(@gr1m0h のブログ)を使えば、上記設定を一括配布できる。

注意点

  • gitleaks は履歴全体もスキャンできる(gitleaks detect はデフォルトで git 履歴対象)。過去に漏れたキーは削除ではなくローテーションが必須。

出典

X の元の投稿を開く