JavaScript インターフェース インジェクションに対する脆弱性の修正

この情報は、JavaScript インターフェース インジェクションへの脆弱性が含まれているアプリを提供しているデベロッパーを対象としています。

状況

詳しくは Play Console の通知をご覧ください。Play Console に表示されている期限を過ぎた後もセキュリティの脆弱性が修正されていないアプリは、Google Play から削除される場合があります。

必要な対応

  1. Play Console にログインし、[アラート] セクションで、該当するアプリや問題の解決期限を確認します。
  2. 該当のアプリを更新し、脆弱性を修正します。
  3. 該当のアプリの更新バージョンを送信します。

再送信すると、アプリは再度審査されます。審査には数時間ほどかかることがあります。アプリが審査に合格して正常に公開された場合は、これ以上の対応は不要です。アプリが審査に不合格となった場合、アプリの更新バージョンは公開されず、メールで通知が届きます。

その他の詳細

WebView で、addJavascriptInterface によりアプリレベルのオブジェクトを JavaScript コードにエクスポーズして信頼できないウェブ コンテンツを読み込む場合、JavaScript インターフェース インジェクションに対して脆弱となります。信頼できないコンテンツでは、エクスポーズされたオブジェクトのメソッドが @JavascriptInterface のアノテーション付きで実行される可能性があるので、データの漏えいや破損のほか、勝手なコード実行が行われる危険性にもつながります。

以下のいずれかの方法でこの脆弱性への対応策を講じてください。

方法 1: WebView で JavaScript インターフェースにオブジェクトが追加されないようにする

信頼できないウェブ コンテンツを読み込む WebView の JavaScript インターフェースには、オブジェクトが一切追加されないようにしてください。そのための手段は次のとおり 2 つあります。

 

いかなるオブジェクトも addJavascriptInterface への呼び出しにより JavaScript インターフェースに追加されないようにする

  1. 信頼できないコンテンツが WebView で読み込まれる前に、shouldInterceptRequestremoveJavascriptInterface により JavaScript インターフェースからオブジェクトを削除する

方法 2: 信頼できないウェブ コンテンツが WebView で読み込まれないようにする

アプリで WebView の JavaScript インターフェースにオブジェクトをエクスポーズする必要がある場合は必ず、その WebView で、暗号化されていない接続を介してウェブ コンテンツが読み込まれることがないようにしてください。そのためには、マニフェストandroid:usesCleartextTraffic を false に設定するか、HTTP トラフィックを禁止するようにネットワーク セキュリティ構成を設定します。別の手段として、該当するすべての WebView で、loadUrl により HTTP スキームの URL が一切読み込まれないようにすることもできます。


JavaScript インターフェースを含む WebView では、信頼できないソースから取得された未確認の URL(たとえば、信頼できないインテントから取得された URL)が読み込まれないようにしてください。

サポートのご案内

脆弱性に関する技術的なご質問については、Stack Overflow にご投稿ください。その際、「android-security」タグをご使用ください。この問題を解決するための手順で不明な点がありましたら、デベロッパー サポートチームにお問い合わせください。

この情報は役に立ちましたか?
改善できる点がありましたらお聞かせください。