defense について
Webアプリを対象に、シークレットやアクセス制御からAPI保護、機密データの扱いまで8領域を確認するセキュリティ監査スキルです。重要度別にファイル名と行番号付きで問題を報告します。
主な機能
- 01ハードコードされたシークレットの検出
- 02認証とアクセス制御の確認
- 03入力検証と暗号化の確認
- 04OWASP Top 10リスクの監査
- 05API、レート制限、機密データの確認
活用シーン
- 01リリース前のWebアプリ監査
- 02認証とルート保護のレビュー
- 03シークレットや個人情報の露出検出
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ariadoss/ superskills --skill defenseインストール後、Claude Code で/defenseを入力して読み込まれたか確認します。
詳細
多層防御 — セキュリティ検証
Web アプリケーション向けの多層セキュリティ監査です。8 つのセキュリティレイヤーにわたってチェックを実行します。
ワークフロー
各レイヤーを順番に実行します。検出事項は、重大度(CRITICAL / HIGH / MEDIUM / LOW)と file:line 参照を添えて報告します。
レイヤー 1:シークレットのスキャン
ハードコードされたシークレット、API キー、トークン、認証情報を検索します。
grep -rn "API_KEY\|SECRET_KEY\|DATABASE_URL\|PRIVATE_KEY\|password\s*=\|sk_live\|sk_test" . \
--include="*.ts" --include="*.tsx" --include="*.js" --include="*.py" --include="*.env" \
| grep -v node_modules | grep -v ".next" | grep -v ".env.example" | grep -v __pycache__
確認項目:
- ソースコードにシークレットがないこと(
.envのみに保存すること) .envが.gitignoreに含まれていること- Git の履歴にシークレットがないこと:
git log --all -p -S "sk_live\|API_KEY\|SECRET" -- . ':!.env*' | head -50
レイヤー 2:認証と認可
- セッション管理:トークンの有効期限、httpOnly/secure/sameSite Cookie、ログアウト時の無効化
- ルート保護:すべての API ルートで処理前に認証を確認すること
- ロールの適用:異なる種類のユーザーが、自身のリソースのみアクセスできること
- IDOR の防止:リソースへのアクセスを認証済みユーザーの範囲に限定すること
# Find potentially unprotected API routes
find . -path "*/api/*/route.ts" -o -path "*/api/*/route.js" | xargs grep -L "auth\|session\|token\|verify" 2>/dev/null
レイヤー 3:入力検証
- すべてのユーザー入力を検証すること(スキーマ、型チェック)
- 生の SQL を使用しないこと — パラメーター化クエリまたは ORM のみを使用すること
- シェル呼び出しでの文字列補間によるコマンドインジェクションがないこと
- ファイルアップロードに種類とサイズの制限があること
- URL パラメーターをサニタイズすること
# Check for template literal SQL or shell commands
grep -rn "exec(\`\|sql\`\|query(\`" . --include="*.ts" --include="*.js" | grep -v node_modules
レイヤー 4:暗号化
- 保存時:機密データをデータベース内で暗号化すること
- 転送中:HTTPS を強制し、HTTP へのフォールバックをなくすこと
- 鍵管理:鍵は環境変数に保存し、ソースコードに含めず、ログにも記録しないこと
レイヤー 5:OWASP Top 10
| # | リスク | 確認項目 |
|---|---|---|
| A01 | アクセス制御の不備 | リソースの分離、ロールチェック、IDOR |
| A02 | 暗号化の失敗 | PII の暗号化、鍵管理 |
| A03 | インジェクション | SQL、コマンド、テンプレートインジェクション |
| A04 | 安全でない設計 | ビジネスロジックの欠陥 |
| A05 | セキュリティ設定のミス | デフォルト認証情報、詳細すぎるエラー、デバッグモード |
| A06 | 脆弱なコンポーネント | npm audit、古い依存関係 |
| A07 | 認証の失敗 | セッション管理、ブルートフォース攻撃の防止 |
| A08 | データ整合性の失敗 | Webhook 署名、CSRF トークン |
| A09 | ログ記録の失敗 | 監査証跡、ログに PII を記録しないこと |
| A10 | SSRF | サーバー側リクエストでの URL 検証 |
# Dependency vulnerabilities
npm audit --production 2>/dev/null | head -50
レイヤー 6:API セキュリティ
- Webhook 署名の検証(Stripe など)
- API キーをクライアント側のコードに公開しないこと
- パブリックエンドポイントにレート制限を設けること
- CORS を適切に設定すること
- Content-Type を検証すること
レイヤー 7:レート制限と DoS 対策
- API ルートにレート制限を設けること
- ログインエンドポイントにブルートフォース攻撃対策を設けること
- ファイルアップロードのサイズ制限を適用すること
- 負荷の高い処理をスロットリングすること
レイヤー 8:機密データの保護
- PII をログに記録しないこと
- エラーメッセージに PII を含めないこと
- 機密フィールドを API レスポンスから除外すること
- データ保持ポリシーを適用すること
# Check for PII in logs
grep -rn "console\.\(log\|error\|warn\).*\(password\|ssn\|social\|secret\|token\)" . \
--include="*.ts" --include="*.js" | grep -v node_modules
レポート形式
## Security Audit Report
### Critical Findings
- [CRITICAL] Description — file:line
### High Findings
- [HIGH] Description — file:line
### Medium/Low Findings
- [MEDIUM/LOW] Description — file:line
### Passed Checks
- [PASS] Layer description
コメント
Markdown 対応