首页 -> 安全研究

安全研究

紧急通告
绿盟科技紧急通告(Alert2013-09)

NSFOCUS安全小组(security@nsfocus.com)
http://www.nsfocus.com

Android WebView组件addJavascriptInterface方法不安全使用造成远程命令执行

发布日期:2013-09-05


受影响的软件及系统:
====================
Android < 4.2

综述:
======
Android的SDK中提供了一个WebView组件,用于在应用中嵌入一个浏览器来进行网页浏览。WebView组件中的addJavascriptInterface方法用于实现本地Java和JavaScript的交互。这个方法可以通过js脚本在本地执行任意Java代码,从而以当前用户身份执行任意命令。

尽管Android官方已经提醒了此功能在访问不可信网页内容时存在严重安全风险,很多应用开发人员仍未意识到此问题,大量Android应用特别是浏览器应用受到此问题影响,可能被攻击者利用来进行对Android移动终端进行网页挂马等恶意攻击行为。

分析:
======
Android下很多应用在使用WebView访问html页面时都会调用addJavascriptInterface方法,这类应用程序一般都会有类似如下的代码:

webView.addJavascriptInterface(javaObj, "jsObj");

此段代码将javaObj对象暴露给js脚本,可以通过jsObj对象对其进行引用,调用javaObj的方法。

结合Java的反射机制可以通过js脚本执行任意Java代码,相关代码如下:

<script>
function execute(cmdArgs)
{
    return jsobj.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
}
execute(someCmd)
</script>

当受影响的应用程序执行到上述脚本的时候,就会执行someCmd指定的命令。

Android系统下许多应用程序(浏览器,微博等)使用webView进行界面展示,都有可能受到此问题的影响。

攻击者可以通过诱使受害者打开恶意网页、浏览恶意微博或者向受害者发送恶意邮件等方式来利用此漏洞,获取用户敏感信息、控制用户系统。

解决方法:
==========
对于应用厂商:

<1> 确保只在访问可信页面数据时才使用addjavascriptInterface。
<2> 在调用Java对象方法前对参数进行检查,避免执行恶意操作。
<3> 对于在4.2(API 17+)系统运行的应用,使用JavascriptInterface代替addjavascriptInterface。
<4> 限制对于该接口的使用来源,只允许可信来源访问该接口。例如使用WebViewClient中的shouldOverrideUrlLoading()来对加载的URL进行检查。

对于终端用户:

<1> 关注应用厂商更新情况,尽快升级应用程序到最新版本。
<2> 在厂商修补前,用户应尽量避免使用应用浏览不可信的网页链接和邮件。

厂商状态:
==========
Android官方已提醒此功能是有安全风险的,在可能访问不可信网页内容时需要小心处理。
Android 4.2 (api 17)已经开始采用JavascriptInterface代替addjavascriptInterface。

附加信息:
==========
1. http://drops.wooyun.org/papers/548
2. http://developer.android.com/reference/android/webkit/WebView.html
3. http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29
4. http://www.cis.syr.edu/~wedu/Research/paper/webview_acsac2011.pdf
5. http://50.56.33.56/blog/?p=314
6. http://www.nsfocus.net/index.php?act=alert&do=view&aid=139

声 明
==========

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技
============

绿盟科技(NSFOCUS Co., Ltd.)是中国网络安全领域的领导企业,致力于网络和系统安全问题的研究、高端网络安全产品的研发、销售与网络安全服务,在入侵检测/保护、远程评估、 DDoS攻击防护等方面提供具有国际竞争能力的先进产品,是国内最具安全服务经验的专业公司。有关绿盟科技的详情请参见: http://www.nsfocus.com

© 2018 绿盟科技