挺着急的,请问这个怎么解决
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"")。
忘记 (作者)
我们是云打包
2019-10-22 16:49
忘记 (作者)
上次打包时间是 9月18号
2019-10-22 17:03
DCloud_Android_ST
回复 忘记: 用最新版本试试吧 com.tencent.bugly不错在。
2019-10-22 17:30
忘记 (作者)
回复 DCloud_Android_ST: 好的,我们试下, onPause 这个是退到后台进行一个提示,打开之后再关闭的那种吗?
2019-10-22 19:15
忘记 (作者)
回复 DCloud_Android_ST: 我现在不清楚,用那种提示框才能实现这种效果,比如有人为操作,这样的就该过滤掉
2019-10-22 19:30
忘记 (作者)
回复 DCloud_Android_ST: function Cfg() {};
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener("plusready", onPlusReady, false);
function onPlusReady(){
document.addEventListener("resume", onAppReume, false);
document.addEventListener("pause", onAppPause, false);
}
function onAppPause(){
mui.alert("程序仍在后台运行",'警告',null,null,'div');
}
function onAppReume(){
mui.closePopup();
}
我这样写的,不知道能不能行,您看下是这个意思吗?
2019-10-22 19:53
DCloud_Android_ST
这种问题没有明确的解决方案,如果你们在意这个问题,就可以通过onPause 事件进行友好提示,至于怎样操作什么逻辑是没有规范。开发者自己来控制处理。
2019-10-22 19:55
忘记 (作者)
回复 忘记: 我使用resume 执行 mui.closePopup(); 进行 关闭弹出,页面会出现无法操作的现象,感觉有一层透明遮罩似的
2019-11-05 21:05
DCloud_Android_ST
回复 忘记: https://www.html5plus.org/doc/zh_cn/nativeui.html#plus.nativeUI.alert
2019-11-06 11:10