| name | dev:attack-surface-review |
| description | Webサービスを攻撃者目線でレビューし、実在する攻撃ベクターに基づいて脆弱性を発見・整理するスキル。
静的レビューと実証検証は別サブエージェントに委任し、メインセッションは両者の結果を
査読・比較して次アクションを判断する。Medium以上の実証済み所見、または実証未了でも
優先度が高い所見がある場合はメインセッションで対策プランの作成を促す。
Trigger:
脆弱性レビュー, セキュリティ診断, 攻撃者目線レビュー, ペネトレーション観点, /dev:attack-surface-review,
attack surface review, pentest perspective, exploit path
|
| allowed-tools | ["Read","Glob","Grep","Bash","Task","AskUserQuestion"] |
攻撃面レビュー(dev:attack-surface-review)
ゴール
- 攻撃者が実際に取りうる経路を特定し、コード根拠付きの候補所見と
実証ベースの成立所見を分けて提示する。
- 静的レビューサブエージェントが攻撃候補を洗い出し、動的検証サブエージェントが
有力候補を実際の攻撃ベクターで検証する。
- メインセッションは両レポートを読み、
実証済み 未実証だが懸念あり 棄却 に仕分ける。
実行手順
Step 1: 静的レビューサブエージェントを起動する
最初に Task で agents/investigate-attack-surface-static.md を使って
静的レビューサブエージェントを起動する。
サブエージェントへの依頼には最低限以下を含める。
- 対象アプリまたは対象ディレクトリ
- 既知の技術スタックや主要エントリポイント
- 重点的に見たい観点があればその指定
references/finding-template.md を必ず読むこと
- 修正実装は行わず、攻撃候補の抽出とレポート整形に専念すること
Step 2: 動的検証サブエージェントを起動する
次に Task で agents/investigate-attack-surface-dynamic.md を使って
動的検証サブエージェントを起動する。
このとき静的レビューの結果を入力として渡し、優先度の高い候補から検証させる。
動的検証は、軽量な既存手段で再現可能なものに限る。
Step 3: 両レポートを査読する
返ってきたレポートを読み、以下を確認する。
references/finding-template.md の形式に沿っているか
- 静的レポートにコード根拠・到達経路・前提条件があるか
- 動的レポートに再現手順・payload・観測結果・未成立理由があるか
- 根拠のない一般論やCWE列挙に流れていないか
- 未確認範囲・制約が明記されているか
レポートが粗い場合は、該当サブエージェントに不足点を指定して再調査させる。
Step 4: メインセッションが判定する
静的レビューと動的検証を突き合わせ、各候補を以下のいずれかに分類する。
実証済み:
動的検証で成立し、優先対応が必要
未実証だが懸念あり:
コード上は有力だが、今回の範囲では成立確認できていない
棄却:
静的レビューの仮説だったが、コード読解または検証で成立しないと判断できた
Medium以上が1件以上ある場合、その場で修正実装を開始しない。
Step 5: メインセッションが次アクションを決める
判定結果をもとに、メインセッションで AskUserQuestion を実行するか、
追加調査を回すか、今回は見送るかを決める。
注意: AskUserQuestion はサブエージェントで直接実行しない。
完了条件