Shikata Ga Nai

Private? There is no such things.

リミットオーバーラン競合状態のバリエーションとTOCTOU脆弱性

Hello there, ('ω')ノ

🔁 リミットオーバーラン攻撃の代表例

リミットオーバーランとは、「本来1回しか使えない機能を、システムの一時的な処理の隙をついて何度も使ってしまう」攻撃です。以下のようなパターンが存在します:

1. 🎁 ギフトカードの複数回利用

  • 同じギフトカードコードを、短時間に複数リクエストで送信して複数回使用。
  • 例:1000円分のギフトカードを何度も使い、商品を複数購入。

2. 🌟 商品のレビュー評価を繰り返し投稿

  • 1人1回の評価制限を無視して、競合状態を使い何度も評価を送る。
  • 高評価スパムやレビュー操作に悪用される。

3. 💸 残高以上の現金引き出しや送金

  • 残高確認と送金処理の間の隙を突いて、口座残高を超える額を送金。
  • 電子マネー、オンラインバンキングなどで深刻な被害に。

4. 🔐 CAPTCHA の使い回し

  • 1度正解した CAPTCHA を、複数のリクエストで同時に送信。
  • bot対策の無力化につながる。

5. 🚫 ブルートフォース対策の回避

  • アカウントロック前に複数のログイン試行を並行して送信。
  • 本来の制限(例:5回まで)を無視して何十回も試行可能に。

🕒 TOCTOU(Time Of Check to Time Of Use)とは?

リミットオーバーランは、TOCTOU脆弱性の一種です。

✅ チェック → 🛠 利用 の間にレースウィンドウが存在

  • Time Of Check:入力や状態の確認を行う瞬間(例:割引コードの未使用確認)。
  • Time Of Use:その結果を使って処理する瞬間(例:割引を適用)。

この2つのタイミングの間に状態が変わると、意図しない動作を引き起こすというのがTOCTOUの本質です。


🧠 ペネトレーションテストのコツ

  • 短時間で並列リクエストを送る方法を使いましょう(Burp Intruder、Turbo Intruder、スクリプトなど)。
  • 「チェックと処理」の間に何が起こるかを意識して観察。
  • 一度成功したら、再現性のあるテストケースを作成して他の機能にも応用。

Best regards, (^^ゞ