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

その API は脆弱か?

API エンドポイントを作成する際には、どのようなビジネスフローを公開するかを理解することが重要です。 ビジネスフローの中には、過度のアクセスがビジネスに損害をもたらす可能性があるという意味で、他のビジネスフローよりも機密性が高いものがあります。

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

  • 製品購入フロー - 攻撃者は需要の高い商品の在庫を一度にすべて購入し、より高い価格で転売できます (スキャルピング)

  • コメント作成・投稿フロー - 攻撃者はシステムにスパムを実行できます

  • 予約 - 攻撃者は利用可能な時間帯をすべて予約し、他のユーザーがシステムを使用できなくします

過剰なアクセスのリスクは業種や業務によって異なる可能性があります。 たとえば - スクリプトによる投稿の作成はあるソーシャルネットワークではスパムのリスクとみなされますが、別のソーシャルネットワークでは推奨されるかもしれません。

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

攻撃シナリオの例

シナリオ #1

あるテクノロジ企業が感謝祭に新しいゲーム機を発売すると発表しました。 この製品は非常に高い需要があり、在庫は限られています。 攻撃者は新しい製品を自動的に購入してトランザクションを完了するコードを記述します。

発売日に攻撃者はさまざまな IP アドレスやロケーションに分散したコードを実行します。 API は適切な保護を実装しておらず、攻撃者は他の正当なユーザーよりも先に在庫の大部分を購入できます。

その後、攻撃者は別のプラットフォームでその製品をはるかに高い価格で販売します。

シナリオ #2

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

フライトの数日前に悪意のあるユーザーがすべてのチケットを一度にキャンセルしたため、航空会社はフライトを埋めるためにチケットの価格を下げざるを得なくなりました。

この時点で、ユーザーは元のチケットよりもはるかに安い一枚のチケットを自分で購入します。

シナリオ #3

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

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

攻撃者は後ほど無料乗車を楽しんだり、過剰なクレジットを持つアカウントを売却して現金に換えることができます。

防止方法

緩和計画は二つの層で行います。

  • ビジネス - 過度に使用された場合にビジネスに悪影響を及ぼす可能性のあるビジネスフローを特定します。

  • エンジニアリング - 適切な保護メカニズムを選択して、ビジネスリスクを軽減します。

    保護メカニズムの中にはよりシンプルなものもあれば、実装がより困難なものもあります。自動化された脅威を遅らせるには以下の方法を使用します。

    • デバイスフィンガープリント: 予期せぬクライアントデバイス (ヘッドレスブラウザなど) へのサービスを拒否すると、脅威アクターはより洗練されたソリューションを使用する傾向があり、脅威アクターにとってよりコストがかかるようになります。

    • 人間検出: CAPTCHA やより高度な生体認証ソリューション (タイピングパターンなど) のいずれかを使用します。

    • 非人間パターン: ユーザーフローを解析して非人間パターン (「カートに追加」や「購入を完了」機能を一秒以内でアクセスしたユーザーなど) を検出します。

    • Tor 出口ノードやよく知られたプロキシの IP アドレスをブロックすることを検討します。

    マシンによって直接使用される API (開発者 API や B2B API など) へのアクセスを保護して制限します。これらは必要な保護メカニズムのすべてを実装してはいないことが多いため、攻撃者の格好のターゲットになる傾向があります。

参考資料

OWASP

Last updated