pentest-race-conditions について
非原子的な並行リクエストによる競合状態を調べる、許可済みのペネトレーションテスト向けスキルです。同期リクエスト、エンドポイント間のTOCTOU、セッション単位のテストと、影響や再現手順の記録を扱います。
主な機能
- 01競合しやすい操作の特定
- 02並行・同期リクエストのテスト
- 03エンドポイント間のTOCTOU確認
- 04セッションおよびデータベース競合のテスト
- 05影響と再現手順の記録
活用シーン
- 01クーポンの重複利用や取引の重複確認
- 02並行リクエストによる利用回数制限の回避テスト
- 03残高確認と引き落としの間の競合調査
- 04並行処理の脆弱性を再現する条件の記録
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jd-opensource/ joysafeter --skill pentest-race-conditionsインストール後、Claude Code で/pentest-race-conditionsを入力して読み込まれたか確認します。
同梱ファイルreferences/tools.mdreferences/workflows.md
詳細
ペネトレーションテストの競合状態
目的
同時リクエストをアトミックに処理できないアプリケーションを悪用します。これにより、二重支払い、制限の回避、並列リクエストによる権限昇格が可能になります。標準的な WSTG のカテゴリには含まれていませんが、実際の評価では重要です。
前提条件
認可要件
- 並行処理のテスト範囲を明示した書面による許可
- 残高、クォータ、または使用回数に制限のあるリソースを持つテストアカウント
- 金銭や状態を変更する操作に対するロールバック計画
- レート制限への配慮 — 許容されるバースト量を対象の管理者に確認します
環境のセットアップ
- Turbo Intruder 拡張機能を備えた Burp Suite Professional
- 並列リクエストのスクリプト作成用 Python 3.x と asyncio/aiohttp
- シェルベースの並行処理用 GNU parallel または xargs
- 複数の認証済みセッション(個別の Cookie/トークン)
基本的なワークフロー
- 対象の特定:残高の送金、クーポンの利用、在庫商品の購入、投票/いいねシステム、トークン生成、ファイル操作など、競合状態が発生しやすい操作を特定します。
- 単一エンドポイントの競合:「ユーザーごとに 1 回」の制限を回避したり、取引を重複させたりするため、同一のリクエストを N 件同時に送信します(制限超過)。
- 複数エンドポイント間の TOCTOU:チェックと使用の間の時間差を悪用します。たとえば、クーポンを検証してから適用する、残高を確認してから引き落とす、といった処理が対象です。
- セッションレベルの競合:パスワード変更とセッション更新を並列に実行したり、ロール変更とアクション実行を同時に行ったりします。
- データベースレベルの競合:行レベルのロックがない状態を悪用し、楽観的並行制御と悲観的並行制御をテストし、デッドロックを引き起こします。
- タイミングの同期:シングルパケット攻撃の手法(Turbo Intruder)を使って、マイクロ秒単位でリクエストを同期させます。
- 影響の記録:正確な再現手順とタイミング要件を添えて、金銭的/運用上の影響を記録します。
ツールのカテゴリ
| カテゴリ | ツール | 目的 |
|---|---|---|
| タイミング攻撃 | Turbo Intruder, race-the-web | マイクロ秒単位で同期した並列リクエスト |
| 非同期スクリプト | Python asyncio/aiohttp, httpx | カスタムの競合状態スクリプト |
| シェルの並行処理 | GNU parallel, xargs, curl | 手早く並列リクエストをテスト |
| プロキシ分析 | Burp Suite Repeater | リクエストの再送とタイミングの観察 |
| データベース監視 | pg_stat_activity, SHOW PROCESSLIST | ロック競合とデッドロックの観察 |
参考資料
references/tools.md- ツールの関数シグネチャとパラメーターreferences/workflows.md- 攻撃パターンの定義とテストベクター
コメント
Markdown 対応