コンテンツにスキップ

addJavaScriptInterface Remote Code Execution.

addJavaScriptInterface リモートコード実行

説明

API レベル JELLY_BEAN 以下の addJavascriptInterface() メソッドは、リフレクションを通じて悪用され、実行中のアプリケーションのコンテキストでコマンドをリモートから実行される可能性があります。

addJavascriptInterface メソッドは、WebView 内から提供された Java オブジェクトを JavaScript に公開します。17 未満の API レベルに対してコンパイルまたはリンクされたアプリケーションの場合、(継承されたものを含む) すべてのパブリックメソッドにアクセスできます。リフレクションを使用することで、登録されていない他の Java クラスを呼び出すことも可能です。

推奨事項

この問題は、Android 4.2 (API レベル 17) 以降向けに開発されたアプリケーションで解決されています。Android 4.2 (API レベル 17) 以降では、@JavascriptInterface アノテーションで明示的にマークされたメソッドのみが WebView 内の JavaScript コードで利用できます。@JavascriptInterface アノテーションは、ネイティブブリッジ経由で公開することを目的とした任意のメソッドに追加する必要があります (メソッドはパブリックである必要もあります)。例を以下に示します:

    @JavascriptInterfacepublic void method() {dostuff();}

問題を解決するには、API 17 以上向けにアプリケーションをビルドして再配布する必要があります。ユーザーは、脆弱性のない新しいアプリケーションを使用するために、アプリケーションをアップグレードする必要があります。

リンク

標準

  • OWASP_MASVS_L1:
    • MSTG_PLATFORM_7
  • OWASP_MASVS_L2:
    • MSTG_PLATFORM_2
  • GDPR:
    • ART_5
    • ART_32
  • PCI_STANDARDS:
    • REQ_2_2
    • REQ_6_2
    • REQ_6_3
    • REQ_11_3
  • OWASP_MASVS_v2_1:
    • MASVS_PLATFORM_2
    • MASVS_CODE_4
  • SOC2_CONTROLS:
    • CC_2_1
    • CC_4_1
    • CC_7_1
    • CC_7_2
    • CC_7_4
    • CC_7_5
  • HIPAA_CONTROLS:
    • SECURITY212
    • SECURITY213
    • SECURITY255
    • SECURITY258