オープン・ワールドワイド・アプリケーションセキュリティプロジェクト

API6:2023 Unrestricted Access to Sensitive Business Flows

脅威要因 / 攻撃ベクトル セキュリティ弱点 影響
API固有:悪用可能性 容易 普及度 広範囲:検出可能性 平均的 技術的 中程度:特定のビジネスに依存
悪用は通常、APIに支えられたビジネスモデルを理解し、感度の高いビジネスフローを見つけ、これらのフローへの自動アクセスを行うことに関与します。これにより、ビジネスに害を与える可能性があります。 APIの全体像がないことで、ビジネス要件を十分にサポートできないことがこの問題の広がりに寄与します。攻撃者はターゲットのワークフローに関与するリソース(例:エンドポイント)とそれらがどのように連携して動作するかを手動で特定します。既に対策メカニズムが存在する場合、攻撃者はそれらを回避する方法を見つける必要があります。 一般的な技術的影響は予想されません。悪用はビジネスに異なる方法で害を与える可能性があります。たとえば、正規のユーザーが製品の購入を妨げられたり、ゲーム内経済のインフレを引き起こす可能性があります。

APIは脆弱ですか?

APIエンドポイントを作成する際に重要なのは、それがどのビジネスフローを公開するかを理解することです。一部のビジネスフローは他よりも感度が高く、それらに過剰なアクセスが行われるとビジネスに害を及ぼす可能性があります。

感度の高いビジネスフローとそれに関連する過剰なアクセスのリスクの一般的な例:

  • 製品の購入フロー – 攻撃者は一度に高需要アイテムの在庫をすべて購入し、高い価格で再販する(スケーリング)ことができます
  • コメント/投稿の作成フロー – 攻撃者はシステムにスパムを送り込むことができます
  • 予約の作成 – 攻撃者は利用可能なすべての時間枠を予約し、他のユーザーがシステムを使用するのを妨げることができます

過剰なアクセスのリスクは業界やビジネスによって異なる場合があります。例えば、あるソーシャルネットワークではスクリプトによる投稿の作成がスパムのリスクと見なされるかもしれませんが、別のソーシャルネットワークでは推奨されています。

APIエンドポイントは、適切にアクセスを制限せずに感度の高いビジネスフローを公開している場合に脆弱です。

攻撃シナリオの例

シナリオ #1

技術企業が感謝祭に新しいゲーム機を発売すると発表しました。この製品は非常に高い需要があり、在庫は限られています。攻撃者はコードを書いて新製品を自動的に購入し、取引を完了します。

発売日に、攻撃者は異なるIPアドレスと場所に分散してコードを実行します。APIは適切な保護を実装しておらず、攻撃者は他の正規のユーザーよりも大量の在庫を購入することができます。

後に、攻撃者は製品を別のプラットフォームで高い価格で売りさばきます。

シナリオ #2

航空会社がキャンセル手数料のないオンラインチケット購入を提供しています。悪意のあるユーザーは特定のフライトの座席の90%を予約します。

フライトの数日前、悪意のあるユーザーは一斉にすべてのチケットをキャンセルしました。これにより航空会社はチケット価格を割引してフライトを埋める必要がありました。

その後、ユーザーは元の価格よりもはるかに安い単一のチケットを購入します。

シナリオ #3

ライドシェアアプリが紹介プログラムを提供しています – ユーザーは友達を招待し、各友達がアプリに参加するたびにクレジットを獲得できます。このクレジットは後にライドを予約するための現金として使用できます。

攻撃者はこのフローを悪用し、スクリプトを使用して登録プロセスを自動化します。新しいユーザーごとにクレジットを攻撃者のウォレットに追加します。

攻撃者は後に無料の乗車を楽しむか、過剰なクレジットを持つアカウントを現金で売却することができます。

予防方法

予防計画は二つの層で行う必要があります:

  • ビジネス – 過剰に使用されるとビジネスに害を与える可能性があるビジネスフローを特定します。
  • エンジニアリング – ビジネスリスクを緩和するための適切な保護メカニズムを選択します。

保護メカニズムの一部はシンプルなものであり、他のものは実装が難しいです。以下の方法が自動化された脅威を遅延させるために使用されます:

  • デバイスのフィンガープリント:予期しないクライアントデバイス(例:ヘッドレスブラウザ)にサービスを拒否することで、脅威アクターによるより高度な解決策を採用することがよりコストがかかります
  • 人間の検出:キャプチャまたはより高度な生体認証ソリューション(例:タイピングパターン)を使用する
  • 非人間のパターン:ユーザーフローを分析して非人間のパターン(例:「カートに追加」および「購入完了」の機能にアクセスした時間が1秒未満)を検出する
  • Torの出口ノードや知られているプロキシのIPアドレスをブロックすることを検討する

直接機械によって消費されるAPI(開発者やB2BのAPIなど)への安全で制限されたアクセスを確保します。これらのAPIは必要な保護メカニズムをすべて実装していないため、攻撃者にとって狙いやすいターゲットです。

参考文献

OWASP