Shikata Ga Nai

Private? There is no such things.

Limit Overrun Race Conditionとは?

Hello there, ('ω')ノ

この脆弱性は、アプリケーションが特定の操作に対して制限(例:一度しか使えないクーポンコード)を設けている場合に発生します。攻撃者が複数のリクエストをほぼ同時に送信することで、サーバーの処理のタイミングのズレを突き、制限を回避することが可能となります。

例:クーポンコードの再利用

  1. ユーザーがクーポンコードを入力すると、サーバーはそのコードが未使用であることを確認します。
  2. 確認後、割引を適用します。
  3. 最後に、そのコードを使用済みとしてデータベースを更新します。

しかし、攻撃者がこのプロセスの最中に同じコードを使ったリクエストを複数同時に送信すると、サーバーがコードを使用済みとマークする前に複数のリクエストが通ってしまい、結果として同じクーポンコードが複数回適用されてしまいます。


🧪 脆弱性の検出と悪用方法

1. 対象のエンドポイントを特定

一度しか使用できないクーポンコードや、特定の制限がある機能を探します。

2. 通常の挙動を確認

クーポンコードを通常通り適用し、成功と失敗のレスポンスを確認します。

3. 同時リクエストの送信

Burp SuiteのRepeaterやTurbo Intruderを使用して、同じリクエストを複数同時に送信します。これにより、サーバーの処理のタイミングを突いて制限を回避できるかを確認します。


🛠️ 防止策

  • トランザクションの導入:データベース操作をトランザクションで囲み、処理の整合性を保ちます。
  • ロック機構の実装:同時処理を防ぐために、リソースに対するロックを導入します。
  • 再試行の制限:同じ操作の短時間での再試行を制限します。

🧠 まとめ

Limit Overrun Race Conditionは、サーバーの処理タイミングのズレを突いた攻撃手法であり、適切な対策を講じないと重大なセキュリティリスクとなります。開発者やセキュリティ担当者は、このような競合状態を意識し、適切な防止策を実装することが重要です。

Best regards, (^^ゞ