クラウド環境
eコマースにおけるロジスティクスAPIのセキュリティリスク
トレンドマイクロは、eコマースプラットフォームのロジスティクスAPIの実装において、消費者の個人情報の漏えいにつながるセキュリティ欠陥を発見しました。今回の調査では、それらについて検証しています。また、そのような欠陥がソフトウェアエンジニア、eコマースプラットフォーム事業者、および消費者にもたらす、セキュリティリスクについて解説しています。
近年、コネクティビティはかつてないスピードとスケールで向上してきましたが、その実現に大きな役割を果たしているのが、さまざまな組織にある多様なシステムのシームレスな統合を可能にする、アプリケーションプログラミングインタフェース(API)です。APIは、企業とサードパーティベンダの間でデータやサービスを統合することで、さまざまな市場ニーズへの対応、サービス提供の強化、消費者インサイトの獲得を可能にし、ここ何年かのeコマースの著しい成長を後押ししています。
API統合が不適切な方法で行われていると、個人情報(PII)の漏えいリスクが発生する恐れがあります。API通信を利用している業種は多岐にわたりますが、特に機密データが伝送される場合、それらの業種では十分なセキュリティ保護が必要となります。それを怠っていると、意図しない個人情報の漏えいによって、法的義務やコンプライアンス上の義務を果たせなかった組織はもちろん、自身の個人情報が漏えいした消費者にも深刻な影響が及ぶ恐れがあります。トレンドマイクロの調査報告書である「eコマースにおけるロジスティクスAPIのセキュリティリスク」では、パンデミックの最中に大きく拡大したeコマースと物流という2つの市場について、詳細な検討を行っています。
外部ロジスティクスプロバイダとは
eコマース業界は、パンデミック以前からも安定した成長を見せていましたが、新型コロナウイルスの影響はその成長を強力に後押ししました。これは、あらゆる人々が各国政府のロックダウン政策に従い、移動の制限に対処する必要に迫られたからです。その結果、商品やサービスにアクセスするための手段がeコマースプラットフォームに大きくシフトし、需要の急増によって、オンライン販売者は配送のタイムリー性を確保するプレッシャーに迫られるようになりました。
外部ロジスティクスプロバイダは、サプライチェーンプロセスのこうした側面を部分的に、あるいは包括的な物流ソリューションを通して管理することで、販売者の物流ニーズに対応しています。これには、販売者が商品配送のために利用する単純な宅配サービス(セカンドパーティロジスティクスすなわち2PL)や、倉庫管理、フルフィルメント、商品配送で構成されるサードパーティロジスティクス(3PL)などがあります。図1(こちらのページより引用)は、さまざまなユースケースで外部物流業者がどのような役割を果たすかを表しています。
トレンドマイクロは当初、安全でない方法によって気づかないうちに個人情報を露出させている3PL・4PL業者について調査していました。しかし、調査を進めるうち、機密情報を露出させている3PL・4PL業者だけでなく、そうした業者のシステムに前から統合されているサービス自体にもセキュリティ上の脆弱性があり、eコマースのエコシステム全体のリスクを深刻化させていることが分かりました。eコマースプラットフォームでは、販売者がAPIを通じて既存の外部ロジスティクスプロバイダを統合し、さまざまなサービスを単一のプラットフォームに集約することができます。eコマースプラットフォームと物流業者が共有するAPIキーと認証キーは、セキュアな通信チャネルの確保を本来の目的として利用されています。
eコマースとロジスティクスのAPI実装から個人情報がどのように漏えいするか
ロジスティクスAPIの実装から個人情報が漏えいする経路には、安全でないコーディングプラクティスに関連するものが多くあります。以下のセクションでは、その一部について取り上げます。
URLクエリパラメータ
個人情報を意図せず露出させてしまうコーディングプラクティスの一つとして、eコマースプラットフォームとロジスティクスAPIにおけるURLクエリパラメータに関わるものがあります。eコマースプラットフォームでは通常、顧客にアカウントへのログインか、ゲストチェックアウトのオプションの選択を要求します。一部のオンラインショッピングサイトでは、メールやSMSで固有のURLをユーザに送信し、それを通じて、注文情報にアクセスできるWebサイトにユーザをリダイレクトしています。
ここでは、固有のURLを使用することと、それを受信者が所有するメールアドレスまたは電話番号に送信することの組み合わせによって、個人情報が十分に保護されることが前提になっていますが、それは誤った安心感を生み出してしまうため問題と言えます。今回の調査では、認証されていない人物でもURLに直接アクセスして、さらなる認証の必要なしに顧客の個人情報を取得できてしまうことが明らかになりました。
URLパラメータ内の認証キー
オンラインストアで注文を行うと、購入者には店から確認メールが届きます。そのメールにはURLリンクが記載されており、このURLは、注文の詳細を確認するための認証キーをURLパラメータに含んでいます。このキーは、注文ページをチェックするユーザが確認メールの受信者であるかどうかを検証するために使用されます。注文ページには、顧客の氏名、メールアドレス、電話番号、支払い方法といった情報が含まれています。
URLのパラメータの一部として認証キーを渡す方法は、個人情報の漏えいにつながる可能性があります。なぜなら、そのようなキーは、ユーザのブラウジング履歴やルータのログにアクセスするといった他の手段を通じても取得できてしまうためです。暗号化されていないURLクエリパラメータを使用すると、個人情報はスニッフィングや中間者攻撃の標的となる恐れがあります。
認証を利用していない3PL API
オンライン小売企業が利用する3PLサービスの基本要素には、注文処理、配送、追跡などがありますが、トレンドマイクロは、ある3PL事業者(図3ではX社と表記)のAPIが、認証を利用していないAPIサービスを通じて個人情報を露出させていることも発見しました。このAPIサービスは、他の4社の3PL事業者が顧客の注文情報を表示するのにも利用されています。
4社の3PL事業者のうち1社が提供するURLリンクから注文情報ページを調査し、注文詳細の表示のために実行されたHTTPリクエストを確認したところ、ここで表示されているページはバックグラウンドで別の3PL事業者に対するHTTPリクエストを行って、注文詳細を取得していることが分かりました。
トレンドマイクロは、注文情報ページのURLのパラメータを詳しく調べました。バックグラウンドで実行されているAPIリクエストの1つは、APIリクエストを検証するための認証が行われない方式を取っているにもかかわらず、それによって購入者や購入商品に関するフルセットの情報が返されていました。そのため、注文情報URLにアクセスできる人であれば誰でも、URLを再構築して顧客の個人情報を取得することが可能となっています。
推奨される期間以上の有効期限が設定されているセッションとクッキー
もう一つの安全でないコーディングプラクティスとして挙げられるのは、一部の3PL事業者が、有効期限の設定が不適切なセッションやクッキーを使用していることです。認証を制御するためのセッションとクッキーの使用に向けたセキュリティベストプラクティスが3PL事業者によって守られていない事例を、トレンドマイクロは数多く発見しました。認証の制御にセッションとクッキーを使用する方法は、Open Web Application Security Project(OWASP)が推奨してきたベストプラクティスの1つではありますが、セッションのTTL(Time To Live)は必ず、トランザクションが完了したら、またはユーザが接続を終了したらすぐに有効期限切れにする必要があります。サイバー犯罪者は、探し当てたクッキーのキーを利用してトランザクションをリプレイし、個人情報を取得し、それを悪用して犯罪の企みを実行に移すことができます。
/security-risks-in-logistics-apis-used-by-e-commerce-platforms-/logistics05.png)
安全でないコーディングプラクティスに対処するためのセキュリティ上の推奨事項
漏えいした個人情報に対する犯罪者の関心、その悪用の可能性、そしてeコマースにおいてAPIが果たす重要な役割を考えれば、利害関係者がロジスティクスAPIの実装のセキュリティを確保する上で、用意周到なアプローチを採用しなければならないことは明らかです。
トレンドマイクロは今回の調査報告書の中で、コーディングプラクティスの改善方法に関する推奨事項をいくつか紹介しています。以下に、その一部を抜粋します。
1. セッションとクッキーの有効期限
セッションの有効期限は、サーバに対するセッションの認証済み接続を終了させるタイミングを決定します。デフォルトでは、有効期限が1日間に設定されているか、もしくはユーザがサイトへの接続を終了するとセッションが終了されるようになっています。クッキーの有効期限にも同様の仕組みが適用されています。期限切れのクッキーが再利用されるのを防ぐため、ユーザがサイト上で何のアクションも起こさなくなったら、セッションタイムアウトを発生させることも推奨されます。
2. 過度なデータ露出
過度なデータ露出は、トランザクションが必要とする以上のデータが露出しているときに発生します。一部の開発者の実装では、トランザクションの完了のために必要とされる情報にとどまらず、トランザクションの情報すべてを送信しています。このような実装は、アクセスに制限があったり権限が限定的であったりするアカウントにデータが漏えいする事態を発生させます。ロジスティクスAPIから漏えいしたデータは、詐欺や不正行為に利用される可能性があります。
開発者は、トランザクションに必須である顧客情報を特定して、そのリスクレベルを分類するというプラクティスを導入することが推奨されます。
3. オブジェクトレベルの認証の不備
オブジェクトレベルの認証は、コーディング段階で実装されることが一般的です。このアクセス制御戦略は、認証されたユーザのみがオブジェクトにアクセスできることを保証するために実施されます。オブジェクトレベルの認証チェックは、オブジェクトのIDを受け取ってそのオブジェクトに対して何らかの操作を行うAPIエンドポイントすべてに実装されるべきです。このチェックにより、ログインしているユーザが、要求対象のオブジェクトに対する操作実行権限を持っていることを確認します。
個人情報を扱う際のいっそう安全なプラクティスとしては、データを暗号化するとともに、アクセス権を与える前にユーザ認証を要求することが挙げられます。3PL APIの統合を使用する場合、3PLと提携関係にあるサプライヤと個人情報を共有するときには、その情報に対する十分な保護が必要です。APIトランザクションの保護のためには、多くの種類の認証アルゴリズムを利用できます。JSON Web Token(JWT)や、base64を利用してソルトを加えてエンコードしたカスタムトークンといったトークンは、APIコールの保護のために欠かせないものです。
まとめて言えば、開発者は、トランザクションを通してどのようなデータを提供すべきか、そしてどのような認証手段を用意すべきかについて考えておく必要があります。
eコマースプラットフォームのユーザに向けたセキュリティ上の推奨事項
個人情報漏えいのリスクを最小化する上では、消費者も同様に重要な役割を担っています。個人情報を安全に保つためには、以下のようなセキュリティプラクティスが役立ちます。
- 配送物の梱包を適切な方法で廃棄し、個人情報が記載されたラベルはシュレッダー処理する、または文字を判別できなくすることで、犯罪者に読み取られないようにする。
- 特に公共または共有バイス上では、自身のブラウジング履歴を削除する。
- 暗号化されていないURLクエリ文字列を読み取って収集する可能性がある、素性の知れないブラウザ拡張機能をWebブラウザにインストールすることは避ける。
- 公共のWi-Fiネットワーク上では適正なVPN(バーチャルプライベートネットワーク)を利用し、個人データの露出を低減する。
- 個人情報の入力が必要とされるeコマースプラットフォームやその他のサイトでは、二要素認証または多要素認証を実装する。
まとめ
ビジネスオーナーは、自身が選択したeコマースプラットフォームやロジスティクスサービスのセキュリティ実装を直接コントロールすることはできませんが、順調なビジネスのためには、トレンドマイクロが発見したセキュリティ欠陥に対する早期の対応が必要となります。したがって、長期的な成功を目指す企業であれば、APIサービスを常に徹底的に監査することと、eコマースプラットフォームとロジスティクスプロバイダの開発者が業界のベストプラクティスを採用することを、進んで求めていく必要があります。
参考記事
Security Risks in Logistics APIs Used by E-Commerce Platforms
By: Ryan Flores, Charles Perine, Lord Alfred Remorin, Roel Reyes