漏洞分析

0

高危漏洞

5

中危漏洞

3

低危漏洞

5

警告

文件名 apdx1.0.8.pc6.apk
上传者 donny
文件大小 7.5710105895996MB
MD5 a044e72d9263a5386cce48d8dc56e7e7
包名 com.open.open2u
Main Activity com.open.open2u.MainActivity
Min SDK 14
Target SDK 22

权限列表

# 名称 说明 提示
0 android.permission.ACCESS_COARSE_LOCATION 访问大概的位置源(例如蜂窝网络数据库)以确定手机的大概位置(如果可以)。恶意应用程序可借此确定您所处的大概位置。 注意
1 android.permission.ACCESS_FINE_LOCATION 访问精准的位置源,例如手机上的全球定位系统(如果有)。恶意应用程序可能会借此确定您所处的位置,并可能消耗额外的电池电量。 注意
2 android.permission.READ_PHONE_STATE 允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。 注意
3 android.permission.SYSTEM_ALERT_WINDOW 允许应用程序显示系统警报窗口。恶意应用程序可借此掌控整个手机屏幕。 注意
4 android.permission.WRITE_SETTINGS 允许应用程序修改系统设置方面的数据。恶意应用程序可借此破坏您的系统配置。 注意
5 android.permission.ACCESS_NETWORK_STATE 允许应用程序查看所有网络的状态。 提示
6 android.permission.ACCESS_WIFI_STATE 允许应用程序查看有关WLAN状态的信息。 提示
7 android.permission.INTERNET 允许程序访问网络. 提示
8 android.permission.MOUNT_UNMOUNT_FILESYSTEMS 允许应用程序装载和卸载可移动存储器的文件系统。 提示
9 android.permission.VIBRATE 允许应用程序控制振动器。 提示
10 android.permission.WAKE_LOCK 允许应用程序防止手机进入休眠状态。 提示
11 android.permission.WRITE_EXTERNAL_STORAGE 允许应用程序写入SD卡。 提示

四大组件

组件名称

com.open.open2u.MainActivity
cn.jpush.android.ui.PushActivity

cn.jpush.android.service.DownloadService
cn.jpush.android.service.PushService
com.open.downloader.service.DownloadService

cn.jpush.android.service.PushReceiver
cn.jpush.phonegap.MyReceiver
cn.jpush.android.service.AlarmReceiver

第三方库

# 库名 介绍
0 com.google.protobuf Protocol Buffers - Google's data interchange format https://developers.google.com/protocol-buffers/
1 org.apache.cordova Mobile apps with HTML, CSS & JSTarget multiple platforms with one code base
2 com.google.gson A Java serialization library that can convert Java Objects into JSON and back.
3 cn.jpush.android.api 极光推送,使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户保持互动,从而有效地提高留存率,提升用户体验。平台提供整合了Android推送、iOS推送的统一推送服务。

静态扫描发现风险点

风险等级 风险名称

中危

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

中危

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

位置: classes.dex
org.apache.cordova.filetransfer.FileTransfer$3;

当移动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

中危

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

位置: classes.dex
cn.jpush.phonegap.JPushPlugin;->onPause(Z)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.webview.bridge.d;->a(Ljava/lang/reflect/Method;)Ljava/lang/String;==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.util.j;->w(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.phonegap.MyReceiver;->getNotificationExtras(Landroid/content/Intent;)Ljava/util/Map;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.phonegap.plugins.updateapp.UpdateApp$downloadApkThread;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.phonegap.MyReceiver;->onReceive(Landroid/content/Context; Landroid/content/Intent;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.util.j;->d(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cordova.plugins.Download;->pause(Ljava/lang/String; Lorg/json/JSONObject; Lorg/json/JSONArray; Lorg/apache/cordova/CallbackContext;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cordova.plugins.Download;->abort(Ljava/lang/String; Lorg/json/JSONObject; Lorg/json/JSONArray; Lorg/apache/cordova/CallbackContext;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cordova.plugins.Download;->progress(Ljava/lang/String; Lorg/json/JSONObject; Lorg/json/JSONArray; Lorg/apache/cordova/CallbackContext;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
net.yoik.cordova.plugins.screenorientation.YoikScreenOrientation;->execute(Ljava/lang/String; Lorg/json/JSONArray; Lorg/apache/cordova/CallbackContext;)Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.phonegap.plugins.updateapp.UpdateApp;->getCurrentVerCode()I==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cordova.plugins.Download;->start(Ljava/lang/String; Ljava/lang/String; Lorg/json/JSONObject; Lorg/json/JSONArray; Lorg/apache/cordova/CallbackContext;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.phonegap.JPushPlugin;->transmitOpen(Ljava/lang/String; Ljava/util/Map;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.util.JLogger;->a(I Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.phonegap.MyReceiver;->handlingNotificationOpen(Landroid/content/Context; Landroid/content/Intent;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.util.j;->v(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
net.yoik.cordova.plugins.screenorientation.YoikScreenOrientation;->routeScreenOrientation(Lorg/json/JSONArray; Lorg/apache/cordova/CallbackContext;)Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.util.j;->e(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.webview.bridge.d;->a(Ljava/lang/String; I Ljava/lang/Object;)Ljava/lang/String;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.util.JLogger;->a(I Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.util.j;->i(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.phonegap.MyReceiver;->handlingNotificationReceive(Landroid/content/Context; Landroid/content/Intent;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.util.JLogger;->a(I Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.phonegap.JPushPlugin$1;->run()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.util.JLogger;->a(I Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.webview.bridge.c;->onProgressChanged(Landroid/webkit/WebView; I)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.phonegap.plugins.updateapp.UpdateApp;->getCurrentVerName()Ljava/lang/String;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.phonegap.plugins.updateapp.UpdateApp;->getServerVerInfo()Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.phonegap.JPushPlugin;->onResume(Z)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.util.JLogger;->a(I Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.phonegap.JPushPlugin;->initialize(Lorg/apache/cordova/CordovaInterface; Lorg/apache/cordova/CordovaWebView;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.open.downloader.utils.StorageUtils;->delete(Ljava/io/File;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cordova.plugins.Disk;->getDiskinfo(Lorg/json/JSONObject; Lorg/json/JSONArray; Lorg/apache/cordova/CallbackContext;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.webview.bridge.d;->(Ljava/lang/String; Ljava/lang/Class;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cordova.plugins.OpenKeyboard;->init(Lorg/json/JSONObject; Lorg/json/JSONArray; Lorg/apache/cordova/CallbackContext;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I

中危

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

位置: classes.dex
'data:*' used in: Lorg/apache/cordova/whitelist/WhitelistPlugin$CustomConfigXmlParser;->handleStartTag(Lorg/xmlpull/v1/XmlPullParser;)V
'data:*' used in: Lorg/apache/cordova/whitelist/WhitelistPlugin;->(Lorg/apache/cordova/Whitelist; Lorg/apache/cordova/Whitelist; Lorg/apache/cordova/Whitelist;)V
'file:///*' used in: Lorg/apache/cordova/whitelist/WhitelistPlugin;->(Lorg/apache/cordova/Whitelist; Lorg/apache/cordova/Whitelist; Lorg/apache/cordova/Whitelist;)V
'file:///android_asset/' used in: Lorg/apache/cordova/file/FileUtils;->requestAllPaths()Lorg/json/JSONObject;
'file:///android_asset/' used in: Lorg/apache/cordova/file/AssetFilesystem;->(Landroid/content/res/AssetManager; Lorg/apache/cordova/CordovaResourceApi;)V
'file:///android_asset/' used in: Lorg/apache/cordova/camera/FileHelper;->getInputStreamFromUriString(Ljava/lang/String; Lorg/apache/cordova/CordovaInterface;)Ljava/io/InputStream;
'file:///android_asset/www/' used in: Lorg/apache/cordova/ConfigXmlParser;->setStartUrl(Ljava/lang/String;)V
'file:///android_asset/www/index.html' used in: Lorg/apache/cordova/Config;->getStartUrl()Ljava/lang/String;
'file:///android_asset/www/index.html' used in: Lorg/apache/cordova/ConfigXmlParser;->()V
'http://*/*' used in: Lorg/apache/cordova/whitelist/WhitelistPlugin$CustomConfigXmlParser;->handleStartTag(Lorg/xmlpull/v1/XmlPullParser;)V
'https://*/*' used in: Lorg/apache/cordova/whitelist/WhitelistPlugin$CustomConfigXmlParser;->handleStartTag(Lorg/xmlpull/v1/XmlPullParser;)V
'https://ssl.gstatic.com/accessibility/javascript/android/' used in: Lorg/apache/cordova/PluginManager;->shouldAllowRequest(Ljava/lang/String;)Z

中危

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

位置: classes.dex
cn.jpush.android.ui.FullScreenView;
cn.jpush.android.ui.PopWinActivity;

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.d;)V
org.apache.cordova.inappbrowser.InAppBrowser$5;->run()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/

低危

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

位置: classes.dex
cn.jpush.proto.common.imcommands.k;
cn.jpush.proto.common.utils.b;
cn.jpush.android.util.TestLogger;
cn.jpush.proto.common.imcommands.j;

低危

检测到1处主机名弱校验检测漏洞。

位置: classes.dex
org.apache.cordova.filetransfer.FileTransfer$2;->verify(Ljava.lang.String; Ljavax.net.ssl.SSLSession;)Z

自定义HostnameVerifier类,却不实现其verify方法验证域名直接返回true,直接接受任意域名。建议:
对SSL证书进行强校验,包括签名CA是否合法、证书是否是自签名、主机域名是否匹配、证书是否过期等。

参考资料:
http://drops.wooyun.org/tips/3296
https://www.91ri.org/12534.html

警告

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

位置: classes.dex
cn.jpush.android.service.PushReceiver;->onReceive
cn.jpush.android.util.a;->e

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

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

警告

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

activity cn.jpush.android.ui.PushActivity
receiver cn.jpush.android.service.PushReceiver
receiver cn.jpush.phonegap.MyReceiver

建议:
(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安全技术解密与防范》

警告

检测到2潜在的XSS漏洞。

位置: classes.dex
cn.jpush.android.ui.PopWinActivity;->onCreate(Landroid.os.Bundle;)V
cn.jpush.android.util.a;->a(Landroid.webkit.WebSettings;)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

警告

检测到1处使用空Intent构造PendingIntent。

位置: classes.dex
cn.jpush.android.service.DownloadService;->a(Lcn.jpush.android.data.d; I J J)V

使用pendingIntent时候,如果使用了一个空Intent,会导致恶意用户劫持Intent的内容。禁止使用空intent去构造pendingIntent。建议:
禁止使用空intent去构造pendingIntent。

参考资料:
http://wolfeye.baidu.com/blog/pendingintent-leak-information
http://bbs.mob.com/thread-5249-1-1.html

警告

检测到1处socket通信。

位置: classes.dex
Lcn.jpush.android.helpers.ConnectingHelper;->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


动态扫描发现风险点

风险等级 风险名称

服务端分析

风险等级 风险名称

警告

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

警告

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

应用证书