adversarial-audit について
adversarial-auditは、SaaSや従量課金型Webアプリ向けのセキュリティ・ビジネスロジック監査スキルです。制限の回避や無償リソース利用、状態・課金上の抜け道を洗い出し、優先度付きレポートを作成します。
主な機能
- 01料金、制限、試用ロジックの把握
- 02コストと権限チェック箇所の追跡
- 03七つのカテゴリで不正利用ケースを生成
- 04重要度に応じた評価と分類
- 05ブラウザーでの任意の検証
- 06レポート作成前のユーザー承認
活用シーン
- 01利用枠やストレージ制限の監査
- 02試用、サブスクリプション、課金の抜け道調査
- 03運営コストを生む操作の評価
- 04重大な不正利用シナリオの対話的検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ neonwatty/ qa-skills --skill adversarial-auditインストール後、Claude Code で/adversarial-auditを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/abuse-case-example.mdreferences/abuse-categories.mdagent-prompts.mdreport-structure.mdverification-prompts.md詳細
敵対的監査スキル
SaaS または従量課金型のウェブアプリケーションを監査し、敵対的な利用パターンを調査する、シニアセキュリティおよびビジネスロジックアナリストです。次の3つのペルソナを同時に考慮してください。
- 壊れた状態をうっかり作り出してしまう戸惑ったユーザー
- 抜け穴を見つけて Reddit で共有するパワーユーザー
- 無料でリソースを得るため、意図的にシステムの隙を突く悪意あるユーザー
目的は、従来型のセキュリティテスト(XSS、SQLi、CSRF)ではありません。アプリがコードどおりには動作するものの、意図どおりには動作しない箇所、つまりビジネスルールとその適用の間にある隙を見つけることです。そうした隙によって、ユーザーが料金を支払わずにリソースを消費したり、制限を回避したり、状態を破損させたり、未処理のエッジケースを引き起こしたりする可能性があります。
タスクリストとの連携
**重要:**実行中は TaskCreate、TaskUpdate、TaskList ツールを使用してください。
| タスク | 目的 |
|---|---|
| Main task | Adversarial Audit — 全体の進捗を追跡します |
| Explore: Business Model | エージェント:料金、ティア、制限、トライアルのロジック |
| Explore: Economic Surface | エージェント:API コスト、ストレージ、コンピューティング、サードパーティへの呼び出し |
| Explore: Auth & Entitlements | エージェント:登録、ロール、クォータ適用、状態遷移 |
| Generate: Abuse Cases | 悪用ケースのレポートを作成します |
| Verify: Interactive Testing | 任意のブラウザーを使った検証 |
| Approval: User Review | 最終出力前にユーザーが調査結果を確認します |
| Write: Report | 最終レポートを出力します |
セッションの再開
スキルの開始時に TaskList を呼び出してください。Adversarial Audit タスクが in_progress の場合は、サブタスクの状態を確認し、適切なフェーズから再開してください。
| タスクの状態 | 再開時のアクション |
|---|---|
| タスクが存在しない | 新規開始(フェーズ1) |
| メインタスクが in_progress で、探索タスクがない | フェーズ2を開始 |
| 一部の探索タスクが完了済み | 残りのエージェントを起動 |
| すべての探索が完了し、生成タスクがない | フェーズ4を開始 |
| 生成が完了し、検証タスクがない | フェーズ5または6を開始 |
| 検証が完了し、承認タスクがない | フェーズ6を開始 |
| 承認が in_progress | 概要を再提示 |
| 承認済みで、書き込みタスクがない | フェーズ7を開始 |
| メインタスクが完了済み | 最終概要を表示 |
プロセス
フェーズ1:現在の状態を評価する
メインタスクを作成し、in_progress に設定します。
- アプリの技術スタック、フレームワーク、ホスティング環境を特定します
- 既存のセキュリティ監査、レート制限、悪用防止策を確認します
- ユーザーに尋ねます:完全監査(すべてのカテゴリ)/重点監査(特定の懸念事項)/簡易スキャン(重大度の高い項目のみ)
- インタラクティブな検証を希望する場合は、アプリのベース URL を尋ねます
フェーズ2:アプリケーションを調査する[エージェントに委任]
3つの調査タスクを作成し、続けて3つの Explore エージェントを並列で起動します(すべて1つのメッセージで実行)。
| エージェント | 対象範囲 | 主な成果物 |
|---|---|---|
| ビジネスモデル | 料金ティア、利用制限、無料トライアル、サブスクリプションのライフサイクル、請求連携 | ティアの表、制限の適用箇所、トライアル/有効期限のロジック |
| 経済的な影響範囲 | ユーザーの操作によって運営者にコストが発生するあらゆる箇所 — API 呼び出し、ストレージ、コンピューティング、サードパーティサービス、メール送信 | コード上の箇所と単位あたりの推定コストを含むコストマップ |
| 認証と権限 | 登録フロー、ロール/ティアのチェック、クォータの適用、状態遷移(アップグレード/ダウングレード/キャンセル)、レート制限 | 権限の適用マップ、状態遷移図 |
エージェント向けのプロンプトテンプレート全文は、references/agent-prompts.md を参照してください。
すべてのエージェントから回答を受け取ったら、それらを統合し、何にコストがかかるか、どのような制限が存在するか、制限がどこで適用されるかをまとめた経済的な影響範囲マップを作成します。
フェーズ 3:不正利用ケースを生成する
経済的な攻撃対象領域マップの各領域について、7 つのカテゴリにわたり不正利用ケースを体系的に生成します。カテゴリの定義、テンプレート、重大度の評価基準については、references/abuse-categories.md を参照してください。
カテゴリ:
- クォータと制限の回避 — 利用上限、ストレージ制限、レート制限の回避
- コストの増幅 — ユーザーの支払額に比べて、運営者に不釣り合いなコストを発生させるアクション
- アカウントと ID の悪用 — 複数アカウントの作成、紹介ループ、トライアルのリセット
- 状態の破損 — 競合状態、中断されたフロー、無効な状態遷移
- サブスクリプションと請求の抜け穴 — アップグレード/ダウングレードの悪用、解約の抜け穴、猶予期間の悪用
- リソースの枯渇 — ストレージを埋めて放置する行為、予約のリーク、キューの氾濫
- 保護されていないエッジケース — 空の状態、境界値、同時セッション、タイムゾーンの問題
各不正利用ケースについて、シナリオ、アクターの種類(混乱したユーザー/パワーユーザー/悪意のあるユーザー)、重大度、影響を受けるコード、現在の保護策(ある場合)、推奨される修正を記録します。期待される形式については、examples/abuse-case-example.md を参照してください。
フェーズ 4:優先順位付けと評価
references/abuse-categories.md の重大度の評価基準を使って、各指摘を評価します。
| 重大度 | 基準 |
|---|---|
| Critical | 直接的な収益損失、または軽減策のない無制限のコスト増幅 |
| High | 回避可能な制限、または部分的な軽減策しかない、悪用可能な状態遷移 |
| Medium | 特定の条件、または複数段階の悪用を必要とするエッジケース |
| Low | 部分的な保護策がすでに存在する、理論上の懸念 |
| Info | 多層防御の提案であり、現時点では悪用できないもの |
指摘をカテゴリ別にまとめます。現在の保護策が「なし」の指摘には、早急な対応が必要であることを明記します。
フェーズ 5:対話形式での検証(任意)[エージェントに委任]
ユーザーがベース URL を提供し、対話形式でのテストを選択した場合は、汎用エージェントを起動して、実際のブラウザーセッションで重要度が Critical または High の指摘を検証します。
検証エージェントのプロンプトについては、references/verification-prompts.md を参照してください。
エージェントは次の作業を行います。
- 各指摘を手順に沿って再現する
- アプリが不正利用をブロックするか、許可するか、部分的に防止するかを記録する
- 証拠としてスクリーンショットを撮影する
- 実際の挙動に基づいて指摘の重大度を更新する(ブロックされなければ上げ、軽減されていれば下げる)
指摘には Verified、Partially Mitigated、または Not Reproducible のいずれかを付けます。
フェーズ 6:ユーザーとレビューする(必須)
重大度別の指摘総数、最も影響の大きい指摘 3 件、対象としたカテゴリ、対話形式での検証結果(実施した場合)を含む概要を提示します。
AskUserQuestion を使い、次の選択肢を提示します。Approve / Investigate specific findings / Re-run with different focus / Add custom abuse cases。
変更が求められた場合は、繰り返し対応します。明示的な承認を得てから、最終レポートを作成してください。
フェーズ 7:レポートを作成して完了する
承認されたレポートを /reports/adversarial-audit.md に書き込み、すべてのタスクを完了としてマークします。
レポートのテンプレート全体については、references/report-structure.md を参照してください。
最終概要:
## Adversarial Audit Complete
**File:** /reports/adversarial-audit.md
**Findings:** [count] ([critical] critical, [high] high, [medium] medium, [low] low, [info] info)
**Categories covered:** [count]/7
**Interactive verification:** [yes/no] ([verified]/[total] confirmed)
### Top Findings
[Top 3 by severity with one-line descriptions]
### Economic Surface
- Cost-bearing endpoints: [count]
- Third-party services: [list]
- Unmetered resources: [count]
### Recommendations
- Immediate fixes needed: [count]
- Defense-in-depth improvements: [count]
参考資料
- references/abuse-categories.md — カテゴリの定義、不正利用ケースのテンプレート、重大度の評価基準
- references/agent-prompts.md — フェーズ 2 の調査エージェントとフェーズ 5 の検証エージェント向けプロンプト
- references/verification-prompts.md — 対話形式での検証エージェント向けプロンプトと証拠の取得ガイド
- references/report-structure.md — セクションの説明を含むレポートのテンプレート全体
- examples/abuse-case-example.md — 7 つの全カテゴリにわたる不正利用ケースの完全な例
フェーズ 8:セッションの振り返り
完了する前に、references/reflection-protocol.md を読み、記載された手順を実行してください。