私の会社がPCI DSSの苦情であると想定します。 Androidモバイルアプリケーションを介して商品を販売する販売者に、支払い処理用のカスタムビュー(AndroidのSDKライブラリ内)を提供したい。
主な目標は、支払いの詳細(カード番号またはCVV)について販売者にアクセス権を与えることなく支払いを行うことです。
私のビューには、カード番号、有効期限、およびCVVの入力がありますが、モバイル決済SDKを使用すると、マーチャントAPPがカードデータを読み取れなくなります。これはすべて説明されています ここ 。
SDKライブラリでこのタスクのカスタムビューを作成する場合、不正な販売者がライブラリをアンラップしたり、書き換えたりして、Webサービスへの支払い呼び出しをキャッチし、データベースにセキュリティデータを記録しないようにするにはどうすればよいですか。
支払いWebサービスへの呼び出しが本当にカスタムビューから行われていることをどのように確認できますか?
これは、提案している敵に大きく依存します。
「アンラップ」とは、逆アセンブルとパッチを意味する場合、防御できない脅威モデルが自分にあり、その理由は次のとおりです。
コードを逆アセンブルしてパッチを適用できるとすれば、基本的には好きなことを何でも実行できます。結局のところ、それはアプリケーションであり、自分にしか見えない独自のコードを使用しています。
さらに、有効なSDKインスタンスからのリクエスト(リクエストの署名など)を確認するために使用できるシークレットは、このような攻撃者によってリバースエンジニアリングされる可能性があります。
全体として、それはマーチャントアプリケーションであり、彼らは好きなコードを実行でき、それを実行することを制御できないコンシューマーデバイスです。
ちなみにこれが、支払い用アプリがオペレーティングシステムベンダーまたはベンダーアプリ内にリンクされた別のアプリケーションのいずれかである理由です(例Apple Pay、google wallet、 Paypal)。
さらに、明確にするために、ルート化されたデバイスは、メモリ内のすべてのデータをダンプするために使用される可能性が高いため、完全なセキュリティはありません。
また、注目に値します:MITM攻撃に対抗するためにアプリ内で証明書をピン留めするなど、バックエンドとの通信はすべてTLSで保護する必要があります。
実装の詳細はここではトピックから外れているので、ここでは取り上げません。SOの方がうまくいくかもしれません。
SDKライブラリでこのタスクのカスタムビューを作成する場合、不正な販売者がライブラリをアンラップしたり、書き換えたりして、Webサービスへの支払い呼び出しをキャッチし、データベースにセキュリティデータを記録しないようにするにはどうすればよいですか。
ラフコスターが非常に簡潔に記述した1つの非常に単純なルールを理解する必要があります
クライアントを信頼しないでください。クライアントには何も置かないでください。クライアントは敵の手中にあります。これを決して忘れません。
Raphがオンラインゲームについて話している間、それはまだ他のほとんどすべてに適用されます。特にあなたが言及したこの部分
主な目標は、支払いの詳細(カード番号またはCVV)について販売者にアクセス権を与えることなく支払いを行うことです。
それを防ぐことはできません。 SDKを使用してアプリを開発した場合、好きなデータを収集して保存できます。行間を読むと、SDKでPCI-DSSを販売しているように見えますが、クライアントがアプリを開発します。理解してください、人々は(そして日常的に) 再パッケージAndroidアプリをいつでも できます。それは簡単です。
つまり、ビジネスモデルは機能しません。クライアントは、定義により、最初にデータを収集してから、そのデータをユーザーに渡す必要があります。彼らがそのデータを保存することを選択した場合(PCI-DSSの違反の可能性がある場合)、それらを停止することはできず、クライアントがハッキングされ、そのデータが盗まれた場合、問題が発生します。