mcpField
S
secret-scanner

secret-scanner

github.com/ovachieverセキュリティ5674 回インストール48 週間前に更新
リポジトリ

secret-scanner について

コードベース内の秘密情報や認証情報の露出を検出する、開発者向けのセキュリティスキルです。各種認証情報を検査し、機密ファイルが .gitignore に含まれているかも確認します。

主な機能

  1. 01API キーとトークンの検出
  2. 02データベース認証情報と URI の識別
  3. 03秘密鍵と認証用シークレットの検出
  4. 04シークレット検出時のコミット阻止
  5. 05機密ファイルの除外ルール確認

活用シーン

  1. 01コミット前のステージ済みファイル検査
  2. 02.env や設定ファイルの編集後のスキャン
  3. 03コード内のハードコードされた認証情報の発見
  4. 04機密ファイルが Git の除外対象か確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ovachiever/droid-tings --skill secret-scanner

インストール後、Claude Code で/secret-scannerを入力して読み込まれたか確認します。

同梱ファイルREADME.md

詳細

シークレットスキャナー スキル

コードベースでのシークレットの誤公開を防ぎます。

有効になるタイミング

  • ✅ git のコミット前
  • ✅ ファイルの変更・保存時
  • ✅ ユーザーがシークレット、キー、認証情報に言及したとき
  • ✅ .env ファイルの変更時
  • ✅ 設定ファイルの変更時

検出対象

API キーとトークン
  • AWS アクセスキー(AKIA...)
  • Stripe API キー(sk_live_...、pk_live_...)
  • GitHub トークン(ghp_...)
  • Google API キー
  • OAuth トークン
  • JWT シークレット
データベース認証情報
  • データベース接続文字列
  • MySQL/PostgreSQL のパスワード
  • MongoDB 接続 URI
  • Redis のパスワード
秘密鍵
  • SSH 秘密鍵
  • RSA/DSA キー
  • PGP/GPG キー
  • SSL 証明書
認証シークレット
  • パスワード変数
  • 認証トークン
  • セッションシークレット
  • 暗号化キー

アラートの例

API キーの検出
// You type:
const apiKey = 'sk_live_1234567890abcdef';

// I immediately alert:
🚨 CRITICAL: Exposed Stripe API key detected!
📍 File: config.js, Line 3
🔧 Fix: Use environment variables
  const apiKey = process.env.STRIPE_API_KEY;
📖 Add to .gitignore: .env
AWS 認証情報
# You type:
aws_access_key = "AKIAIOSFODNN7EXAMPLE"

# I alert:
🚨 CRITICAL: AWS access key exposed!
📍 File: aws_config.py, Line 1
🔧 Fix: Use AWS credentials file or environment variables
  aws_access_key = os.getenv("AWS_ACCESS_KEY_ID")
📖 Never commit AWS credentials
データベースのパスワード
# You type in docker-compose.yml:
environment:
  DB_PASSWORD: "mySecretPassword123"

# I alert:
🚨 CRITICAL: Database password in configuration file!
📍 File: docker-compose.yml, Line 5
🔧 Fix: Use .env file
  DB_PASSWORD: ${DB_PASSWORD}
📖 Add .env to .gitignore

検出パターン

パターンの種類

信頼度:高

  • 既知の API キー形式(Stripe、AWS など)
  • 秘密鍵のヘッダー
  • JWT トークン
  • 認証情報を含む接続文字列

信頼度:中

  • 「password」「secret」「key」という名前の変数
  • 機密性の高い文脈にある Base64 エンコード文字列
  • 代入された長いランダム文字列

信頼度:低(要確認)

  • 汎用的なシークレットパターン
  • コメント内にある可能性のある認証情報

Git との統合

コミット前の保護
# Before commit, I scan:
git add .
git commit

# I block if secrets found:
🚨 CRITICAL: Cannot commit - secrets detected!
📍 3 secrets found:
  - config.js:12 - API key
  - .env:5 - Database password (in gitignore - OK)
  - auth.js:45 - JWT secret

❌ Commit blocked - remove secrets first
.gitignore の検証

機密ファイルが .gitignore に含まれているか確認します。

✅ .env - In .gitignore (good)
⚠️ config/secrets.json - NOT in .gitignore (add it!)
✅ .aws/credentials - In .gitignore (good)

誤検出への対応

サンプルファイル
// I understand these are examples:
// Example: const apiKey = 'your_api_key_here';
// TODO: Add your API key from environment
テストファイル
// Test fixtures are OK (but flagged for review):
const mockApiKey = 'sk_test_1234567890abcdef';  // ✅ Test key
ドキュメント

Set your API key: `export API_KEY=your_key_here`

security-auditor との関係

secret-scanner(私): 公開されたシークレットと認証情報 security-auditor: コードの脆弱性パターン

併用する場合
secret-scanner: Finds hardcoded API key
security-auditor: Finds how the key is used insecurely
Combined: Complete security picture

簡単な修正方法

環境変数に移す
// Before:
const apiKey = 'sk_live_abc123';

// After:
const apiKey = process.env.API_KEY;

// .env file (add to .gitignore):
API_KEY=sk_live_abc123
シークレット管理を使用する
// AWS Secrets Manager
const AWS = require('aws-sdk');
const secrets = new AWS.SecretsManager();
const secret = await secrets.getSecretValue({ SecretId: 'myApiKey' }).promise();
設定ファイル
# docker-compose.yml
services:
  app:
    environment:
      - API_KEY=${API_KEY}  # From .env file

# .env (gitignored)
API_KEY=sk_live_abc123

サンドボックスとの互換性

サンドボックスなしで動作: ✅ はい(推奨) サンドボックスありで動作: ✅ はい

  • ファイルシステム:読み取り専用アクセス
  • ネットワーク:不要
  • 設定:不要

カスタマイズ

会社固有のシークレットパターンを追加します。

cp -r ~/.claude/skills/security/secret-scanner \
      ~/.claude/skills/security/company-secret-scanner

# Edit SKILL.md to add:
# - Internal API key formats
# - Company-specific secret patterns
# - Custom detection rules

ベストプラクティス

  1. シークレットを絶対にコミットしない - 環境変数を使用する
  2. .gitignore を使用する - .env、secrets.json などを追加する
  3. 公開されたシークレットをローテーションする - コミットした場合は、すぐにローテーションする
  4. シークレット管理を使用する - AWS Secrets Manager、HashiCorp Vault
  5. 定期的に監査する - コードに公開されたシークレットがないか確認する

緊急対応

シークレットをコミットした場合
  1. シークレットをすぐにローテーションする
  2. git の履歴から削除する
    git filter-branch --force --index-filter \
      "git rm --cached --ignore-unmatch config/secrets.json" \
      --prune-empty --tag-name-filter cat -- --all
    
  3. 強制プッシュする(チームと調整する)
  4. 新しいシークレットですべてのデプロイを更新する

関連ツール

  • security-auditor スキル:脆弱性の検出
  • @code-reviewer サブエージェント:セキュリティレビュー
  • /review コマンド:包括的なセキュリティチェック

コメント