APIを狙ったスクレイピングと「レート制限(Rate Limit)」の最適化
確認時の注意:事例の報道内容や影響範囲は更新される可能性があります。公開時点の一次情報、公式発表、脆弱性情報を確認し、環境の所有者の承認とバックアップを準備してから対策を適用してください。
【背景と概要】
Webサービスやモバイルアプリのバックエンドとして活用される「API」。公開されているAPIエンドポイントに対し、自動化されたスクリプト(Bot)を用いて大量のリクエストを送りつけ、データベース内の情報(商品価格、顧客の口コミ、求人情報、在庫状況など)を一括して収集する「不正スクレイピング」や、アカウントの割り出し(ブルートフォース)が相次いでいます。
単純なハッキングとは異なり、正規のAPI機能を連続して呼び出すため、適切な「レート制限(Rate Limiting)」が施されていない場合、サーバーダウンや大量のデータ流出につながります。
【APIにおける「レート制限(Rate Limit)不足」のリスク】
OWASP API Security Top 10(API4: Unrestricted Resource Consumption)でも重要課題として挙げられています。
- 大量データの一括スクレイピング
1分間に数万回のAPIリクエストを処理してしまう設定になっている場合、競合他社や攻撃者によって自社のコアデータがわずか数分で全件抜き取られます。
- サービス拒否(DoS)状態の発生
APIへの自動化リクエストが過剰に集中することで、データベースやバックエンドサーバーのCPU・メモリが枯渇し、一般ユーザーからの正常なアクセスに応答できなくなる障害が発生します。
- 認証情報の割り出し(ブルートフォース/パスワードスプレー)
ログイン用APIエンドポイントにレート制限がかかっていない場合、Botを用いて高速でログイン試行を繰り返され、アカウントが乗っ取られます。
【単なる「IP制限」の限界】
攻撃者はクラウドのプロキシやレジデンシャルプロキシ(家庭用IPアドレス群)を用いて、毎回異なるIPアドレスから分散してAPIを呼び出します。そのため、単に「1つのIPアドレスからのアクセス回数」を制限する従来のIPベース制限だけでは防ぎきれません。
【APIレート制限の高度な運用アプローチ】
コンテキストに応じた多角的なトラフィック制御が推奨されます。
- APIキー・認証トークン(JWT)単位でのレート制限
通信元のIPアドレスだけでなく、認証された「ユーザーID」「APIキー」「OAuthトークン」の識別子ごとにリクエスト上限(例: 1分間に100回まで)を設定します。
- APIゲートウェイでの一元的な「スロットリング(Throttling)」
すべてのAPI通信をAPIゲートウェイ経由とし、エンドポイントの重要度(ログインAPI、検索API、決済API等)に応じて個別に上限閾値を自動適用します。
- WAAP(Web App & API Protection)によるBot行動解析
単なるアクセス回数だけでなく通信ヘッダーやリクエストの間隔(機械的か人間的か)をAIで解析し、悪質なBot通信のみを識別して追加の認証(CAPTCHA)を課すか遮断します。