跳转至

addJavaScriptInterface Remote Code Execution.

addJavaScriptInterface 远程代码执行

描述

在 API 级别 JELLY_BEAN 或更低版本上的 addJavascriptInterface() 方法可能被通过反射(reflection)滥用,从而在正在运行的应用程序的上下文中远程执行命令。

addJavascriptInterface 方法将 WebView 中提供的 Java 对象暴露给 JavaScript。对于针对低于 17 的 API 级别编译或链接的应用程序,可以访问所有公共方法(包括继承的方法)。通过使用反射,还可以调用任何其他未注册的 Java 类。

建议

此问题已在为 Android 4.2(API 级别 17)及更高版本开发的应用程序中得到解决。从 Android 4.2(API 级别 17)及更高版本开始,只有明确标记有 @JavascriptInterface 注释的方法才可供 WebView 中的 JavaScript 代码使用。@JavascriptInterface 注释必须添加到打算通过原生桥(native bridge)公开的任何方法中(该方法也必须是公共的)。下面给出了一个示例:

    @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