Android安全--webview远程代码执行漏洞

来源:互联网 发布:什么下载软件 编辑:程序博客网 时间:2024/06/05 14:10

说明

Android API level 16以及之前的版本存在远程代码执行安全漏洞,源于程序没有正确限制WebView.addJavascriptInterface方法,攻击者可以利用Java Reflection API 执行任意Java对象的方法。最早公布 CVE-2012-6636【1】。

影响范围

Android API level 小于17(android 4.2以前的系统)

漏洞位置

WebView.addJavascriptInterface(Object obj,String interfaceName);

前提条件

android version<4.2
使用addJavascriptInterface方法注册可供JavaScript调用的JAVA对象

修复建议

  • API Level 依赖的API Level为17或者以上,就不会受到该问题的影响
  • 对于API Level 等于或低于17的Android系统:
    建议不要使用addJavascriptInterface接口;
    如果一定要用addJavascriptInterface:

    • 如果使用HTTPS协议加载URL,应进行证书校验防止访问的页面被篡改挂马;
    • 如果使用HTTP协议加载URL,应进行白名单过滤、完整性校验等防止访问的页面被篡改;
    • 如果加载本地Html,应将html文件内置在APK中,以及进行对html页面完整性校验。
  • 移除Android系统内部的默认内置接口
    在2014年发现在Android系统中webkit中默认内置的一个searchBoxJavaBridge_接口同时存在远程代码执行漏洞,建议工发者通过以下方式移除该Javascript接口:
    removeJavascriptInterface(“searchBoxJavaBridge_”);
    另外在android/webkit/AccessibilityInjector.java中存在accessibility和accessibility Traversal存在类似漏洞,建议移除:
    removeJavascriptInterface(“accessibility”);
    removeJavascriptInterface(“accessibilityTraversal”);

Cordova系统修复

在project.properties里 target为android 17或以上时,可以将
ionic/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewEngine.java
259注释掉
// webView.addJavascriptInterface(exposedJsApi, “_cordovaNative”);
我把移除操作也写上了:

       // webView.addJavascriptInterface(exposedJsApi, "_cordovaNative");        webView.removeJavascriptInterface("accessibility");        webView.removeJavascriptInterface("accessibilityTraversal");        webView.removeJavascriptInterface("searchBoxJavaBridge_");

参考

http://jaq.alibaba.com/community/art/show?spm=a313e.7975615.40002100.9.EfcpI2&articleid=48

0 0