漏洞分析

0

高危漏洞

5

中危漏洞

5

低危漏洞

6

警告

文件名 rtv_20171219.apk
上传者 alex
文件大小 9.4979162216187MB
MD5 4ef429940d23f6f1fe133fe5b747d9e3
包名 com.youpeng.tv
Main Activity com.youpeng.tv.modules.splash.activity.SplashActivity
Min SDK 15
Target SDK 23

权限列表

# 名称 说明 提示
0 android.permission.ACCESS_FINE_LOCATION 访问精准的位置源,例如手机上的全球定位系统(如果有)。恶意应用程序可能会借此确定您所处的位置,并可能消耗额外的电池电量。 注意
1 android.permission.BLUETOOTH 允许应用程序查看本地蓝牙手机的配置,以及建立或接受与配对设备的连接。 注意
2 android.permission.CHANGE_WIFI_MULTICAST_STATE 允许应用程序接收并非直接向您的设备发送的数据包。这样在查找附近提供的服务时很有用。这种操作所耗电量大于非多播模式。 注意
3 android.permission.GET_TASKS 允许应用程序检索有关当前和最近运行的任务的信息。恶意应用程序可借此发现有关其他应用程序的保密信息。 注意
4 android.permission.READ_PHONE_STATE 允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。 注意
5 android.permission.RECEIVE_BOOT_COMPLETED 允许应用程序在系统完成启动后即自行启动。这样会延长手机的启动时间,而且如果应用程序一直运行,会降低手机的整体速度。 注意
6 android.permission.SYSTEM_ALERT_WINDOW 允许应用程序显示系统警报窗口。恶意应用程序可借此掌控整个手机屏幕。 注意
7 android.permission.WRITE_SETTINGS 允许应用程序修改系统设置方面的数据。恶意应用程序可借此破坏您的系统配置。 注意
8 android.permission.ACCESS_NETWORK_STATE 允许应用程序查看所有网络的状态。 提示
9 android.permission.ACCESS_WIFI_STATE 允许应用程序查看有关WLAN状态的信息。 提示
10 android.permission.CHANGE_WIFI_STATE 允许应用程序连接到WLAN接入点以及与WLAN接入点断开连接,并对配置的WLAN网络进行更改。 提示
11 android.permission.CLEAR_APP_CACHE 允许应用程序通过删除应用程序缓存目录中的文件释放手机存储空间。通常此权限只适用于系统进程。 提示
12 android.permission.INTERNET 允许程序访问网络. 提示
13 android.permission.KILL_BACKGROUND_PROCESSES 无论内存资源是否紧张,都允许应用程序结束其他应用程序的后台进程。 提示
14 android.permission.MOUNT_UNMOUNT_FILESYSTEMS 允许应用程序装载和卸载可移动存储器的文件系统。 提示
15 android.permission.READ_LOGS 允许应用程序从系统的各日志文件中读取信息。这样应用程序可以发现您的手机使用情况,但这些信息不应包含任何个人信息或保密信息。 提示
16 android.permission.VIBRATE 允许应用程序控制振动器。 提示
17 android.permission.WAKE_LOCK 允许应用程序防止手机进入休眠状态。 提示
18 android.permission.WRITE_EXTERNAL_STORAGE 允许应用程序写入SD卡。 提示

四大组件

组件名称

com.youpeng.tv.modules.splash.activity.SplashActivity
com.youpeng.tv.modules.player.activity.ChannelPlayer
com.youpeng.tv.modules.web.activity.WebViewActivity
com.karumi.dexter.DexterActivity

com.youpeng.tv.modules.player.services.ReceiverService
com.etv.sdk.CoreService
com.youpeng.tv.modules.download.service.DownloadService
com.etv.sdk.DebugLogService

com.youpeng.tv.common.receiver.BootReceiver

第三方库

# 库名 介绍
0 com.facebook.shimmer An easy, flexible way to add a shimmering effect to any view in an Android app.
1 okhttp3 An HTTP+SPDY client for Android and Java applications.
2 butterknife View "injection" library for Android.
3 com.nostra13.universalimageloader Powerful and flexible library for loading, caching and displaying images on Android.
4 com.jakewharton.disklrucache Java implementation of a Disk-based LRU cache which specifically targets Android compatibility.

静态扫描发现风险点

风险等级 风险名称

中危

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

位置: classes.dex
com.a.a.a.p$1;

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

中危

检测到1个未移除的敏感Test或Debug组件

com.etv.sdk.DebugLogService

建议:
在正式发布app前移除敏感的Test或Debug组件

中危

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

位置: classes.dex
org.greenrobot.eventbus.c;->b(Ljava/lang/Object;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->i(Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->i(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.channel.SurfaceRenderView;->setVideoRotation(I)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
org.greenrobot.eventbus.util.c;->a(Ljava/lang/Throwable;)Ljava/lang/Integer;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
a.a.a.a.h;->a(La/a/a/a/j;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
a.a.a.a.h;->b(La/a/a/a/j;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.pragma.DebugLog;->vfmt(Ljava/lang/String; Ljava/lang/String; [Ljava/lang/Object;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.channel.ChannelVideoView$4;->onInfo(Ltv/danmaku/ijk/media/player/IMediaPlayer; I I)Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cz.msebera.android.httpclient.extras.PRNGFixes$LinuxPRNGSecureRandom;->engineSetSeed([B)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.pragma.DebugLog;->wfmt(Ljava/lang/String; Ljava/lang/String; [Ljava/lang/Object;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.common.widget.htmltextview.d$a;->a(Landroid/graphics/drawable/Drawable;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.channel.ChannelVideoView$5;->onError(Ltv/danmaku/ijk/media/player/IMediaPlayer; I I)Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.pragma.DebugLog;->d(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.channel.ChannelVideoView$9;->a(Lcom/youpeng/tv/modules/player/views/channel/a$b;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->e(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.channel.TextureRenderView$b;->onSurfaceTextureDestroyed(Landroid/graphics/SurfaceTexture;)Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
a.a.a.a.g;->a(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/util/List; La/a/a/b/a;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.pragma.DebugLog;->ifmt(Ljava/lang/String; Ljava/lang/String; [Ljava/lang/Object;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
org.greenrobot.eventbus.c;->a(Ljava/lang/Object; Lorg/greenrobot/eventbus/c$a;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cz.msebera.android.httpclient.conn.ssl.SSLConnectionSocketFactory;->createLayeredSocket(Ljava/net/Socket; Ljava/lang/String; I Lcz/msebera/android/httpclient/protocol/HttpContext;)Ljava/net/Socket;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
a.a.a.a.h;->a(Ljava/net/HttpURLConnection; I)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->d(Ljava/lang/String; Ljava/lang/String; Z)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->w(Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.pragma.DebugLog;->dfmt(Ljava/lang/String; Ljava/lang/String; [Ljava/lang/Object;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.IjkMediaPlayer$DefaultMediaCodecSelector;->onMediaCodecSelect(Ltv/danmaku/ijk/media/player/IMediaPlayer; Ljava/lang/String; I I)Ljava/lang/String;==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->v(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
cz.msebera.android.httpclient.extras.HttpClientAndroidLog;->error(Ljava/lang/Object;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.IjkMediaPlayer;->setDataSource(Landroid/content/Context; Landroid/net/Uri; Ljava/util/Map;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
org.greenrobot.eventbus.util.a;->a(Ljava/lang/Throwable;)I==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
a.a.a.a.i;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cz.msebera.android.httpclient.extras.HttpClientAndroidLog;->trace(Ljava/lang/Object;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
a.a.a.a.h;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.danmaku.DanmakuView;->c(Lcom/youpeng/tv/modules/player/views/danmaku/b;)I==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
butterknife.ButterKnife;->createBinding(Ljava/lang/Object; Landroid/view/View;)Lbutterknife/Unbinder;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
a.a.a.a.h;->a(I)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->i(Ljava/lang/String; Ljava/lang/String; Z)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->d(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.pragma.DebugLog;->w(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->e(Ljava/lang/String; Ljava/lang/String; Z)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.channel.ChannelVideoView;->setRender(I)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.pragma.DebugLog;->i(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.channel.ChannelVideoView$9;->a(Lcom/youpeng/tv/modules/player/views/channel/a$b; I I)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->v(Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.shimmer.ShimmerFrameLayout;->tryCreateRenderBitmap()Landroid/graphics/Bitmap;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.pragma.DebugLog;->efmt(Ljava/lang/String; Ljava/lang/String; [Ljava/lang/Object;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
butterknife.ButterKnife;->findBindingConstructorForClass(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.IjkMediaPlayer$DefaultMediaCodecSelector;->onMediaCodecSelect(Ltv/danmaku/ijk/media/player/IMediaPlayer; Ljava/lang/String; I I)Ljava/lang/String;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.IjkMediaPlayer$DefaultMediaCodecSelector;->onMediaCodecSelect(Ltv/danmaku/ijk/media/player/IMediaPlayer; Ljava/lang/String; I I)Ljava/lang/String;==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.pragma.DebugLog;->v(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.IjkMediaCodecInfo;->dumpProfileLevels(Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
a.a.a.a.g;->a(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/util/List; La/a/a/b/a;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
cz.msebera.android.httpclient.extras.HttpClientAndroidLog;->debug(Ljava/lang/Object;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
tv.danmaku.ijk.media.player.pragma.DebugLog;->e(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cz.msebera.android.httpclient.extras.HttpClientAndroidLog;->info(Ljava/lang/Object;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->w(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.channel.TextureRenderView$b;->a()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.channel.TextureRenderView$b;->b()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->e(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.channel.TextureRenderView$b;->releaseSurfaceTexture(Landroid/graphics/SurfaceTexture;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.youpeng.tv.modules.player.views.channel.ChannelVideoView$9;->a(Lcom/youpeng/tv/modules/player/views/channel/a$b; I I I)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cz.msebera.android.httpclient.extras.HttpClientAndroidLog;->warn(Ljava/lang/Object;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.etv.sdk.utils.Logger;->d(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I

中危

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

位置: classes.dex
'http://example.com/' used in: Lcz/msebera/android/httpclient/impl/client/cache/CacheKeyGenerator;->()V
'http://files.ztv.pm/media/' used in: Lcom/etv/sdk/a/b;->a(Lorg/json/JSONObject;)V
'http://files.ztv.pm/media/' used in: Lcom/etv/sdk/a/e;->b(Lorg/json/JSONObject;)V
'http://files.ztv.pm/media/video/default.mp4' used in: Lcom/etv/sdk/a/g;->a(Lorg/json/JSONObject;)V
'http://www.baidu.com' used in: Lcom/youpeng/tv/utils/DevInfo;->a()Z
'https://api.ztv.pm' used in: Lcom/youpeng/tv/utils/h;->()V
'https://api.ztv.pm/v1/send_crash/' used in: Lcom/etv/sdk/utils/CrashHandler;->a(Ljava/lang/String;)V

中危

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

位置: classes.dex
com.youpeng.tv.modules.web.activity.WebViewActivity;
com.youpeng.tv.modules.web.views.AdvancedWebView;

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处使用了DES弱加密算法。

位置: classes.dex
'DES/ECB/NoPadding' used in: Lcz/msebera/android/httpclient/impl/auth/NTLMEngineImpl$CipherGen;->getLanManagerSessionKey()[B
'DES/ECB/NoPadding' used in: Lcz/msebera/android/httpclient/impl/auth/NTLMEngineImpl;->lmResponse([B [B)[B
'DES/ECB/NoPadding' used in: Lcz/msebera/android/httpclient/impl/auth/NTLMEngineImpl;->lmHash(Ljava/lang/String;)[B

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

低危

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

位置: classes.dex
Lcz/msebera/android/httpclient/impl/auth/NTLMEngineImpl;->lmResponse([B [B)[B
Lcz/msebera/android/httpclient/impl/auth/NTLMEngineImpl;->lmHash(Ljava/lang/String;)[B
Lcz/msebera/android/httpclient/impl/auth/NTLMEngineImpl$CipherGen;->getLanManagerSessionKey()[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脚本,移除大部分系统输出代码。
经扫描该包仍存在大量系统输出代码,共发现4处系统输出代码.(此处扫描的系统输出代码,是指调用System.out.print*输出的,本应在打包平台移除的系统输出代码.)
各个bundle系统输出代码详情如下:

位置: classes.dex
com.jakewharton.disklrucache.DiskLruCache;
com.etv.sdk.utils.DigestUtil;
com.etv.sdk.b.b;
com.nostra13.universalimageloader.cache.disc.impl.ext.DiskLruCache;

低危

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

位置: classes.dex
cz.msebera.android.httpclient.conn.ssl.NoopHostnameVerifier;->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

低危

检测到1处RSA算法不使用padding。

位置: classes.dex
'RSA/ECB/NoPadding' used in: Lcom/etv/sdk/utils/Crypto;->rsaEncrypt(Ljava/io/InputStream; [B)Ljava/lang/String;

使用RSA公钥时通常会绑定一个padding,原因是为了防止一些依赖于no padding时对RSA算法的攻击。

参考资料:
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处addFlags使用Intent.FLAG_ACTIVITY_NEW_TASK。

位置: classes.dex
com.youpeng.tv.modules.download.service.DownloadService;->a
com.youpeng.tv.BaseActivity;->b
com.karumi.dexter.c;->b
com.youpeng.tv.modules.web.activity.WebViewActivity$2$2;->run
com.youpeng.tv.modules.about.views.AboutFragment$3$3;->run
com.youpeng.tv.modules.splash.activity.SplashActivity$2$1$1;->onClick

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攻击。

service com.etv.sdk.CoreService
service com.youpeng.tv.modules.download.service.DownloadService
service com.etv.sdk.DebugLogService

建议:
(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个导出的隐式Service组件。
service com.etv.sdk.CoreService
service com.youpeng.tv.modules.download.service.DownloadService

建议:为了确保应用的安全性,启动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.youpeng.tv.modules.web.views.AdvancedWebView;->a(Landroid.content.Context;)V
com.youpeng.tv.modules.web.views.AdvancedWebView;->setGeolocationEnabled(Z)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处socket通信。

位置: classes.dex
Lcom.etv.sdk.c.g;->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

警告

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

位置: classes.dex
cz.msebera.android.httpclient.impl.auth.NTLMEngineImpl;->createDESKey([B I)Ljava.security.Key;
cz.msebera.android.httpclient.impl.auth.NTLMEngineImpl;->RC4([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跨站漏洞。
开发中...

应用证书