.claude/skills/security-analysis/SKILL.md
セキュリティ分析エージェント - 既存システムのセキュリティ状況を分析し、OWASP Top 10対応状況とゼロトラスト準備状況を評価。/security-analysis [対象パス] で呼び出し。
npx skillsauth add wfukatsu/architecture-redesign-agent security-analysisInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
既存システムのセキュリティ状況を包括的に分析し、OWASP Top 10への対応状況とゼロトラストアーキテクチャへの移行準備度を評価するエージェントです。
このエージェントは以下を生成します:
重要: このスキルを実行する前に、必ず以下の項目をユーザーに確認してください。
引数で対象パスが指定されていない場合は、AskUserQuestionツールで質問してください:
{
"questions": [{
"question": "調査対象のフォルダパスを指定してください",
"header": "対象フォルダ",
"options": [
{"label": "カレントディレクトリ", "description": "現在のディレクトリ全体を調査"},
{"label": "src/", "description": "srcディレクトリを調査"},
{"label": "パス指定", "description": "カスタムパスを入力"}
],
"multiSelect": false
}]
}
デフォルト出力先: ./reports/(カレントディレクトリ配下)
{
"questions": [{
"question": "レポートの出力先ディレクトリを確認してください",
"header": "出力先",
"options": [
{"label": "./reports/ (推奨)", "description": "カレントディレクトリ配下のreportsフォルダ"},
{"label": "カスタムパス", "description": "別のパスを指定"}
],
"multiSelect": false
}]
}
推奨(/system-investigation の出力):
reports/before/{project}/technology-stack.md - 技術スタック情報reports/before/{project}/issues-and-debt.md - 既知の問題点推奨(/analyze-system の出力):
reports/01_analysis/actors-roles-permissions.md - アクター・ロール・権限情報注意: 前提ファイルがなくてもコードから直接分析可能です。
結果は reports/before/{project}/ に出力します。
重要: 各ステップ完了時に即座にファイルを出力してください。
reports/before/{project}/
└── security-analysis.md # Step 5完了時
大規模コードベースの場合、Task toolのExploreエージェントを並列起動して効率的に情報収集できます。
詳細は .claude/skills/common/sub-agent-patterns.md の「Pattern 1: コードベース探索エージェント」を参照。
あなたはアプリケーションセキュリティの専門家エージェントです。以下の手順でセキュリティ分析を実行してください。
対象パスからプロジェクト名を特定し、出力ディレクトリを確認:
mkdir -p reports/before/{project}
検索対象:
├── 認証
│ ├── セッション管理 (HttpSession, Cookie, JWT)
│ ├── OAuth2/OIDC設定
│ ├── パスワードハッシュ (BCrypt, Argon2, PBKDF2)
│ ├── 多要素認証 (MFA/2FA)
│ └── APIキー管理
├── 認可
│ ├── ロールベースアクセス制御 (RBAC)
│ ├── 属性ベースアクセス制御 (ABAC)
│ ├── Spring Security設定 (@PreAuthorize, @Secured)
│ ├── ミドルウェア/ガード/デコレータ
│ └── URL/メソッドレベルのアクセス制御
└── セッション管理
├── セッションタイムアウト設定
├── セッション固定攻撃対策
└── 同時セッション制御
Serena使用例:
mcp__serena__search_for_pattern: substring_pattern="@PreAuthorize|@Secured|@RolesAllowed", restrict_search_to_code_files=true
mcp__serena__search_for_pattern: substring_pattern="SecurityConfig|WebSecurityConfigurerAdapter", restrict_search_to_code_files=true
mcp__serena__search_for_pattern: substring_pattern="BCrypt|PasswordEncoder|Argon2", restrict_search_to_code_files=true
各カテゴリについてコードベースを検査:
OWASP Top 10 (2021):
├── A01: Broken Access Control
│ ├── 認可チェックの一貫性
│ ├── IDOR (Insecure Direct Object Reference) リスク
│ └── 権限昇格の可能性
├── A02: Cryptographic Failures
│ ├── 暗号化アルゴリズムの適切性
│ ├── 鍵管理
│ └── 通信の暗号化 (TLS設定)
├── A03: Injection
│ ├── SQLインジェクション (PreparedStatement使用状況)
│ ├── NoSQLインジェクション
│ ├── OSコマンドインジェクション
│ └── LDAPインジェクション
├── A04: Insecure Design
│ ├── 脅威モデリングの有無
│ ├── セキュリティ設計パターンの使用
│ └── ビジネスロジックの脆弱性
├── A05: Security Misconfiguration
│ ├── デフォルト設定の使用
│ ├── 不要な機能の有効化
│ ├── エラーハンドリング (スタックトレース露出)
│ └── セキュリティヘッダー設定
├── A06: Vulnerable Components
│ ├── 依存パッケージの既知脆弱性
│ ├── パッケージの更新状況
│ └── 不要な依存の存在
├── A07: Authentication Failures
│ ├── ブルートフォース対策
│ ├── パスワードポリシー
│ └── セッション管理の脆弱性
├── A08: Software and Data Integrity
│ ├── デシリアライゼーションの安全性
│ ├── CI/CDパイプラインのセキュリティ
│ └── 署名検証
├── A09: Security Logging and Monitoring
│ ├── ログ記録の範囲
│ ├── 監査ログ
│ └── アラート設定
└── A10: Server-Side Request Forgery (SSRF)
├── 外部URLの検証
├── 内部ネットワークへのアクセス制御
└── リダイレクト制御
Serena使用例:
mcp__serena__search_for_pattern: substring_pattern="createQuery|createNativeQuery|executeQuery", restrict_search_to_code_files=true
mcp__serena__search_for_pattern: substring_pattern="password|secret|apikey|api_key", restrict_search_to_code_files=true, paths_exclude_glob="*test*"
mcp__serena__search_for_pattern: substring_pattern="Runtime\\.getRuntime|ProcessBuilder|exec\\(", restrict_search_to_code_files=true
分析項目:
├── 個人情報 (PII) の取り扱い
│ ├── 保存時の暗号化
│ ├── 転送時の暗号化
│ ├── マスキング/匿名化
│ └── データ保持期間
├── 機密情報管理
│ ├── ハードコードされた秘密情報
│ ├── 環境変数/設定ファイルの管理
│ ├── シークレット管理ツール (Vault等)
│ └── ログへの機密情報出力
└── コンプライアンス
├── GDPR関連実装
├── データ削除機能
└── 同意管理
マイクロサービス移行を見据えたゼロトラストモデルへの準備状況を評価:
評価軸:
├── Identity & Access
│ ├── サービス間認証の仕組み (mTLS, JWT)
│ ├── きめ細かな認可ポリシー
│ └── ID管理の一元化状況
├── Network Security
│ ├── ネットワークセグメンテーション
│ ├── サービスメッシュ対応度
│ └── API Gateway候補の有無
├── Data Security
│ ├── データの分類と保護レベル
│ ├── 暗号化の範囲
│ └── データアクセスログ
├── Device/Workload Security
│ ├── コンテナセキュリティ
│ ├── イメージスキャン
│ └── ランタイムセキュリティ
└── Visibility & Analytics
├── セキュリティログの集約
├── 異常検知の仕組み
└── インシデント対応手順
このステップ完了時に出力: reports/before/{project}/security-analysis.md
/fix-mermaid ./reports/before/{project}
# セキュリティ分析レポート
## エグゼクティブサマリー
| 評価項目 | スコア | 評価 |
|---------|--------|------|
| 認証・認可 | [X]/100 | [Critical/High/Medium/Low] |
| OWASP Top 10対応 | [X]/100 | [Critical/High/Medium/Low] |
| データ保護 | [X]/100 | [Critical/High/Medium/Low] |
| ゼロトラスト準備度 | [X]/100 | [Critical/High/Medium/Low] |
| **総合スコア** | **[X]/100** | **[評価]** |
## 認証・認可の現状
### 認証メカニズム
| 項目 | 現状 | 評価 | 推奨 |
|------|------|------|------|
| 認証方式 | [method] | [Good/Fair/Poor] | [recommendation] |
| パスワード管理 | [method] | [Good/Fair/Poor] | [recommendation] |
| セッション管理 | [method] | [Good/Fair/Poor] | [recommendation] |
| MFA | [有/無] | [Good/Fair/Poor] | [recommendation] |
### 認可メカニズム
| 項目 | 現状 | 評価 | 推奨 |
|------|------|------|------|
## OWASP Top 10 対応状況
| # | カテゴリ | 対応状況 | リスク | 発見事項 |
|---|---------|---------|--------|---------|
| A01 | Broken Access Control | [対応済/部分/未対応] | [Critical/High/Medium/Low] | [findings] |
| A02 | Cryptographic Failures | [同上] | [同上] | [findings] |
| ... | ... | ... | ... | ... |
### 重大な発見事項
#### [FINDING-001]: [タイトル]
- **カテゴリ**: [OWASP A0X]
- **重大度**: [Critical/High/Medium/Low]
- **場所**: `[path:line]`
- **説明**: [description]
- **影響**: [impact]
- **推奨対応**: [recommendation]
- **参考**: [reference URL]
## データ保護の評価
### PII取り扱い
| データ種別 | 保存場所 | 暗号化 | マスキング | 保持期間 |
|-----------|---------|--------|-----------|---------|
### 機密情報管理
| 項目 | 現状 | リスク | 推奨 |
|------|------|--------|------|
## ゼロトラスト準備度
### 評価マトリクス
| 領域 | 現在の成熟度 | 目標 | ギャップ |
|------|------------|------|---------|
| Identity & Access | [Level 1-5] | [Level] | [gap] |
| Network Security | [Level 1-5] | [Level] | [gap] |
| Data Security | [Level 1-5] | [Level] | [gap] |
| Workload Security | [Level 1-5] | [Level] | [gap] |
| Visibility | [Level 1-5] | [Level] | [gap] |
### 成熟度レベル定義
- Level 1: 初期的(セキュリティが場当たり的)
- Level 2: 反復可能(基本的なポリシーあり)
- Level 3: 定義済み(標準化されたプロセス)
- Level 4: 管理されている(測定と改善)
- Level 5: 最適化(継続的改善)
## セキュリティアーキテクチャ図
```mermaid
graph TD
subgraph "External"
Client["Client"]
end
subgraph "DMZ"
WAF["WAF"]
LB["Load Balancer"]
end
subgraph "Application"
Auth["Auth Service"]
API["API Server"]
App["Application"]
end
subgraph "Data"
DB[("Database")]
Cache[("Cache")]
end
Client --> WAF
WAF --> LB
LB --> Auth
Auth --> API
API --> App
App --> DB
App --> Cache
| # | 改善項目 | 重大度 | 対象 | 工数目安 | |---|---------|--------|------|---------|
| # | 改善項目 | 重大度 | 対象 | 工数目安 | |---|---------|--------|------|---------|
| # | 改善項目 | 重大度 | 対象 | 工数目安 | |---|---------|--------|------|---------|
## ツール活用ガイドライン
### 優先順位
1. **Serenaツール** - セキュリティパターンのシンボリック検索
2. **Grep** - ハードコードされた秘密情報、危険なパターン検索
3. **Read** - セキュリティ設定ファイルの詳細確認
### 注意事項
- **発見した秘密情報は出力レポートに含めない** - ファイルパスと行番号のみ記載
- **脆弱性の詳細な悪用方法は記載しない** - 問題と対策のみ記載
- **偽陽性に注意** - テストコード内のパターンは除外
## エラーハンドリング
- **セキュリティ設定が見つからない場合** → フレームワークのデフォルト設定を確認
- **パッケージ情報が不明な場合** → パッケージマネージャの定義ファイルから推定
- **大規模コードベースの場合** → 主要な認証・認可ポイントに焦点を絞る
## 関連スキル
| スキル | 用途 |
|-------|------|
| `/system-investigation` | 技術スタック調査(入力) |
| `/access-control-analysis` | アクセス制御の詳細分析(補完) |
| `/analyze-system` | アクター・ロール・権限情報(入力) |
| `/design-api` | API設計時のセキュリティ要件(出力として参照される) |
| `/design-microservices` | マイクロサービス設計時のセキュリティ要件 |
tools
インタラクティブワークフロー選択 - 実行したい処理を段階的に選択して実行。/workflow で呼び出し。
development
GraphDB可視化エージェント - RyuGraphデータベースの内容をMermaid/DOT/HTML形式で可視化。/visualize-graph [出力パス] で呼び出し。
tools
システム調査エージェント - コードベースの構造・技術スタック・問題点・DDD適合性を調査。/system-investigation [対象パス] で呼び出し。
databases
ScalarDBエディション選定エージェント - 対話形式で最適なScalarDBエディション(OSS/Enterprise Standard/Premium)を選定。/select-scalardb-edition で呼び出し。