漏洞分析

0

高危漏洞

5

中危漏洞

1

低危漏洞

6

警告

文件名 app-WeatherPublic-release.apk
上传者 fwt336
文件大小 11.649682044983MB
MD5 0b3ff9d7d10ab081e7bc08c91abe1998
包名 com.leagoo.leagooweather
Main Activity com.leagoo.leagooweather.WeatherActivity
Min SDK 19
Target SDK 27

权限列表

# 名称 说明 提示
0 android.permission.ACCESS_COARSE_LOCATION 访问大概的位置源(例如蜂窝网络数据库)以确定手机的大概位置(如果可以)。恶意应用程序可借此确定您所处的大概位置。 注意
1 android.permission.ACCESS_FINE_LOCATION 访问精准的位置源,例如手机上的全球定位系统(如果有)。恶意应用程序可能会借此确定您所处的位置,并可能消耗额外的电池电量。 注意
2 android.permission.CHANGE_WIFI_MULTICAST_STATE 允许应用程序接收并非直接向您的设备发送的数据包。这样在查找附近提供的服务时很有用。这种操作所耗电量大于非多播模式。 注意
3 android.permission.READ_PHONE_STATE 允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。 注意
4 android.permission.RECEIVE_BOOT_COMPLETED 允许应用程序在系统完成启动后即自行启动。这样会延长手机的启动时间,而且如果应用程序一直运行,会降低手机的整体速度。 注意
5 android.permission.WRITE_SETTINGS 允许应用程序修改系统设置方面的数据。恶意应用程序可借此破坏您的系统配置。 注意
6 android.permission.ACCESS_NETWORK_STATE 允许应用程序查看所有网络的状态。 提示
7 android.permission.ACCESS_WIFI_STATE 允许应用程序查看有关WLAN状态的信息。 提示
8 android.permission.CHANGE_WIFI_STATE 允许应用程序连接到WLAN接入点以及与WLAN接入点断开连接,并对配置的WLAN网络进行更改。 提示
9 android.permission.INTERNET 允许程序访问网络. 提示
10 android.permission.MOUNT_UNMOUNT_FILESYSTEMS 允许应用程序装载和卸载可移动存储器的文件系统。 提示
11 android.permission.READ_LOGS 允许应用程序从系统的各日志文件中读取信息。这样应用程序可以发现您的手机使用情况,但这些信息不应包含任何个人信息或保密信息。 提示
12 android.permission.WRITE_EXTERNAL_STORAGE 允许应用程序写入SD卡。 提示

四大组件

组件名称

com.leagoo.leagooweather.WeatherActivity
com.leagoo.leagooweather.CityManageActivity
com.leagoo.leagooweather.ui.OnePixActivity
com.leagoo.leagooweather.WebDetailActivity

com.leagoo.leagooweather.service.LgUpdateTimeService
com.leagoo.leagooweather.service.LgUpdateWeatherService
com.leagoo.leagooweather.service.LgUpdateWeatherWidgetService
com.baidu.location.f

com.leagoo.leagooweather.service.LgWeatherWidgetProvider
com.leagoo.leagooweather.service.LgWeatherWidgetTwoProvider
com.leagoo.leagooweather.service.AlarmReceiver
com.leagoo.leagooweather.service.NoDieBroadcastReceiver
com.leagoo.leagooweather.service.ListenerNetReceiver

第三方库

# 库名 介绍
0 retrofit2 Type-safe REST client for Android and Java by Square, Inc.
1 com.readystatesoftware.systembartint Apply background tinting to the Android system UI when using KitKat translucent modes
2 okhttp3 An HTTP+SPDY client for Android and Java applications.
3 com.baidu.lbsapi 百度Android全景SDK是为Android移动平台提供的一套全景图服务接口,面向广大开发者提供全景图的检索、显示和交互功能,从而更加清晰方便地展示目标位置的周边环境。
4 com.google.gson A Java serialization library that can convert Java Objects into JSON and back.
5 android.support.multidex DEPRECATED

静态扫描发现风险点

风险等级 风险名称

中危

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

中危

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

位置: classes.dex
com.baidu.location.BDNotifyListener;->onNotify(Lcom/baidu/location/BDLocation; F)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.b;->onServiceConnected(Landroid/content/ComponentName; Landroid/os/IBinder;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.leagoolibs.utils.UtilTimeInterval;->getTimeInterval(Landroid/content/Context; I)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.leagoolibs.utils.UtilPackageManager;->getAllPackage(Landroid/content/Context;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.leagoolibs.utils.XLog;->v(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.lbsapi.auth.a;->b(Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.leagoolibs.utils.XLog;->d(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.android.bbalbs.common.util.b;->b()Lcom/baidu/android/bbalbs/common/util/b$b;==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.leagoolibs.utils.UtilFile;->copy(Ljava/lang/String; Ljava/lang/String; Landroid/os/Handler;)Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.g.g;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.indoor.g$h;->a(Z)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.android.bbalbs.common.util.b;->b()Lcom/baidu/android/bbalbs/common/util/b$b;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.lbsapi.auth.a;->c(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.g.f;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.lbsapi.auth.a;->a(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.leagoolibs.utils.XLog;->w(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.e.e;->c()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.f.a;->onCreate(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.g.h;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.f.a;->onTaskRemoved(Landroid/content/Intent;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.a.j;->onAuthResult(I Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.f.a;->a(Landroid/os/Message;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.leagoolibs.utils.XLog;->i(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.LocationClient;->enableLocInForeground(I Landroid/app/Notification;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.g.h;->run()V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.f.a;->onDestroy()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.leagoolibs.utils.XLog;->e(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.baidu.location.f.a;->c()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I

中危

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

位置: classes.dex
com.baidu.location.a.k;->a(Landroid.webkit.WebView;)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

中危

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

位置: classes.dex
'10.0.0.172' used in: Lcom/baidu/location/g/e;->a(Landroid/content/Context; Landroid/net/NetworkInfo;)I
'10.0.0.172' used in: Lcom/baidu/lbsapi/auth/g;->b()Ljavax/net/ssl/HttpsURLConnection;
'10.0.0.200' used in: Lcom/baidu/location/g/e;->a(Landroid/content/Context; Landroid/net/NetworkInfo;)I
'10.0.0.200' used in: Lcom/baidu/lbsapi/auth/g;->b()Ljavax/net/ssl/HttpsURLConnection;
'http://%s/%s' used in: Lcom/baidu/location/d/d$c;->a(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V
'http://apidev.accuweather.com/' used in: Lcom/leagoolibs/net/RetrofitUtil;->getBaseUrl(I)Ljava/lang/String;
'http://data.me2tek.com:39090/leagooapi/' used in: Lcom/leagoolibs/net/RetrofitUtil;->getBaseUrl(I)Ljava/lang/String;
'http://dw4.cn.uptodown.com/dl/1436238969/ac3ae7666bd538552a0b9fd8c1e9966961a3d957/google-play-5-6-8-multi-android.apk' used in: Lcom/leagoolibs/utils/UtilAppInstall;->downloadApk(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String;)V
'http://itsdata.map.baidu.com/long-conn-gps/sdk.php' used in: Lcom/baidu/location/a/f;->run()V
'http://loc.map.baidu.com/cc.php' used in: Lcom/baidu/location/a/d$a;->a()V
'http://loc.map.baidu.com/cfgs/indoorloc/indoorroadnet' used in: Lcom/baidu/location/indoor/mapversion/b/a$b;->run()V
'http://loc.map.baidu.com/gpsz' used in: Lcom/baidu/location/b/a$a;->a()V
'http://loc.map.baidu.com/indoorlocbuildinginfo.php' used in: Lcom/baidu/location/indoor/a;->(Landroid/content/Context;)V
'http://loc.map.baidu.com/indoorlocbuildinginfo.php' used in: Lcom/baidu/location/indoor/a;->a()V
'http://localhost/' used in: Lretrofit2/Response;->success(Ljava/lang/Object; Lokhttp3/Headers;)Lretrofit2/Response;
'http://localhost/' used in: Lretrofit2/Response;->success(Ljava/lang/Object;)Lretrofit2/Response;
'http://localhost/' used in: Lretrofit2/Response;->error(I Lokhttp3/ResponseBody;)Lretrofit2/Response;
'http://schemas.android.com/apk/res/android' used in: Landroid/support/v4/content/res/TypedArrayUtils;->hasAttribute(Lorg/xmlpull/v1/XmlPullParser; Ljava/lang/String;)Z
'https://api.map.baidu.com/sdkcs/verify' used in: Lcom/baidu/lbsapi/auth/LBSAuthManager;->a(Z Ljava/lang/String; Ljava/util/Hashtable; Ljava/lang/String;)V
'https://api.map.baidu.com/sdkcs/verify' used in: Lcom/baidu/lbsapi/auth/LBSAuthManager;->a(Z Ljava/lang/String; Ljava/util/Hashtable; [Ljava/lang/String; Ljava/lang/String;)V
'https://daup.map.baidu.com/cltr/rcvr' used in: Lcom/baidu/location/g/j;->e()Ljava/lang/String;
'https://ofloc.map.baidu.com/offline_loc' used in: Lcom/baidu/location/d/d$c;->g()V
'https://ofloc.map.baidu.com/offline_loc' used in: Lcom/baidu/location/d/g$a;->b()V
'https://ofloc.map.baidu.com/offline_loc' used in: Lcom/baidu/location/d/k$a;->b()V

中危

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

位置: classes.dex
com.leagoo.leagooweather.WebDetailActivity;
com.baidu.location.a.k;
com.leagoolibs.utils.UtilDevice$1;

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/

低危

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

位置: classes.dex
com.leagoolibs.utils.UtilFile;
com.baidu.location.indoor.mapversion.IndoorJni;
com.leagoo.leagooweather.animation.rain.Rain;
com.leagoolibs.utils.XLog$2;

警告

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

位置: classes.dex
com.leagoolibs.utils.UtilDevice;->openBrowserUrl
com.leagoo.leagooweather.service.LgUpdateWeatherService;->sendFailBroadcast
com.leagoo.leagooweather.ui.DetailsFragment;->onClick
com.leagoolibs.utils.UtilAppInstall;->openCNMarket
com.leagoo.leagooweather.adapter.HourAdapter$1;->onClick
com.leagoo.leagooweather.ui.DetailsFragment$2;->onItemClick
com.leagoolibs.utils.UtilAppInstall;->downloadApk

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

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

警告

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

activity com.leagoo.leagooweather.ui.OnePixActivity
service com.leagoo.leagooweather.service.LgUpdateTimeService
service com.leagoo.leagooweather.service.LgUpdateWeatherService
service com.leagoo.leagooweather.service.LgUpdateWeatherWidgetService
receiver com.leagoo.leagooweather.service.AlarmReceiver
receiver com.leagoo.leagooweather.service.NoDieBroadcastReceiver
receiver com.leagoo.leagooweather.service.ListenerNetReceiver

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

警告

检测到3个导出的隐式Service组件。
service com.leagoo.leagooweather.service.LgUpdateTimeService
service com.leagoo.leagooweather.service.LgUpdateWeatherService
service com.leagoo.leagooweather.service.LgUpdateWeatherWidgetService

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

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

警告

检测到2潜在的XSS漏洞。

位置: classes.dex
com.baidu.location.a.k;->a(Landroid.content.Context; Landroid.webkit.WebView; Lcom.baidu.location.LocationClient;)V
com.leagoo.leagooweather.WebDetailActivity;->onCreate(Landroid.os.Bundle;)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

警告

检测到2处IvParameterSpec的使用。

位置: classes.dex
com.baidu.android.bbalbs.common.a.a;->a(Ljava.lang.String; Ljava.lang.String; [B)[B
com.baidu.android.bbalbs.common.a.a;->b(Ljava.lang.String; Ljava.lang.String; [B)[B

使用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

警告

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

位置: classes.dex
okio.HashingSource;->(Lokio.Source; Lokio.ByteString; Ljava.lang.String;)V
com.baidu.android.bbalbs.common.a.a;->a(Ljava.lang.String; Ljava.lang.String; [B)[B
okio.ByteString;->hmac(Ljava.lang.String; Lokio.ByteString;)Lokio.ByteString;
okio.Buffer;->hmac(Ljava.lang.String; Lokio.ByteString;)Lokio.ByteString;
com.baidu.android.bbalbs.common.a.a;->b(Ljava.lang.String; Ljava.lang.String; [B)[B
okio.HashingSink;->(Lokio.Sink; Lokio.ByteString; Ljava.lang.String;)V

参考案例:
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跨站漏洞。
开发中...

应用证书