この情報は、機密性の高い JavaScript インターフェースの脆弱性が含まれているアプリのデベロッパーを対象としています。
状況
詳しくは、Google Play Console の通知をご参照ください。
必要な対応
- アカウント所有者のメールアドレスに送信された Google Play のメール通知を開いて、影響を受けるアプリとその修正期限を確認します。
- 該当のアプリを更新し、脆弱性を修正します。
- 該当するアプリの更新バージョンを送信します。
再送信すると、アプリは再度審査されます。審査には数時間ほどかかることがあります。アプリが審査に合格して正常に公開された場合は、これ以上の対応は不要です。アプリの審査が不合格となった場合は、新しいバージョンのアプリは公開されず、通知メールが届きます。
その他の詳細
デバイスやネットワークでの不正行為に関するポリシーに規定のとおり、「アプリまたはサードパーティのコードが(SDK など)実行時に JavaScript が読み込む場合 Play デベロッパー ポリシーに潜在的に違反する可能性があってはなりません。」
この記事は、Google Developers ブログの「WebView でのウェブアプリの作成」で説明されているような、WebView の addJavascriptInterface
メソッドを WebView の JavaScript インターフェースとして使用して WebView に機能を公開するオブジェクトを対象としています。
この脆弱性クラスは、JavaScript インターフェースを通じてユーザーデータとマルウェアに関する違反の発生を可能にする恐れがあります。公開されるインターフェースによっては、アプリや SDK デベロッパーが知らないうちに、有害なデータ収集やデータの引き出し、および有害な可能性があるアプリにつながる恐れがあります。
以下のいずれかの方法でこの脆弱性への対策を講じてください。
方法 1: WebView で JavaScript インターフェースにオブジェクトが追加されないようにする
信頼できないウェブ コンテンツを読み込む WebView の JavaScript インターフェースには、オブジェクトが一切追加されないようにしてください。そのための手段は次のとおり 2 つあります。
- addJavascriptInterface への呼び出しで JavaScript インターフェースにオブジェクトが一切追加されないようにする。
-
信頼できないコンテンツが WebView で読み込まれる前に、shouldInterceptRequest で removeJavascriptInterface により JavaScript インターフェースからオブジェクトを削除する。
方法 2: 機密性の高い機能が JavaScript インターフェースを介して公開されないようにする
機密性の高い機能(権限を必要とする Android API 呼び出しなど)が JavaScript インターフェースに追加されないようにします。これには、ユーザーやデバイスに関する情報などのセンシティブ データを収集しないこと、ユーザー補助や SMS のメッセージなどの API を公開しないことなどが含まれます。脆弱性を解決する方法は複数あります。
- 機密情報に関わる権限を必要とする機能や、機密情報を収集する機能を再実装して、アプリ内でパッケージ化されたコードから呼び出されるようにします。それについて、ユーザーに認識しやすいように開示します。
- そのインターフェースからアクセス可能な機密性の高い機能やユーザーデータについて、アクセスできるようにする関数を削除します。
方法 3: WebView から信頼できないコンテンツに対して、機密性の高い機能が公開されないようにする
WebView に機密性の高い機能が含まれる場合、提供元不明の JavaScript を読み込んではならず、使用するデータまたは機能について認識しやすいように開示する必要があります。アプリ デベロッパーが所有する URL とコンテンツのみに厳密に範囲を絞って WebView に読み込まれるようにします。
脆弱性が修正されない場合、Play ポリシーに対する潜在的な違反があるものとみなされ、アプリに対する違反措置がとられます。
サポートのご案内
ポリシーをご確認のうえ、Google の判断が誤りだと思われる場合は、お手数ですが Google のポリシー サポートチームにお問い合わせください。担当者が 2 営業日以内にご連絡いたします。
デベロッパーとユーザーの皆様に Google Play を快適にご利用いただくための取り組みにご協力いただき、ありがとうございます。