mcpField
P
pentest-race-conditions

pentest-race-conditions

github.com/jd-opensourceセキュリティ31563 回インストール28 週間前に更新
リポジトリ

pentest-race-conditions について

非原子的な並行リクエストによる競合状態を調べる、許可済みのペネトレーションテスト向けスキルです。同期リクエスト、エンドポイント間のTOCTOU、セッション単位のテストと、影響や再現手順の記録を扱います。

主な機能

  1. 01競合しやすい操作の特定
  2. 02並行・同期リクエストのテスト
  3. 03エンドポイント間のTOCTOU確認
  4. 04セッションおよびデータベース競合のテスト
  5. 05影響と再現手順の記録

活用シーン

  1. 01クーポンの重複利用や取引の重複確認
  2. 02並行リクエストによる利用回数制限の回避テスト
  3. 03残高確認と引き落としの間の競合調査
  4. 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. 対象の特定:残高の送金、クーポンの利用、在庫商品の購入、投票/いいねシステム、トークン生成、ファイル操作など、競合状態が発生しやすい操作を特定します。
  2. 単一エンドポイントの競合:「ユーザーごとに 1 回」の制限を回避したり、取引を重複させたりするため、同一のリクエストを N 件同時に送信します(制限超過)。
  3. 複数エンドポイント間の TOCTOU:チェックと使用の間の時間差を悪用します。たとえば、クーポンを検証してから適用する、残高を確認してから引き落とす、といった処理が対象です。
  4. セッションレベルの競合:パスワード変更とセッション更新を並列に実行したり、ロール変更とアクション実行を同時に行ったりします。
  5. データベースレベルの競合:行レベルのロックがない状態を悪用し、楽観的並行制御と悲観的並行制御をテストし、デッドロックを引き起こします。
  6. タイミングの同期:シングルパケット攻撃の手法(Turbo Intruder)を使って、マイクロ秒単位でリクエストを同期させます。
  7. 影響の記録:正確な再現手順とタイミング要件を添えて、金銭的/運用上の影響を記録します。

ツールのカテゴリ

カテゴリツール目的
タイミング攻撃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 - 攻撃パターンの定義とテストベクター

コメント