コンテンツにスキップ
Zenn Semgrep Gitleaks Security

バイブコーディングが怖いので、全PJにSemgrep + gitleaksの自動セキュリティスキャンを仕込んだ話

  • URL: https://zenn.dev/zittiandbuoni/articles/632ff0709247f6
  • 日付: 2026-06-07
  • Tier: Tier 3
  • 要旨: Claude Codeで個人開発する際の「AIが書いた危険なコード・漏れたシークレットに気づけないリスク」に対し、Semgrep(SAST)+gitleaks(シークレット検出)をpre-commit hook+GitHub Actionsで二層防御として全PJに導入した記録。

詳細

ツールの役割分担:

  • Semgrep:コードの静的解析(SAST)→subprocess.call(cmd, shell=True)・SQL文字列結合等の危険パターン検出
  • gitleaks:シークレットスキャン→AWSキー・Slackトークン・Stripeシークレット等のハードコード検出
  • 守備範囲が異なるため二段構えが有効

二層防御構成:

  1. ローカル(pre-commit hook)git commitのたびにスキャン、危険コードをリポジトリに入れさせない
  2. CI(GitHub Actions):push/PRのたびに再スキャン、--no-verifyスキップ分を拾う

.pre-commit-config.yaml設定:

repos:
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.30.1
    hooks:
      - id: gitleaks
  - repo: https://github.com/semgrep/semgrep
    rev: v1.165.0
    hooks:
      - id: semgrep
        args: ['--config', 'auto', '--error']

Semgrepの--config autoでリポジトリの言語構成に合わせてコミュニティルールセットを自動選択。最初はautoで様子を見て調整するアプローチを推奨。

gitleaksはロックファイル・テストフィクスチャ・.env.exampleをallowlistに追加して誤検知を抑制。