mcpField
S
security-watch

security-watch

github.com/proffesor-for-testingセキュリティ51960 回インストール今日更新
リポジトリ

security-watch について

security-watch は、ファイルへの書き込みを調べ、一般的なセキュリティ上の問題を検出してブロックする Claude スキルです。平文パターンを確認しますが、正式なセキュリティレビューの代替ではありません。

主な機能

  1. 01書き込み内の秘密情報を検出
  2. 02危険な関数を警告
  3. 03インジェクションパターンを検出
  4. 04安全でない設定を確認
  5. 05無視コメントに対応

活用シーン

  1. 01ソースコードへの秘密情報混入防止
  2. 02コード変更時の書き込み確認
  3. 03SQL やシェルのインジェクション調査
  4. 04無視コメントによるテストパターンの許可

インストール

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

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill security-watch

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

同梱ファイルscripts/scan-security.sh

詳細

セキュリティ監視モード

有効にすると、すべてのファイル書き込みをスキャンして、一般的なセキュリティ上のアンチパターンを検出し、危険なコードがコミットされるのをブロックします。

機能

次の内容を含む書き込みに警告を表示するか、ブロックします。

  • シークレット:ソースコード内の API キー、パスワード、トークン、秘密鍵
  • 危険な関数:eval()、Function()、innerHTML、dangerouslySetInnerHTML
  • インジェクションの攻撃経路:SQL/シェルコマンド内のサニタイズされていないテンプレートリテラル
  • 安全でない設定:http:// の URL、無効化された TLS 検証、* の CORS オリジン

有効化

/security-watch

フックの設定

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Write|Edit",
        "hook": ".claude/skills/security-watch/scripts/scan-security.sh"
      }
    ]
  }
}

検出パターン

#!/bin/bash
# scan-security.sh
CONTENT="$1"
ISSUES=0

# Secrets detection
SECRET_PATTERNS=(
  'AKIA[0-9A-Z]{16}'                    # AWS Access Key
  'sk-[a-zA-Z0-9]{48}'                  # OpenAI API Key
  'ghp_[a-zA-Z0-9]{36}'                 # GitHub Personal Token
  'password\s*[:=]\s*["\x27][^"\x27]+'  # Hardcoded passwords
  'BEGIN (RSA |EC )?PRIVATE KEY'         # Private keys
  'sk_live_[a-zA-Z0-9]+'                # Stripe secret key
)

for pattern in "${SECRET_PATTERNS[@]}"; do
  if echo "$CONTENT" | grep -qP "$pattern"; then
    echo "BLOCKED: Potential secret detected matching pattern: $pattern"
    ISSUES=$((ISSUES + 1))
  fi
done

# Dangerous functions
DANGER_PATTERNS=(
  '\beval\s*\('
  '\bFunction\s*\('
  '\.innerHTML\s*='
  'dangerouslySetInnerHTML'
  'child_process.*exec\('
  '\$\{.*\}.*(?:SELECT|INSERT|UPDATE|DELETE)'
)

for pattern in "${DANGER_PATTERNS[@]}"; do
  if echo "$CONTENT" | grep -qP "$pattern"; then
    echo "WARNING: Dangerous pattern detected: $pattern"
    ISSUES=$((ISSUES + 1))
  fi
done

if [ $ISSUES -gt 0 ]; then
  echo "Found $ISSUES security issues. Review before proceeding."
  exit 1
fi

注意事項

  • eval() のようなパターンを意図的に含むテスト用フィクスチャでは誤検知が発生します。// security-watch:ignore コメントを使用してください。
  • Base64 でエンコードされたシークレットは検出されません。この機能では平文のパターンのみをスキャンします。
  • テンプレートリテラルのインジェクション検出では、安全な文字列補間も誤検知することがあります。警告を慎重に確認してください。
  • これは最初の防御策であり、適切なセキュリティレビューの代わりにはなりません。

コメント