Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
RatRace — 軽量なCLIツールで、Webアプリケーション、API、および最新のサービスにおける競合状態を体系的に検出・悪用するためのものです。 | Kitploit
ツール/GitHubGitHub/bogdanticu88/ratrace
脆弱性スキャナーエクスプロイトスクリプトと自動化APIセキュリティテストウェブセキュリティファジングペネトレーションテストDevSecOps
GitHubbogdanticu88/ratrace

RatRace

軽量なCLIツールで、Webアプリケーション、API、および最新のサービスにおける競合状態を体系的に検出・悪用するためのものです。

リポジトリを見る
104ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

RatRace

RatRace - 競合状態テストツールキット

Webアプリケーション、API、最新サービスの競合状態を体系的に検出・悪用するための軽量CLIツール。



Go Version License Status Platform Security Build


解決する課題

競合状態は、最新のアプリケーションにおける最も影響の大きいセキュリティ脆弱性のひとつですが、自動スキャナーでは十分にカバーされていません。Nuclei、ffuf、sqlmapなどのツールは静的脆弱性の発見に優れていますが、並行性に基づく問題には根本的に対応できません。

現在のペネトレーションテスターは、エンゲージメントごとに使い捨てのスクリプトを手動で作成するか、あるいは競合状態テストを完全に省略するかの選択を迫られています。どちらの選択もスケーラブルではなく、プロフェッショナルとは言えません。

RatRaceはこれを解決します。洗練された反復可能な競合状態テストのワークフローを提供し、アドホックなスクリプト作成を、CI/CDパイプラインと統合しプロフェッショナルなレポートを生成する体系的なプロセスに変えます。

実際の影響

競合状態の脆弱性は、以下のような影響の大きい領域で頻繁に発生します。

  • eコマース: 重複注文、在庫の過剰販売、割引のスタック
  • フィンテック: 二重送金、レースベースの権限昇格、トランザクションのリプレイ
  • 認証: トークン枯渇、セッション固定化、同時パスワードリセット
  • レート制限: 同時リクエストによるバイパス、分散悪用

これらのバグは、ビジネスの収益と顧客の信頼に直接的に脅威を与えるため、バグ報奨金プログラムで常に最高額の報奨金を獲得しています。


中核機能

テンプレート駆動テスト

競合シナリオを一度YAMLで定義すれば、プロジェクト間で再利用可能。形式はNucleiテンプレートを模倣しており、親しみやすさを実現しています。

root@kitploit:~
id: checkout-race
info:
  name: チェックアウト重複注文競合
  severity: critical
race:
  mode: burst
  concurrency: 20
  request:
    method: POST
    path: /api/v1/checkout
    headers:
      Authorization: "Bearer {{session}}"
    body: '{"item_id": "SKU-001"}'
validate:
  follow_up:
    method: GET
    path: /api/v1/orders?user={{user_id}}
  expect:
    json_field: "orders.length"
    condition: equals
    value: 1

複数の攻撃モード

バーストモード — Goroutineベースの並列リクエスト、精密な同期(安定、本番環境対応)

  • N個のGoroutineを起動し、マイクロ秒精度で同期
  • 5ms以上の競合ウィンドウを持つほとんどのアプリケーションに最適

Last-Byte Sync — HTTP/1.1 TCPレベル攻撃(実装完了、テスト段階)

  • 全接続をリクエストボディの最終バイトで保持
  • close()ブロードキャストで解放し、サブミリ秒ウィンドウを実現
  • ロードバランサーやレート制限のあるターゲットに効果的

Single-Packet — HTTP/2フレームベース攻撃(実装完了、テスト段階)

  • 全リクエストを単一のTCPセグメントで送信
  • 多重化を活用し、ほぼ同時にサーバーが受信
  • 一部のレート制限機構をバイパス

インテリジェントな検証

RatRaceは自動的に以下を実行します。

  • レスポンスのフィンガープリンティング — ステータスコード+ボディハッシュで異常を検出
  • 結果のクラスタリング — 統計的に有意な差異を特定
  • 信頼度スコアの計算 — 異常の頻度と規模に基づく
  • フォローアップリクエストの実行 — 状態変化の確認(例:「アイテムが本当に2回購入されたか?」)
  • 条件付き検証のサポート — 演算子: equals, not_equals, greater_than, contains

ワークフロー統合

既存のリクエストをインポート:

root@kitploit:~
# curlコマンドから
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o template.yaml

# BurpエクスポートHARファイルから
ratrace import --har session.har -o template.yaml

CI/CD自動化:

root@kitploit:~
ratrace race -u $TARGET -t template.yaml --silent
echo $?  # 終了コード10 = 競合発見、0 = 正常

プロフェッショナルなレポート:

root@kitploit:~
# 自動化用JSON
ratrace race -u $TARGET -t template.yaml -o results/

# HTMLレポート(V2で計画)
ratrace report --input results.json --format html

インストール

ソースから

root@kitploit:~
git clone https://github.com/bogdanticu88/ratrace.git
cd ratrace
go build ./cmd/ratrace
./ratrace --help

要件: Go 1.24+

Docker

root@kitploit:~
docker build -t ratrace:latest .
docker run --rm -it ratrace:latest race -u https://api.example.com -t template.yaml

使用方法

クイックスタート: 競合テストの実行

root@kitploit:~
# 1. curlからインポート、または既存のテンプレートを使用
ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o checkout.yaml

# 2. 競合を実行
ratrace race -u https://api.example.com -t checkout.yaml -m burst -c 20

# 3. 結果を確認
# 出力例:
# 🔴 [CRITICAL] チェックアウト重複注文競合
#     異常率: 91.7%
#     信頼度: 84%

例: eコマースのチェックアウト競合

root@kitploit:~
ratrace race \
  -u https://shop.example.com \
  -t examples/templates/checkout-race.yaml \
  -m burst \
  -c 25 \
  --output results/

例: サイレントモード(CI/CD向け)

root@kitploit:~
# 冗長なログを出力せず、意味のあるコードで終了
ratrace race -u https://api.example.com -t template.yaml --silent

# 終了コードの確認
if [ $? -eq 10 ]; then
  echo "競合状態を発見しました!"
  exit 1
fi

コマンドリファレンス

race — 競合攻撃の実行

root@kitploit:~
ratrace race -u <url> -t <template> [オプション]

オプション:
  -m, --mode string          burst|lastbyte|singlepacket (デフォルトはテンプレートから)
  -c, --concurrency int      Goroutine数 (デフォルト20)
  -H, --header strings       カスタムヘッダー (繰り返し可能)
  -x, --proxy string         リクエスト用プロキシURL
  -o, --output string        結果の出力ディレクトリ
  --timeout duration         リクエストタイムアウト (デフォルト10s)
  --insecure                 TLS証明書検証をスキップ
  --dry-run                  テンプレートを解析して終了
  --silent                   ログを抑制し、結果のみ表示

import — リクエストをテンプレートに変換

root@kitploit:~
ratrace import [--curl <command> | --har <file>] -o <output.yaml>

既存のリクエスト(curlコマンドまたはHARエクスポート)をRatRaceテンプレートに変換します。
既存のワークフローとの統合に便利です。

report — レポート生成

root@kitploit:~
ratrace report --input results.json --format [html|json] --output report.html

競合テスト結果から人間が読めるレポートを生成します。

ratelimit — レート制限バイパスのテスト

root@kitploit:~
ratrace ratelimit -u <url> -c <concurrency>

エンドポイントが同時リクエストによるレート制限バイパスに対して脆弱かどうかをテストします。

テンプレート形式

テンプレートは競合シナリオを定義するYAMLファイルです。完全なリファレンス:

root@kitploit:~
id: unique-identifier
info:
  name: "人間が読める名前"
  severity: critical|high|medium|low|info
  tags: [tag1, tag2]

race:
  mode: burst|lastbyte|singlepacket
  concurrency: 20
  request:
    method: POST|GET|PUT|DELETE|PATCH
    path: /api/endpoint
    headers:
      Authorization: "Bearer {{token}}"
      Custom-Header: "value"
    body: '{"json": "body", "user": "{{user_id}}"}'

validate:
  follow_up:
    method: GET
    path: /api/orders?user={{user_id}}
  expect:
    json_field: "orders.length"
    condition: equals|greater_than|contains|not_equals
    value: 1

変数 (プレースホルダ {{name}} を使用):

  • コマンドラインのヘッダーまたはテンプレート内のハードコードによって置換されます
  • 例: ratrace race ... -H "Authorization: Bearer {{session_token}}"

出力

ターミナル出力

クリーンで色分けされたログがテストの進行状況を表示します:

root@kitploit:~
[INF] テンプレートを読み込み中  path=checkout-race.yaml
[INF] テンプレート読み込み完了  id=checkout-race  mode=burst
[RUN] バースト攻撃を実行中  concurrency=20
[INF] 全リクエスト完了  total=20
[RUN] レスポンスをクラスタリング中  baseline=17  anomalous=3
[RACE] 競合状態を検出  anomaly_rate=15%  confidence=94%
[CONF] 検証通過  field=orders.length  expected=1
[INF] 競合テスト完了  findings=1

Templates: 1  Requests: 20  Time: 3.2s

🔴 [CRITICAL] チェックアウト重複注文競合
    異常率:  15.0%
    信頼度:  94%
    ステータス差分:  201 → 200
    フィールド差分:   order_id (100 → 101)

JSON結果

完全な結果は自動化やアーカイブのために results_<timestamp>.json に保存されます:

root@kitploit:~
{
  "TemplateID": "checkout-race",
  "Target": "https://api.example.com/api/v1/checkout",
  "Mode": "burst",
  "Concurrency": 20,
  "TotalRequests": 20,
  "Duration": 3200000000,
  "Findings": [
    {
      "TemplateName": "Checkout Duplicate Order Race",
      "Severity": "critical",
      "AnomalyRate": 0.15,
      "Confidence": 0.94,
      "Diff": {
        "StatusChanged": true,
        "BaselineStatus": 201,
        "AnomalousStatus": 200
      }
    }
  ]
}

終了コード

CI/CD統合および自動化で使用されます:


開発

ビルド

root@kitploit:~
make build              # バイナリをコンパイル

テスト

root@kitploit:~
make test              # 全テスト
make test-unit         # ユニットテストのみ
make test-int          # 統合テスト
make coverage          # カバレッジレポート(HTML)

リンティングと品質

root@kitploit:~
make lint              # リンターを実行

例

root@kitploit:~
make run-race          # ビルドしてサンプルを実行

アーキテクチャ

root@kitploit:~
cmd/ratrace/
  └── main.go          エントリポイント、CLI定義

internal/
  ├── cmd/             サブコマンド実装
  ├── engine/          競合攻撃モード(burst, lastbyte, singlepacket)
  ├── validator/       レスポンスクラスタリング、差分、フォローアップチェック
  ├── importer/        HARおよびcurlパーサー
  ├── reporter/        JSONおよびHTML出力
  ├── template/        YAMLパースとテンプレーティング
  ├── log/             構造化カラーログ
  └── models/          共有データ型

ステータスとロードマップ

V1(現在)

  • ✅ Goroutine同期によるバーストモード
  • ✅ レスポンスクラスタリングと異常検出
  • ✅ 信頼度スコアリング
  • ✅ 条件付きフォローアップ検証
  • ✅ HAR/curlインポート
  • ✅ JSON出力
  • ✅ CI/CD向けサイレントモード
  • ⏳ Last-byte同期モード(実装完了、テスト待ち)
  • ⏳ Single-packetモード(実装完了、テスト待ち)

V2(計画中)

  • HTMLレポート生成
  • PoCスクリプト生成
  • レート制限バイパスの特化
  • Burp Suite XMLインポート
  • gRPC競合テスト
  • WebSocket競合テスト
  • テンプレートレジストリとコミュニティテンプレート
  • Nuclei統合

コントリビューティング

Issue、PR、テンプレートのコントリビューションを歓迎します。以下の点を遵守してください。

  • コードはコードベースの既存パターンに従うこと
  • テストが通ること: make test
  • リンターが通ること: make lint

ライセンス

MIT


免責事項

RatRaceは、許可されたセキュリティテスト、バグ報奨金プログラム、ペネトレーションテストのために設計されています。所有しているシステム、または明示的な書面によるテスト許可を得ているシステムでのみ使用してください。 他人のシステムに対する無許可のテストは違法です。


作成者

Bogdan Ticu — セキュリティ研究・エンジニアリング

問題、質問、セキュリティ報告については: GitHub Issues

ツールをダウンロード
コード意味
0成功 — 競合状態は見つかりませんでした
3データエラー — テンプレートが見つからない、パースエラー
4実行エラー — ネットワーク障害、エンジンエラー
10競合状態を検出 — アクションが必要
11レート制限バイパスが確認されました
12異常を検出しましたが、検証は決定的ではありません