Android静态安全检测 -> WebView组件远程代码执行漏洞检测

WebView组件远程代码执行漏洞检测 - addJavascriptInterface方法


一、API


1. 继承关系


【1】java.lang.Object

【2】android.view.View

【3】android.view.ViewGroup

【4】android.widget.AbsoluteLayout

【5】android.webkit.WebView


2. 主要方法


【1】addJavascriptInterface(Object obj, String interfaceName)

  网页中的Javascript代码可以利用接口定义的名字,来调用应用中的Java代码


【2】getSettings( )

  返回一个WebSettings对象


【3】其他方法


  参考链接:http://www.apihome.cn/api/android/WebView.html


二、触发条件


1. 使用addJavascriptInterface方法注册可供JavaScript调用的Java对象


【1】对应到smali语句中的特征:Landroid/webkit/WebView;->addJavascriptInterface(


2. Android系统版本低于4.2


【1】对应到smali语句中的特征:

  Landroid/os/Build$VERSION;->SDK_INT 获取当前系统的Android版本号

  Android版本号大于等于17(0x11)


三、漏洞原理


【1】WebView组件中的addJavascriptInterface方法用于实现本地Java和JavaScript的交互,但是该函数并没有对方法调用进行限制,导致攻击者可以调用任何JAVA类,最终导致JavaScript代码对设备进行任意攻击


【2】详细的原理&POC


https://jaq.alibaba.com/community/art/show?spm=a313e.7975615.40002100.2.drjYfR&articleid=48


https://jaq.alibaba.com/gc/devcenter.htm?spm=a313e.7975615.40002100.3.is2RFv&helpid=68


四、修复建议


【1】建议不使用addJavascriptInterface接口,对于Android API Level为17或者以上的Android系统,Google规定允许被调用的函数,必须在Java的远程方法上面声明一个@JavascriptInterface注解


【2】在使用js2java的bridge时候,需要对每个传入的参数进行验证,避免恶意代码的攻击

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值