security-checklisted
Install: claude install-skill iamtatsuki05/dotfiles
# Security Check
コードベースのセキュリティ脆弱性を体系的に検出・分析する。
## ワークフロー
```
セキュリティチェック依頼
│
├─ 特定ファイル/PR → 対象コードを読み取り、直接分析
│
└─ プロジェクト全体 → 以下のフェーズを順に実行
│
├─ Phase 1: シークレット・機密情報スキャン
├─ Phase 2: インジェクション脆弱性スキャン
├─ Phase 3: 認証・認可チェック
├─ Phase 4: 依存関係チェック
└─ Phase 5: レポート生成
```
## Phase 1: シークレット・機密情報スキャン
Grepで以下のパターンを検索:
```bash
# APIキー・シークレット
rg -i "(api[_-]?key|secret|password|token|credential)\s*[:=]\s*['\"][^'\"]+['\"]"
# AWSキー
rg "AKIA[0-9A-Z]{16}"
# プライベートキー
rg "-----BEGIN (RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----"
# 環境変数の直接埋め込み
rg -i "(DB_PASSWORD|JWT_SECRET|STRIPE_KEY)\s*="
```
**除外対象**: `.env.example`, `*.test.*`, `*_test.go`, `mock*`
検出した secret 候補は値を再掲しない。ファイル、行、種類、露出の疑いを示し、値は先頭/末尾数文字も含めて原則マスクする。明らかなテスト fixture や `.env.example` でも、実在する形式のキーに見える場合は誤検知候補として分類する。
## Phase 2: インジェクション脆弱性スキャン
### SQLインジェクション
```bash
# 文字列連結によるSQL構築
rg "SELECT.*FROM.*WHERE.*\+|f['\"]SELECT|format.*SELECT"
rg "execute\(.*\+|query\(.*\+"
```
### コマンドインジェクション
```bash
# シェルコマンド実行
rg "os\.system\(|subprocess.*shell=True|exec\(|eval\("
rg "child_process\.exec\(|spawn.*shell:"
rg "Runtime\.getRuntime\(\)\.exec\("
```
### XSS
```bash
# 安全でな��HTML出力
rg "innerHTML\s*=|dangerouslySetInnerHTML|v-html="
rg "\.html\(.*\$|document\.write\("
```
### デシリアライゼーション
```bash
rg "pickle\.load|yaml\.load\((?!.*SafeLoader)|unserialize\(|ObjectInputStream"
```
## Phase 3: 認証・認可チェック
### 認証の確認事項
- パスワードハッシュアルゴリズム(bcrypt/Argon2推奨)
- セッション管理の安全性
-