Skip to content

API6:2023 機微なビジネスフローへの無制限アクセス(Unrestricted Access to Sensitive Business Flows)

Threat agents / Attack vectors(脅威エージェント/攻撃ベクター) Security Weakness(セキュリティの弱点) Impacts(影響)
API 固有:悪用難易度(Exploitability) 容易

悪用は通常、API が支える ビジネスモデルの理解機微なビジネスフローの発見、そしてそれらへの 自動化されたアクセス によって事業に損害を与える形で行われます。
蔓延度(Prevalence) 広範検出可能性(Detectability) 平均

ビジネス要件を十分に支えるための API 全体像の欠如 が、この問題の蔓延に寄与します。攻撃者は手動で、対象ワークフローに関与する リソース(エンドポイント等) とその連携を特定します。緩和策があっても、それを 回避 する方法を見つけようとします。
技術的影響(Technical) 中程度ビジネス影響(Business) ケース依存

一般に 技術的被害は想定されません。しかし、正当なユーザーの購入妨害や、ゲーム内経済の インフレ など、事業上の損害 を引き起こし得ます。

API は脆弱か?

API エンドポイントを作成する際は、それが どのビジネスフローを公開しているか を理解することが重要です。中には 過剰アクセス により事業に害を与え得る、より機微なフローがあります。

機微なビジネスフローと、それに対する過剰アクセスの一般的な例:

  • 商品の購入フロー — 需要の高い商品の在庫を一度に買い占め、転売で高値を付ける(スカルピング)
  • コメント/投稿作成フロー — スクリプトで スパム を大量投稿
  • 予約作成 — すべての空き枠を予約して、他ユーザーの利用を妨害

過剰アクセスのリスクは 業界や事業によって異なる 場合があります。例えば、スクリプトによる投稿作成は、ある SNS ではスパムリスクと見なされても、別の SNS では 奨励 されることがあります。

機微なビジネスフロー を公開しながら、適切なアクセス制限 を設けていない API エンドポイントは 脆弱 です。

攻撃シナリオ例

シナリオ #1

あるテック企業が感謝祭に新型ゲーム機を発売すると発表。需要が非常に高く在庫は限定的。攻撃者は新製品を 自動購入 して決済まで完了させるコードを書く。

発売当日、攻撃者はコードを 複数の IP/地域 に分散して実行。API に適切な防御がなく、攻撃者は正規ユーザーに先んじて 在庫の大半を購入。その後、他プラットフォームで 高値転売 する。

シナリオ #2

ある航空会社は キャンセル料なし のオンライン購入を提供。悪意あるユーザーが、ある便の 90% の座席を予約

出発数日前、当該ユーザーが 一斉キャンセル したため、航空会社は座席を埋めるべく 値下げ を余儀なくされる。そこでユーザーは 当初より安価 なチケットを 1 枚だけ購入する。

シナリオ #3

ライドシェアアプリは 紹介プログラム を提供。ユーザーは友人を招待し、参加ごとに クレジット を獲得し、乗車代として利用可能。

攻撃者は 登録自動化スクリプト でこのフローを悪用し、ユーザーを量産して ウォレットに過剰なクレジット を貯める。その後、無料乗車 を享受したり、クレジット過多のアカウントを 現金化 する。

防止方法(How To Prevent)

緩和策の計画は 二層 で行います:

  • ビジネス層過剰利用で事業に害 を与え得るビジネスフローを特定する。
  • エンジニアリング層 — 事業リスクを緩和する 適切な保護機構 を選定する。

自動化された脅威を 減速 させる代表的手段(容易なものから実装が難しいものまで):

  • デバイスフィンガープリンティング:想定外のクライアント(例:ヘッドレスブラウザ)を拒否し、攻撃者に より高コストな手段 を強いる。
  • ヒト検知:CAPTCHA または 生体的特徴(例:タイピングパターン)を用いる。
  • 非人間的パターン検知:ユーザーフローを分析し、人間ではあり得ない挙動を検出(例:「カート投入」から「購入完了」まで 1 秒未満)。
  • Tor 退出ノード/著名プロキシのブロック を検討する。

マシンが直接消費する API(開発者向け・B2B API) へのアクセスは 保護と制限 を行う。これらは 必要な防御が不十分 なことが多く、攻撃者の 格好の標的 になりやすい。

References

OWASP