0

高危漏洞

7

中危漏洞

6

低危漏洞

9

警告

文件名 %E5%A4%A9%E5%A4%A9%E6%A3%8B%E7%89%8C.apk
上传者 wing
文件大小 25.794402122498MB
MD5 89f732f6950cd4684f9d5af1ed3f9cd7
包名 com.tiantian.chessgame
Main Activity com.tiantian.chessgame.MainActivity
Min SDK 9
Target SDK 15

权限列表

# 名称 说明 提示
0 android.permission.ACCESS_COARSE_LOCATION 访问大概的位置源(例如蜂窝网络数据库)以确定手机的大概位置(如果可以)。恶意应用程序可借此确定您所处的大概位置。 注意
1 android.permission.ACCESS_FINE_LOCATION 访问精准的位置源,例如手机上的全球定位系统(如果有)。恶意应用程序可能会借此确定您所处的位置,并可能消耗额外的电池电量。 注意
2 android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 访问额外的位置信息提供程序命令。恶意应用程序可借此干扰GPS或其他位置源的正常工作。 注意
3 android.permission.BLUETOOTH 允许应用程序查看本地蓝牙手机的配置,以及建立或接受与配对设备的连接。 注意
4 android.permission.BROADCAST_STICKY 允许应用程序发送顽固广播,这些广播在结束后仍会保留。恶意应用程序可能会借此使手机耗用太多内存,从而降低其速度或稳定性。 注意
5 android.permission.GET_TASKS 允许应用程序检索有关当前和最近运行的任务的信息。恶意应用程序可借此发现有关其他应用程序的保密信息。 注意
6 android.permission.READ_CONTACTS 允许应用程序读取您手机上存储的所有联系人(地址)数据。恶意应用程序可借此将您的数据发送给其他人。 注意
7 android.permission.READ_PHONE_STATE 允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。 注意
8 android.permission.RECEIVE_BOOT_COMPLETED 允许应用程序在系统完成启动后即自行启动。这样会延长手机的启动时间,而且如果应用程序一直运行,会降低手机的整体速度。 注意
9 android.permission.SYSTEM_ALERT_WINDOW 允许应用程序显示系统警报窗口。恶意应用程序可借此掌控整个手机屏幕。 注意
10 android.permission.WRITE_SETTINGS 允许应用程序修改系统设置方面的数据。恶意应用程序可借此破坏您的系统配置。 注意
11 android.permission.ACCESS_NETWORK_STATE 允许应用程序查看所有网络的状态。 提示
12 android.permission.ACCESS_WIFI_STATE 允许应用程序查看有关WLAN状态的信息。 提示
13 android.permission.BATTERY_STATS 允许修改收集的电池使用情况统计信息。普通应用程序不能使用此权限。 提示
14 android.permission.CAMERA 允许应用程序使用相机拍照,这样应用程序可随时收集进入相机镜头的图像。 提示
15 android.permission.CHANGE_NETWORK_STATE 允许应用程序更改网络连接的状态。 提示
16 android.permission.CHANGE_WIFI_STATE 允许应用程序连接到WLAN接入点以及与WLAN接入点断开连接,并对配置的WLAN网络进行更改。 提示
17 android.permission.INTERNET 允许程序访问网络. 提示
18 android.permission.KILL_BACKGROUND_PROCESSES 无论内存资源是否紧张,都允许应用程序结束其他应用程序的后台进程。 提示
19 android.permission.MOUNT_UNMOUNT_FILESYSTEMS 允许应用程序装载和卸载可移动存储器的文件系统。 提示
20 android.permission.READ_LOGS 允许应用程序从系统的各日志文件中读取信息。这样应用程序可以发现您的手机使用情况,但这些信息不应包含任何个人信息或保密信息。 提示
21 android.permission.RESTART_PACKAGES 允许程序自己重启或重启其他程序 提示
22 android.permission.VIBRATE 允许应用程序控制振动器。 提示
23 android.permission.WAKE_LOCK 允许应用程序防止手机进入休眠状态。 提示
24 android.permission.WRITE_EXTERNAL_STORAGE 允许应用程序写入SD卡。 提示

四大组件

组件名称

com.tiantian.chessgame.MainActivity
com.tencent.connect.common.AssistActivity
com.alipay.sdk.app.H5PayActivity
com.tiantian.chessgame.PayActivity
com.tiantian.chessgame.wxapi.WXPayEntryActivity
com.tiantian.chessgame.wxapi.WXEntryActivity
com.tencent.android.tpush.XGPushActivity

com.tencent.android.tpush.service.XGPushServiceV3
com.tencent.android.tpush.rpc.XGRemoteService

com.tencent.android.tpush.XGPushReceiver

com.tencent.android.tpush.XGPushProvider
com.tencent.android.tpush.SettingsContentProvider
com.tencent.mid.api.MidProvider

第三方库

# 库名 介绍
0 com.baidu.mtjstatsdk 游戏统计分析SDK
1 com.baidu.mobstat 百度移动统计SDK
2 com.tencent.mm.sdk 微信支付
3 cn.jpush.android.api 极光推送,使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户保持互动,从而有效地提高留存率,提升用户体验。平台提供整合了Android推送、iOS推送的统一推送服务。
4 com.alipay.sdk 支付宝移动支付功能
5 com.tencent.android.tpush 多种推送方式灵活方便\n推送目标分类 精准营销\n推送数据统计 效果跟踪
6 org.apache.http The Apache HttpComponents™ project is responsible for creating and maintaining a toolset of low level Java components focused on HTTP and associated protocols.
7 org.json 根据Gson库使用的要求,将JSONObject格式的String 解析成实体

静态扫描发现风险点

风险等级 风险名称

中危

检测到当前标志被设置成true或没设置,这会导致adb调试备份允许恶意攻击者复制应用程序数据,造成数据泄露。

中危

检测到2处证书弱校验漏洞。

位置: classes.dex
com.tiantian.chessgame.wxpay.Util$SSLSocketFactoryEx$1;
com.fm.openinstall.c.e;

当移动App客户端使用https或ssl/tls进行通信时,如果不校验证书的可信性,将存在中间人攻击漏洞,可导致信息泄露,传输数据被篡改,甚至通过中间人劫持将原有信息替换成恶意链接或恶意代码程序,以达到远程控制等攻击意图。建议:
对SSL证书进行强校验,包括签名CA是否合法、证书是否是自签名、主机域名是否匹配、证书是否过期等。

参考案例:
www.wooyun.org/bugs/wooyun-2014-079358

参考资料:
http://drops.wooyun.org/tips/3296
http://wolfeye.baidu.com/blog/webview-ignore-ssl-error/
https://jaq.alibaba.com/blog.htm?id=60

中危

检测到2处中间人攻击漏洞。

位置: classes.dex
com.tiantian.chessgame.wxpay.Util;->getNewHttpClient()Lorg.apache.http.client.HttpClient;
org.apache.http.conn.ssl.SSLSocketFactory;->()V

setHostnameVerifier方法设置ALLOW_ALL_HOSTNAME_VERIFIER,直接接受任意域名,可能造成中间人攻击漏洞。建议:
对SSL证书进行强校验,包括签名CA是否合法、证书是否是自签名、主机域名是否匹配、证书是否过期等。

参考案例:
http://www.wooyun.org/bugs/wooyun-2010-042710
http://www.wooyun.org/bugs/wooyun-2010-052339
http://www.wooyun.org/bugs/wooyun-2016-0190773

参考资料:
http://wolfeye.baidu.com/blog/webview-ignore-ssl-error/
https://jaq.alibaba.com/blog.htm?id=60

中危

该app需要移除大部分日志打印代码。
经扫描该包仍存在大量打日志代码,共发现173处打日志代码.(此处扫描的日志打印代码,是指调用android.util.Log.* 打印的.)
详情如下:

位置: classes.dex
com.tiantian.chessgame.wxpay.WxImplement;->Pay(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$9;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->a(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->g(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.mobstat.g;->b()Lcom/baidu/mobstat/g$b;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->e(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.d.a;->b(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$2$1;->shouldOverrideUrlLoading(Lcom/onevcat/uniwebview/UniWebViewDialog; Ljava/lang/String;)Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->i(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->h(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->j(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$4;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.Util;->readFromFile(Ljava/lang/String; I I)[B==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog;->(Landroid/content/Context; Lcom/onevcat/uniwebview/UniWebViewDialog$DialogListener;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.util.f;->g(Ljava/lang/Object;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
io.openinstall.unity.OiInstallCallback;->sendUnityMessage(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog$5$1;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.mtjstatsdk.g;->b()Lcom/baidu/mtjstatsdk/j;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->c(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.e.a.c;->onProgressChanged(Landroid/webkit/WebView; I)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->WXLogin()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mm.sdk.b.b;->f(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$11;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$14;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.util.f;->a(Ljava/lang/Object;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.e.a.d;->a(Ljava/lang/reflect/Method;)Ljava/lang/String;==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.PayActivity;->onResume()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->b(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog$4;->shouldOverrideUrlLoading(Landroid/webkit/WebView; Ljava/lang/String;)Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
org.fmod.a;->run()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MyApplication$1;->handleNotify(Lcom/tencent/android/tpush/XGNotifaction;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$15;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog$5;->onPermissionRequest(Landroid/webkit/PermissionRequest;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.util.Util;->getMidsByApps(Landroid/content/Context; I)Ljava/util/Map;==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$6;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity$1;->onSuccess(Ljava/lang/Object; I)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.WxImplement;->genPackageSign(Ljava/util/List;)Ljava/lang/String;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->m(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.util.f;->e(Ljava/lang/Object;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog$4;->onPageStarted(Landroid/webkit/WebView; Ljava/lang/String; Landroid/graphics/Bitmap;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog;->setSize(I I)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.Util;->extractThumbNail(Ljava/lang/String; I I Z)Landroid/graphics/Bitmap;==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.util.f;->a(Ljava/lang/Exception;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.mtjstatsdk.g;->b()Lcom/baidu/mtjstatsdk/j;==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.WxImplement;->toXml(Ljava/util/List;)Ljava/lang/String;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->h(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.stat.a.f;->g(Ljava/lang/Object;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->i(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.stat.a.f;->a(Ljava/lang/Object;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxapi.WXEntryActivity$1;->onResponse(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mm.sdk.b.b;->d(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mm.sdk.b.b;->e(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$36;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$21;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.fm.openinstall.f.b;->c(Ljava/lang/String; [Ljava/lang/Object;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.UnityPlayerActivity;->getText()Ljava/lang/String;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.util.Util;->getLocalXGAppList(Landroid/content/Context;)Ljava/util/Map;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$12;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.util.f;->c(Ljava/lang/Object;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$2$1;->onDialogShouldCloseByBackButton(Lcom/onevcat/uniwebview/UniWebViewDialog;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxapi.WXPayEntryActivity;->onResp(Lcom/tencent/mm/sdk/modelbase/BaseResp;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$23;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->StartPayActivity(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
org.fmod.FMODAudioDevice;->run()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->g(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->d(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->c(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog;->loadJS(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.unity3d.player.m;->Log(I Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog;->onData(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$2;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.VideoEnabledWebView$JavascriptInterface;->notifyVideoEnd()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.mobstat.g;->b()Lcom/baidu/mobstat/g$b;==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->joinQQGroup(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.b;->run()V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.Util;->readFromFile(Ljava/lang/String; I I)[B==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.UnityPlayerActivity;->setText(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$25;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->getText()Ljava/lang/String;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxapi.WXEntryActivity;->onCreate(Landroid/os/Bundle;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.fm.openinstall.f.b;->a(Ljava/lang/String; [Ljava/lang/Object;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$26;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.util.Util;->getMidsByApps(Landroid/content/Context; I)Ljava/util/Map;==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$22;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog;->setBounces(Z)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.WxImplement;->decodeXml(Ljava/lang/String;)Ljava/util/Map;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->setText(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.d.a;->a(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$19;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog;->setShow(Z Z I F)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->e(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.WxImplement$GetPrepayIdTask;->doInBackground([Ljava/lang/Void;)Ljava/util/Map;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->k(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.Alipay.AlipayImplement;->Pay(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->WXPay(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$2$1;->onReceivedError(Lcom/onevcat/uniwebview/UniWebViewDialog; I Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.stat.a.f;->e(Ljava/lang/Object;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxapi.WXEntryActivity;->onResp(Lcom/tencent/mm/sdk/modelbase/BaseResp;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->f(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->GetSchemeData()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity$1;->onFail(Ljava/lang/Object; I Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->d()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog;->updateContentSize()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog;->load(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.api.MidProvider;->getType(Landroid/net/Uri;)Ljava/lang/String;==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->d()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$10;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.unity3d.player.w;->a(Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.unity3d.player.m;->Log(I Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.stat.a.f;->c(Ljava/lang/Object;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$5;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.WxImplement;->genPayReq()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$24;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.Util;->readFromFile(Ljava/lang/String; I I)[B==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.b;->run()V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.e.a.d;->a(Ljava/lang/String; I Ljava/lang/Object;)Ljava/lang/String;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->d(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$2$1;->onPageFinished(Lcom/onevcat/uniwebview/UniWebViewDialog; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.Alipay.AlipayImplement;->getParmsInfo()Ljava/lang/String;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin;->onConfigurationChanged(Landroid/content/res/Configuration;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.api.MidProvider;->insert(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.d.a;->c(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->WXShare(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->openWX()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog;->addJs(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.WxImplement;->genProductArgs()Ljava/lang/String;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.e.a.d;->(Ljava/lang/String; Ljava/lang/Class;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$13;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.a.k;->run()V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin;->ShowAllWebViewDialogs(Z)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.Util;->httpGet(Ljava/lang/String;)[B==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.XGPushManager;->getNotificationBuilder(Landroid/content/Context; I)Lcom/tencent/android/tpush/XGPushNotificationBuilder;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->a(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.util.Util;->getMidsByApps(Landroid/content/Context; I)Ljava/util/Map;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.service.a.b;->a(Landroid/content/Context; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.fm.openinstall.f.b;->b(Ljava/lang/String; [Ljava/lang/Object;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog;->onKeyDown(I Landroid/view/KeyEvent;)Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.d.a;->d(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->a(I)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->b(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxapi.WXEntryActivity;->onReq(Lcom/tencent/mm/sdk/modelbase/BaseReq;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.Util;->extractThumbNail(Ljava/lang/String; I I Z)Landroid/graphics/Bitmap;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.stat.b.i;->d(Lcom/tencent/android/tpush/stat/b/d;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.PayActivity;->OnPayResult(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->onResume()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxapi.WXEntryActivity;->getAccessToken(Ljava/lang/String;)Ljava/lang/String;==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxapi.WXPayEntryActivity;->onResp(Lcom/tencent/mm/sdk/modelbase/BaseResp;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$20;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxapi.WXEntryActivity$1$1;->onResponse(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$8;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->JieTuShare(I Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$17;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$7;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$2$1;->onPageStarted(Lcom/onevcat/uniwebview/UniWebViewDialog; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$3;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.a.a;->a(Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->f(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$27;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.Util;->httpPost(Ljava/lang/String; Ljava/lang/String;)[B==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$16;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.PayActivity;->onCreate(Landroid/os/Bundle;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.WxImplement;->genAppSign(Ljava/util/List;)Ljava/lang/String;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.stat.a.h;->j(Landroid/content/Context;)Z==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.AndroidPlugin$18;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.util.Util;->getToken(Landroid/content/Context; Ljava/lang/String;)Ljava/lang/String;==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.MainActivity;->AlipayPay(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tiantian.chessgame.wxpay.Util;->extractThumbNail(Ljava/lang/String; I I Z)Landroid/graphics/Bitmap;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.alipay.test.a;->l(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.onevcat.uniwebview.UniWebViewDialog;->setTransparent(Z)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.mid.util.Util;->isNetworkAvailable(Landroid/content/Context;)Z==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.d.a;->e(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.tencent.android.tpush.XGPush4Msdk;->setQQAppId(Landroid/content/Context; J)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
io.openinstall.unity.OiWakeupCallback;->sendUnityMessage(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I

中危

检测到5个WebView远程执行漏洞。

位置: classes.dex
com.onevcat.uniwebview.VideoEnabledWebView;->addJavascriptInterface()V
com.onevcat.uniwebview.UniWebViewDialog;->createWebView()V
cn.jpush.android.ui.FullScreenView;->initModule(Landroid.content.Context; Lcn.jpush.android.data.c;)V
cn.jpush.android.ui.PopWinActivity;->onCreate(Landroid.os.Bundle;)V
com.baidu.mobstat.StatService;->a(Landroid.content.Context; Landroid.webkit.WebView; Landroid.webkit.WebViewClient; Landroid.webkit.WebChromeClient; Z)V

Android API < 17之前版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用addJavaScriptInterface方法,攻击者可以通过Java反射利用该漏洞执行任意Java对象的方法,导致远程代码执行安全漏洞。
(1)API等于高于17的Android系统。出于安全考虑,为了防止Java层的函数被随意调用,Google在4.2版本之后,规定允许被调用的函数必须以@JavascriptInterface进行注解。
(2)API等于高于17的Android系统。建议不要使用addJavascriptInterface接口,以免带来不必要的安全隐患,如果一定要使用该接口,建议使用证书校验。
(3)使用removeJavascriptInterface移除Android系统内部的默认内置接口:searchBoxJavaBridge_、accessibility、accessibilityTraversal。

参考案例:
www.wooyun.org/bugs/wooyun-2015-0140708
www.wooyun.org/bugs/wooyun-2016-0188252
http://drops.wooyun.org/papers/548

参考资料:
http://jaq.alibaba.com/blog.htm?id=48
http://blog.nsfocus.net/android-webview-remote-code-execution-vulnerability-analysis
https://developer.android.com/reference/android/webkit/WebView.html

中危

检测到59条敏感明文信息,建议移除。

位置: classes.dex
'10.0.0.172' used in: Lcom/baidu/mtjstatsdk/bh;->()V
'10.0.0.172' used in: Lcom/baidu/mobstat/ba;->()V
'10.0.0.172' used in: Lcom/tencent/mid/util/Util;->getHttpProxy(Landroid/content/Context;)Lorg/apache/http/HttpHost;
'10.0.0.172' used in: Lcom/tencent/android/tpush/stat/a/e;->b(Landroid/content/Context;)Lorg/apache/http/HttpHost;
'10.0.0.200' used in: Lcom/baidu/mtjstatsdk/bh;->()V
'10.0.0.200' used in: Lcom/baidu/mobstat/ba;->()V
'10.0.0.200' used in: Lcom/tencent/mid/a/b;->(Ljava/lang/String; Ljava/util/Map;)V
'10.0.0.200' used in: Lcom/tencent/mid/util/Util;->getHttpProxy(Landroid/content/Context;)Lorg/apache/http/HttpHost;
'10.0.0.200' used in: Lcom/tencent/android/tpush/stat/a/e;->b(Landroid/content/Context;)Lorg/apache/http/HttpHost;
'ctwap@mycdma.cn' used in: Lcom/tencent/mid/a/b;->(Ljava/lang/String; Ljava/util/Map;)V
'http://182.254.116.117/d?dn=99e2d153e4d0527186ebed5ac5608367&id=6&ttl=1' used in: Lcom/tencent/android/tpush/service/b/b;->f(Ljava/lang/String;)Ljava/lang/String;
'http://datax.baidu.com/xs.gif' used in: Lcom/baidu/mobstat/ah;->()V
'http://datax.baidu.com/xs.gif' used in: Lcom/baidu/mtjstatsdk/ba;->()V
'http://dxp.baidu.com/upgrade' used in: Lcom/baidu/mobstat/ah;->()V
'http://dxp.baidu.com/upgrade' used in: Lcom/baidu/mtjstatsdk/ba;->()V
'http://h5.m.taobao.com/trade/paySuccess.html?bizOrderId=$OrderId$&' used in: Lcom/alipay/sdk/data/a;->b()Lcom/alipay/sdk/data/a;
'http://h5.m.taobao.com/trade/paySuccess.html?bizOrderId=$OrderId$&' used in: Lcom/alipay/sdk/data/b;->run()V
'http://h5.m.taobao.com/trade/paySuccess.html?bizOrderId=$OrderId$&' used in: Lcom/alipay/sdk/data/a;->b(Ljava/lang/String;)V
'http://h5.m.taobao.com/trade/paySuccess.html?bizOrderId=$OrderId$&' used in: Lcom/alipay/sdk/data/a;->a(Ljava/lang/String;)V
'http://h5.m.taobao.com/trade/paySuccess.html?bizOrderId=$OrderId$&' used in: Lcom/alipay/sdk/data/a;->d()V
'http://h5.m.taobao.com/trade/paySuccess.html?bizOrderId=$OrderId$&' used in: Lcom/alipay/sdk/data/a;->a(Lcom/alipay/sdk/data/a; Ljava/lang/String;)V
'http://h5.m.taobao.com/trade/paySuccess.html?bizOrderId=$OrderId$&' used in: Lcom/alipay/sdk/data/a;->()V
'http://hmma.baidu.com/app.gif' used in: Lcom/baidu/mobstat/Config;->()V
'http://m.alipay.com/?action=h5quit' used in: Lcom/alipay/sdk/util/l;->a(Landroid/webkit/WebView; Ljava/lang/String; Landroid/app/Activity;)Z
'http://mcgw.alipay.com/sdklog.do' used in: Lcom/alipay/sdk/packet/impl/c;->a(Landroid/content/Context; Ljava/lang/String;)Lcom/alipay/sdk/packet/b;
'http://mobilegw-1-64.test.alipay.net/mgw.htm' used in: Lcom/alipay/apmobilesecuritysdk/b/a;->c()Ljava/lang/String;
'http://mobilegw-1-64.test.alipay.net/mgw.htm' used in: Lcom/alipay/apmobilesecuritysdk/b/a;->c()Ljava/lang/String;
'http://mobilegw.aaa.alipay.net/mgw.htm' used in: Lcom/alipay/apmobilesecuritysdk/b/a;->c()Ljava/lang/String;
'http://mobilegw.aaa.alipay.net/mgw.htm' used in: Lcom/alipay/apmobilesecuritysdk/b/a;->c()Ljava/lang/String;
'http://mobilegw.alipay.com/mgw.htm' used in: Lcom/alipay/sdk/cons/a;->()V
'http://mobilegw.stable.alipay.net/mgw.htm' used in: Lcom/alipay/apmobilesecuritysdk/b/a;->c()Ljava/lang/String;
'http://mobilegw.stable.alipay.net/mgw.htm' used in: Lcom/alipay/apmobilesecuritysdk/b/a;->c()Ljava/lang/String;
'http://openrcv.baidu.com/1010/bplus.gif' used in: Lcom/baidu/mobstat/z;->()V
'http://openrcv.baidu.com/1010/bplus.gif' used in: Lcom/baidu/mtjstatsdk/al;->()V
'http://pingma.qq.com:80/mstat/report' used in: Lcom/tencent/android/tpush/stat/c;->()V
'http://www.baidu.com' used in: Lcom/tencent/android/tpush/service/channel/i;->run()V
'http://www.qq.com' used in: Lcom/tencent/android/tpush/service/channel/i;->run()V
'http://xmlpull.org/v1/doc/features.html#indent-output' used in: Lcom/ta/utdid2/b/a/a;->setFeature(Ljava/lang/String; Z)V
'http://xmlpull.org/v1/doc/features.html#indent-output' used in: Lcom/ta/utdid2/b/a/e;->a(Ljava/util/Map; Ljava/io/OutputStream;)V
'https://%s/api/v2/android/%s/%s' used in: Lcom/fm/openinstall/a/f;->a(Ljava/lang/String;)Ljava/lang/String;
'https://api.mch.weixin.qq.com/pay/unifiedorder' used in: Lcom/tiantian/chessgame/wxpay/WxImplement$GetPrepayIdTask;->doInBackground([Ljava/lang/Void;)Ljava/util/Map;
'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' used in: Lcom/tiantian/chessgame/wxapi/WXEntryActivity;->()V
'https://api.weixin.qq.com/sns/userinfo?access_token=' used in: Lcom/tiantian/chessgame/wxapi/WXEntryActivity;->()V
'https://datax.baidu.com/xs.gif' used in: Lcom/baidu/mobstat/ah;->()V
'https://datax.baidu.com/xs.gif' used in: Lcom/baidu/mtjstatsdk/ba;->()V
'https://dxp.baidu.com/upgrade' used in: Lcom/baidu/mobstat/ah;->()V
'https://dxp.baidu.com/upgrade' used in: Lcom/baidu/mtjstatsdk/ba;->()V
'https://hmma.baidu.com/app.gif' used in: Lcom/baidu/mobstat/Config;->()V
'https://hmma.baidu.com/app.gif' used in: Lcom/baidu/mtjstatsdk/LogSender;->sendLogDataByHttp(Landroid/content/Context; Ljava/lang/String;)Z
'https://hmma.baidu.com/auto.gif' used in: Lcom/baidu/mobstat/LogSender;->a(Landroid/content/Context; Ljava/lang/String; Z)Z
'https://mclient.alipay.com/home/exterfaceAssign.htm?' used in: Lcom/alipay/sdk/app/PayTask;->pay(Ljava/lang/String; Z)Ljava/lang/String;
'https://mobilegw.alipay.com/mgw.htm' used in: Lcom/alipay/apmobilesecuritysdk/b/a;->c()Ljava/lang/String;
'https://mobilegw.alipaydev.com/mgw.htm' used in: Lcom/alipay/sdk/util/k;->a(Landroid/content/Context;)Ljava/lang/String;
'https://openrcv.baidu.com/1010/bplus.gif' used in: Lcom/baidu/mobstat/z;->()V
'https://openrcv.baidu.com/1010/bplus.gif' used in: Lcom/baidu/mtjstatsdk/al;->()V
'https://wappaygw.alipay.com/home/exterfaceAssign.htm?' used in: Lcom/alipay/sdk/app/PayTask;->pay(Ljava/lang/String; Z)Ljava/lang/String;
'javascript:%s' used in: Lcom/onevcat/uniwebview/UniWebViewDialog;->addJs(Ljava/lang/String;)V
'javascript:android.onData(%s)' used in: Lcom/onevcat/uniwebview/UniWebViewDialog;->loadJS(Ljava/lang/String;)V
'jiujiuyou888@aliyun.com' used in: Lcom/tiantian/chessgame/Alipay/AlipayImplement;->(Lcom/tiantian/chessgame/PayActivity;)V

中危

检测到7处setSavePassword密码明文存储漏洞。

位置: classes.dex
com.onevcat.uniwebview.UniWebView;
cn.jpush.android.ui.PopWinActivity;
com.onevcat.uniwebview.VideoEnabledWebView;
com.onevcat.uniwebview.UniWebViewDialog;
com.onevcat.uniwebview.UniWebViewDialog$4;
com.baidu.mobstat.StatService;
com.onevcat.uniwebview.VideoEnabledWebChromeClient;

webview的保存密码功能默认设置为true。Webview会明文保存网站上的密码到本地私有文件”databases/webview.db”中。对于可以被root的系统环境或者配合其他漏洞(如webview的同源绕过漏洞),攻击者可以获取到用户密码。
建议:显示设置webView.getSetting().setSavePassword(false)。

参考案例:
www.wooyun.org/bugs/wooyun-2010-021420
www.wooyun.org/bugs/wooyun-2013-020246

参考资料:
http://wolfeye.baidu.com/blog/
www.claudxiao.net/2013/03/android-webview-cache/

低危

检测到3个WebView系统隐藏接口未移除。

位置: classes.dex
cn.jpush.android.ui.PopWinActivity;->onCreate(Landroid.os.Bundle;)V
cn.jpush.android.ui.FullScreenView;->initModule(Landroid.content.Context; Lcn.jpush.android.data.c;)V
com.baidu.mobstat.StatService;->a(Landroid.content.Context; Landroid.webkit.WebView; Landroid.webkit.WebViewClient; Landroid.webkit.WebChromeClient; Z)V

android webview组件包含3个隐藏的系统接口:searchBoxJavaBridge_,accessibilityTraversal以及accessibility,恶意程序可以利用它们实现远程代码执行。
如果使用了WebView,那么使用WebView.removeJavascriptInterface(String name) API,显示的移除searchBoxJavaBridge_、accessibility、accessibilityTraversal这三个接口。

参考资料:
http://wolfeye.baidu.com/blog/android-webview/
http://blog.csdn.net/u013107656/article/details/51729398
http://wolfeye.baidu.com/blog/android-webview-cve-2014-7224/

低危

检测到4处使用了DES弱加密算法。

位置: classes.dex
'DES/ECB/NoPadding' used in: Lorg/apache/http/impl/auth/NTLMEngineImpl;->lmResponse([B [B)[B
'DES/ECB/NoPadding' used in: Lorg/apache/http/impl/auth/NTLMEngineImpl$CipherGen;->getLanManagerSessionKey()[B
'DES/ECB/NoPadding' used in: Lorg/apache/http/impl/auth/NTLMEngineImpl;->lmHash(Ljava/lang/String;)[B
'DES/ECB/PKCS5Padding' used in: Lcom/tencent/android/tpush/service/b/b;->a(Ljava/lang/String;)Ljava/lang/String;

使用弱加密算法会大大增加黑客攻击的概率,黑客可能会破解隐私数据、猜解密钥、中间人攻击等,造成隐私信息的泄漏,甚至造成财产损失。建议使用AES加密算法。

参考资料:
http://drops.wooyun.org/tips/15870
https://developer.android.com/training/articles/keystore.html
http://wolfeye.baidu.com/blog/weak-encryption/
http://www.freebuf.com/articles/terminal/99868.html

低危

检测5处Intent Scheme URI漏洞。

位置: classes.dex
Lcom/tencent/android/tpush/XGPushActivity;->openIntent(Landroid/content/Intent;)V
Lcom/tencent/android/tpush/XGPushProvider;->insert(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;
Lcom/tencent/android/tpush/d/a;->c(Landroid/content/Context;)Ljava/util/ArrayList;
Lcom/tencent/android/tpush/rpc/h;->a(Ljava/lang/String; Lcom/tencent/android/tpush/rpc/d;)V
Lcom/tencent/android/tpush/service/channel/b;->a(Z Ljava/lang/String;)I


Intent Scheme URI是一种特殊的URL格式,用来通过Web页面启动已安装应用的Activity组件,大多数主流浏览器都支持此功能。如果在app中,没有检查获取到的load_url的值,攻击者可以构造钓鱼网站,诱导用户点击加载,就可以盗取用户信息。所以,对Intent URI的处理不当时,就会导致基于Intent的攻击。建议:
如果使用了Intent.parseUri函数,获取的intent必须严格过滤,intent至少包含addCategory(“android.intent.category.BROWSABLE”),setComponent(null),setSelector(null)3个策略。

参考资料:
http://wolfeye.baidu.com/blog/intent-scheme-url/
http://drops.wooyun.org/papers/2893
http://drops.wooyun.org/mobile/15202

低危

检测到8处AES/DES弱加密风险。

位置: classes.dex
Lcom/baidu/mobstat/ay$b;->a(I [B)[B
com.alipay.sdk.encrypt.b;->a(I Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
Lcom/baidu/mobstat/ay$b;->b(I [B)[B
Lorg/apache/http/impl/auth/NTLMEngineImpl$CipherGen;->getLanManagerSessionKey()[B
Lcom/tencent/android/tpush/service/b/b;->a(Ljava/lang/String;)Ljava/lang/String;
Lorg/apache/http/impl/auth/NTLMEngineImpl;->lmResponse([B [B)[B
Lcom/baidu/mtjstatsdk/bg;->a(I [B)[B
Lorg/apache/http/impl/auth/NTLMEngineImpl;->lmHash(Ljava/lang/String;)[B

使用AES/DES/DESede加密算法时,如果使用ECB模式,容易受到攻击风险,造成信息泄露。建议在使用AES/DES/DESede加密算法时,应显示指定使用CBC或CFB加密模式

参考资料:
http://blog.csdn.net/u013107656/article/details/51997957
https://developer.android.com/reference/javax/crypto/Cipher.html
http://drops.wooyun.org/tips/15870
https://developer.android.com/training/articles/keystore.html
http://wolfeye.baidu.com/blog/weak-encryption/
http://www.freebuf.com/articles/terminal/99868.html

低危

非debug包,需要通过打包平台proguard脚本,移除大部分系统输出代码。
经扫描该包仍存在大量系统输出代码,共发现7处系统输出代码.(此处扫描的系统输出代码,是指调用System.out.print*输出的,本应在打包平台移除的系统输出代码.)
各个bundle系统输出代码详情如下:

位置: classes.dex
com.tencent.android.tpush.service.a.a;
com.qq.taf.jce.HexUtil;
cn.jiguang.api.utils.ProtocolUtil;
com.baidu.mobstat.bh;
com.qq.taf.jce.JceDisplayer;
com.tencent.android.tpush.service.channel.o;
com.qq.taf.jce.JceOutputStream;

低危

检测到1处地方在自定义实现的WebViewClient类在onReceivedSslError调用proceed()方法。

位置: classes.dex
com.alipay.sdk.auth.AuthActivity$b;->onReceivedSslError(Landroid.webkit.WebView; Landroid.webkit.SslErrorHandler; Landroid.net.http.SslError;)V

Android WebView组件加载网页发生证书认证错误时,会调用WebViewClient类的onReceivedSslError方法,如果该方法实现调用了handler.proceed()来忽略该证书错误,则会受到中间人攻击的威胁,可能导致隐私泄露。建议:
当发生证书认证错误时,采用默认的处理方法handler.cancel(),停止加载问题页面当发生证书认证错误时,采用默认的处理方法handler.cancel(),停止加载问题页面。

参考案例:
http://www.wooyun.org/bugs/wooyun-2010-0109266

参考资料:
https://jaq.alibaba.com/blog.htm?id=60
http://wolfeye.baidu.com/blog/webview-ignore-ssl-error/

警告

检测到5处addFlags使用Intent.FLAG_ACTIVITY_NEW_TASK。

位置: classes.dex
com.tencent.android.tpush.b.b;->a
com.tencent.android.tpush.XGPushActivity;->openIntent
cn.jpush.android.c.e;->a
com.tiantian.chessgame.MainActivity;->openWX
com.tencent.mm.sdk.a.a;->a

APP创建Intent传递数据到其他Activity,如果创建的Activity不是在同一个Task中打开,就很可能被其他的Activity劫持读取到Intent内容,跨Task的Activity通过Intent传递敏感信息是不安全的。建议:
尽量避免使用包含FLAG_ACTIVITY_NEW_TASK标志的Intent来传递敏感信息。

参考资料:
http://wolfeye.baidu.com/blog/intent-data-leak

警告

检测到6个导出的组件接收其他app的消息,这些组件会被其他app引用并导致dos攻击。

activity com.tiantian.chessgame.PayActivity
activity com.tiantian.chessgame.wxapi.WXPayEntryActivity
activity com.tiantian.chessgame.wxapi.WXEntryActivity
service com.tencent.android.tpush.service.XGPushServiceV3
service com.tencent.android.tpush.rpc.XGRemoteService
receiver com.tencent.android.tpush.XGPushReceiver

建议:
(1)最小化组件暴露。对不会参与跨应用调用的组件建议显示添加android:exported="false"属性。
(2)设置组件访问权限。对provider设置权限,同时将权限的protectionLevel设置为"signature"或"signatureOrSystem"。
(3)组件传输数据验证。对组件之间,特别是跨应用的组件之间的数据传入与返回做验证和增加异常处理,防止恶意调试数据传入,更要防止敏感数据返回。

参考案例:
http://www.wooyun.org/bugs/wooyun-2010-0169746
http://www.wooyun.org/bugs/wooyun-2010-0104965

参考资料:
http://jaq.alibaba.com/blog.htm?spm=0.0.0.0.Wz4OeC&id=55
《Android安全技术解密与防范》

警告

检测到1个导出的隐式Service组件。
service com.tencent.android.tpush.rpc.XGRemoteService

建议:为了确保应用的安全性,启动Service时,请始终使用显式Intent,且不要为服务声明Intent过滤器。使用隐式Intent启动服务存在安全隐患,因为您无法确定哪些服务将响应Intent,且用户无法看到哪些服务已启动。从Android 5.0(API 级别 21)开始,如果使用隐式 Intent 调用 bindService(),系统会抛出异常。

参考资料:
https://developer.android.com/guide/components/intents-filters.html#Types

警告

检测1处組件設置了android.intent.category.BROWSABLE属性。
com.tiantian.chessgame.MainActivity


在AndroidManifest文件中定义了android.intent.category.BROWSABLE属性的组件,可以通过浏览器唤起,这会导致远程命令执行漏洞攻击。建议:
(1)APP中任何接收外部输入数据的地方都是潜在的攻击点,过滤检查来自网页的参数。
(2)不要通过网页传输敏感信息,有的网站为了引导已经登录的用户到APP上使用,会使用脚本动态的生成URL Scheme的参数,其中包括了用户名、密码或者登录态token等敏感信息,让用户打开APP直接就登录了。恶意应用也可以注册相同的URL Sechme来截取这些敏感信息。Android系统会让用户选择使用哪个应用打开链接,但是如果用户不注意,就会使用恶意应用打开,导致敏感信息泄露或者其他风险。

參考案例:
http://www.wooyun.org/bugs/wooyun-2014-073875
http://www.wooyun.org/bugs/wooyun-2014-067798

参考资料:
http://wolfeye.baidu.com/blog/intent-scheme-url/
http://www.jssec.org/dl/android_securecoding_en.pdf
http://drops.wooyun.org/mobile/15202
http://blog.csdn.net/l173864930/article/details/36951805
http://drops.wooyun.org/papers/2893

警告

检测到6潜在的XSS漏洞。

位置: classes.dex
cn.jpush.android.d.a;->a(Landroid.webkit.WebSettings;)V
com.alipay.sdk.auth.AuthActivity;->onCreate(Landroid.os.Bundle;)V
com.alipay.sdk.util.l;->a(Landroid.app.Activity; Ljava.lang.String; Ljava.lang.String;)Landroid.webkit.WebView;
com.baidu.mobstat.StatService;->a(Landroid.content.Context; Landroid.webkit.WebView; Landroid.webkit.WebViewClient; Landroid.webkit.WebChromeClient; Z)V
com.onevcat.uniwebview.VideoEnabledWebView;->setWebChromeClient(Landroid.webkit.WebChromeClient;)V
com.onevcat.uniwebview.UniWebView;->(Landroid.content.Context;)V

允许WebView执行JavaScript(setJavaScriptEnabled),有可能导致XSS攻击。建议尽量避免使用。
(1)API等于高高于17的Android系统。出于安全考虑,为了防止Java层的函数被随意调用,Google在4.2版本之后,规定允许被调用的函数必须以@JavascriptInterface进行注解。
(2)API等于高高于17的Android系统。建议不要使用addJavascriptInterface接口,以免带来不必要的安全隐患,如果一定要使用该接口,建议使用证书校验。
u(3)使用removeJavascriptInterface移除Android系统内部的默认内置接口:searchBoxJavaBridge_、accessibility、accessibilityTraversal。

参考案例:
www.wooyun.org/bugs/wooyun-2015-0140708
www.wooyun.org/bugs/wooyun-2016-0188252

参考资料:
http://jaq.alibaba.com/blog.htm?id=48
http://blog.nsfocus.net/android-webview-remote-code-execution-vulnerability-analysis

警告

检测到20处IvParameterSpec的使用。

位置: classes.dex
cn.jiguang.c.f.a.a;->a(Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
cn.jiguang.c.f.a.a;->b(Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
com.alipay.b.a.a.a.a.c;->a(Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
com.alipay.b.a.a.a.a.c;->a([B [B)[B
com.alipay.b.a.a.a.a.c;->b(Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
com.alipay.b.a.a.a.a.c;->b(Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
com.alipay.sdk.encrypt.e;->a(Ljava.lang.String; [B)[B
com.alipay.sdk.encrypt.e;->b(Ljava.lang.String; [B)[B
com.baidu.mobstat.a;->a(Ljava.lang.String; Ljava.lang.String; [B)[B
com.baidu.mobstat.a;->b(Ljava.lang.String; Ljava.lang.String; [B)[B
com.baidu.mobstat.ay$a;->a([B [B [B)[B
com.baidu.mtjstatsdk.a;->a(Ljava.lang.String; Ljava.lang.String; [B)[B
com.baidu.mtjstatsdk.a;->b(Ljava.lang.String; Ljava.lang.String; [B)[B
com.baidu.mtjstatsdk.bf;->a([B [B [B)[B
com.ta.utdid2.a.a.a;->a([B [B)[B
com.ta.utdid2.a.a.a;->b([B [B)[B
com.tencent.android.tpush.service.channel.security.TpnsSecurity;->java_decryptByAES([B J)[B
com.tencent.android.tpush.service.channel.security.TpnsSecurity;->java_encryptByAES([B J)[B
com.tencent.mid.util.a;->d()Ljavax.crypto.spec.IvParameterSpec;
com.tencent.mid.util.a;->a(Ljava.lang.String; Ljava.lang.String;)V

使用IVParameterSpec函数,如果使用了固定的初始化向量,那么密码文本可预测性高得多,容易受到字典攻击等。建议禁止使用常量初始化矢量构造IVParameterSpec,使用聚安全提供的安全组件。

参考资料:
http://drops.wooyun.org/tips/15870
https://developer.android.com/training/articles/keystore.html
http://wolfeye.baidu.com/blog/weak-encryption/
http://www.freebuf.com/articles/terminal/99868.html

警告

检测到2处socket通信。

位置: classes.dex
Lcom.tencent.android.tpush.service.XGWatchdog;->getWatchdogPort
Lcn.jiguang.c.d.c;->a

Android应用通常使用PF_UNIX、PF_INET、PF_NETLINK等不同domain的socket来进行本地IPC或者远程网络通信,这些暴露的socket代表了潜在的本地或远程攻击面,历史上也出现过不少利用socket进行拒绝服务、root提权或者远程命令执行的案例特别是PF_INET类型的网络socket,可以通过网络与Android应用通信,其原本用于linux环境下开放网络服务,由于缺乏对网络调用者身份或者本地调用者id、permission等细粒度的安全检查机制,在实现不当的情况下,可以突破Android的沙箱限制,以被攻击应用的权限执行命令,通常出现比较严重的漏洞

参考案例:
http://www.wooyun.org/bugs/wooyun-2015-0148406
http://www.wooyun.org/bugs/wooyun-2015-0145365

参考资料:
http://wolfeye.baidu.com/blog/open-listen-port
http://blog.csdn.net/jltxgcy/article/details/50686858
https://www.bigniu.com/article/view/10
http://drops.wooyun.org/mobile/6973

警告

检测到 6处url没有使用安全的https链接。

位置: classes.dex
http://m.alipay.com/
http://mcgw.alipay.com/
http://mobilegw-1-64.test.alipay.net/
http://mobilegw.aaa.alipay.net/
http://mobilegw.alipay.com/
http://mobilegw.stable.alipay.net/

参考资料:
https://jaq.alibaba.com/blog.htm?id=60
https://developer.android.com/training/articles/security-ssl.html

警告

检测到28处使用了加解密算法。密钥处理不当可能会导致信息泄露。

位置: classes.dex
cn.jiguang.c.f.a.a;->a([B I)[B
com.baidu.mtjstatsdk.a;->b(Ljava.lang.String; Ljava.lang.String; [B)[B
cn.jiguang.c.f.a.a;->a(Ljava.lang.String; [B)[B
com.tencent.mid.util.Util;->getHMAC(Ljava.lang.String; Ljava.lang.String;)[B
com.ta.utdid2.device.c;->b([B)Ljava.lang.String;
com.ta.utdid2.a.a.a;->b([B [B)[B
com.baidu.mobstat.ay$a;->a([B [B [B)[B
com.alipay.sdk.encrypt.b;->a(I Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
com.baidu.mobstat.a;->a(Ljava.lang.String; Ljava.lang.String; [B)[B
com.baidu.mtjstatsdk.a;->a(Ljava.lang.String; Ljava.lang.String; [B)[B
com.tencent.android.tpush.service.channel.security.TpnsSecurity;->java_decryptByAES([B J)[B
com.ta.utdid2.a.a.a;->a([B [B)[B
com.alipay.b.a.a.a.a.c;->a(Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
com.alipay.sdk.encrypt.e;->b(Ljava.lang.String; [B)[B
com.alipay.sdk.encrypt.e;->a(Ljava.lang.String; [B)[B
cn.jiguang.c.f.a.a;->a(Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
com.tencent.android.tpush.service.b.b;->a(Ljava.lang.String;)Ljava.lang.String;
com.baidu.mtjstatsdk.bg;->a(I [B)[B
cn.jiguang.c.f.a.a;->b(Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
com.alipay.b.a.a.a.a.c;->b(Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
com.baidu.mobstat.a;->b(Ljava.lang.String; Ljava.lang.String; [B)[B
com.baidu.mobstat.ay$b;->a(I [B)[B
com.baidu.mtjstatsdk.bf;->a([B [B [B)[B
com.tencent.mid.util.a;->a(Ljava.lang.String; Ljava.lang.String;)V
com.tencent.android.tpush.service.channel.security.TpnsSecurity;->java_encryptByAES([B J)[B
com.baidu.mobstat.ay$b;->b(I [B)[B
com.tencent.mid.util.a;->a()Ljavax.crypto.SecretKey;
com.alipay.b.a.a.a.a.c;->a([B [B)[B

参考案例:
http://www.wooyun.org/bugs/wooyun-2010-0105766
http://www.wooyun.org/bugs/wooyun-2015-0162907
http://www.wooyun.org/bugs/wooyun-2010-0187287

参考资料:
http://drops.wooyun.org/tips/15870
https://developer.android.com/training/articles/keystore.html


动态扫描发现风险点

风险等级 风险名称

服务端分析

风险等级 风险名称

警告

检测到?处XSS漏洞。
开发中...

警告

检测到?处XSS跨站漏洞。
开发中...

应用证书