android webview 劫持,安卓包风险安全监测提示存在Activity劫持、WebView远程代码执行,请问怎么解决?...

挺着急的,请问这个怎么解决

1、Activity劫持

用例名称:Activity劫持

风险系数:高

风险编号:NESUN-2016-82091, CWE-94,

风险描述:攻击者劫持目标Activity并制造跟目标Activity界面相似度很高的界面迷惑用户,可能导致钓鱼攻击,造成用户名/密码等敏感信息泄露。

检测过程:

1、对被测APP进行测试预处理。

2、在测试助手上安装、运行被测APP。

3、动态追踪目标APP的Activity状态,实时构建Activity转换图。

4、遍历Activity转换图进行插桩劫持,追踪分析客户端被劫持后的响应,发现被测系统能够被成功劫持。

Activity 劫持成功!被劫持的Activity为:io.dcloud.PandoraEntryActivity

修复建议:

目前还没有什么专门针对Activity劫持的防护方法,因为这种攻击是用户层面上的,目前还无法从代码层面上根除。

但是我们可以适当的在APP中给用户一些警示信息,提示登录或关键界面已被覆盖,具体解决方案如下:

在APP的Activity界面(也就是MainActivity)中重写onKeyDown方法和onPause方法,当其被覆盖时,就能够弹出警示信息。判断程序进入后台是不是由用户自己触发的(触摸返回键或HOME键),如果是用户自己触发的则无需弹出警示,否则弹出警示信息。

2、WebView远程代码执行

用例名称:WebView远程代码执行

风险系数:高

风险编号:NESUN-2016-82035, CVE-2012-6636, CNNVD-201403-027, CWE-264, OWASP Mobile Top 10 2016 M7

风险描述:Android系统通过WebView.addJavascriptInterface方法注册可供JavaScript调用的Java对象,以用于增强JavaScript的功能。但是系统并没有对注册Java类的方法调用的限制。导致攻击者可以利用反射机制调用未注册的其它任何Java类,最终导致JavaScript能力的无限增强。攻击者利用该漏洞可以根据客户端能力实现远程任意代码执行攻击。 WebView 远程代码执行漏洞触发前提条件: 1)使用addJavascriptInterface方法注册可供JavaScript调用的Java对象; 2)使用WebView加载外部网页或者本地网页; 3)Android系统版本低于4.2。

检测过程:

1、基于深度静态检测技术DSAST进行破壳/逆向分析等获取客户端程序Java源文件。

2、对构成源程序的字符流进行扫描,通过词法分析,生成相关符号列表。

3、进行语法分析,整理成语法树,通过抽象语法树分析,将程序组织成树形结构,构造Java类和函数库。

4、进行语义分析,生成函数调用关系图,依据漏洞特征,遍历Java类和函数库,发现存在WebView远程代码执行的可能,具体表现为使用addJavascriptInterface接口。

相关文件名/行:

classes.dex

相关程序代码段如下:

在 com.tencent.bugly.yaq.crashreport.CrashReport$1 内部类的 public final addJavascriptInterface(Lcom/tencent/bugly/yaq/crashreport/crash/h5/H5JavaScriptInterface;Ljava/lang/String;)V 方法,使用了函数 Landroid/webkit/WebView;->addJavascriptInterface(Ljava/lang/Object;Ljava/lang/String;)V

修复建议:

1、在客户端启动时检测Android版本,如果是Android4.2及以下版本则提示用户或者退出。

2、使用addJavascriptInterface接口时,

用以下方式增强安全性:

1) 使用HTTPS协议加载URL,应进行证书校验防止访问的页面被篡改挂马;

2) 使用HTTP协议加载URL,应进行白名单过滤、完整性校验等防止访问的页面被篡改;

3) 加载本地Html,应将html文件内置在APK中,以及进行对html页面完整性的校验 。

3、不需使用时可通过以下方式移除Javascript接口:

removeJavascriptInterface(""searchBoxJavaBridge_"");

removeJavascriptInterface(""accessibility"");

removeJavascriptInterface(""accessibilityTraversal"")。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值