security-watch について
security-watch は、ファイルへの書き込みを調べ、一般的なセキュリティ上の問題を検出してブロックする Claude スキルです。平文パターンを確認しますが、正式なセキュリティレビューの代替ではありません。
主な機能
- 01書き込み内の秘密情報を検出
- 02危険な関数を警告
- 03インジェクションパターンを検出
- 04安全でない設定を確認
- 05無視コメントに対応
活用シーン
- 01ソースコードへの秘密情報混入防止
- 02コード変更時の書き込み確認
- 03SQL やシェルのインジェクション調査
- 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 でエンコードされたシークレットは検出されません。この機能では平文のパターンのみをスキャンします。
- テンプレートリテラルのインジェクション検出では、安全な文字列補間も誤検知することがあります。警告を慎重に確認してください。
- これは最初の防御策であり、適切なセキュリティレビューの代わりにはなりません。
コメント
Markdown 対応