漏洞分析

0

高危漏洞

7

中危漏洞

4

低危漏洞

9

警告

文件名 CoboWallet_3.4.0_CoboWeb.apk
上传者 colordancer
文件大小 26.469349861145MB
MD5 c6d518d09212fae84cc89fafbd77f8b7
包名 cobo.wallet
Main Activity cobo.wallet.MainActivity
Min SDK 18
Target SDK 26

权限列表

# 名称 说明 提示
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.GET_TASKS 允许应用程序检索有关当前和最近运行的任务的信息。恶意应用程序可借此发现有关其他应用程序的保密信息。 注意
5 android.permission.READ_PHONE_STATE 允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。 注意
6 android.permission.WRITE_SETTINGS 允许应用程序修改系统设置方面的数据。恶意应用程序可借此破坏您的系统配置。 注意
7 android.permission.ACCESS_NETWORK_STATE 允许应用程序查看所有网络的状态。 提示
8 android.permission.ACCESS_WIFI_STATE 允许应用程序查看有关WLAN状态的信息。 提示
9 android.permission.CAMERA 允许应用程序使用相机拍照,这样应用程序可随时收集进入相机镜头的图像。 提示
10 android.permission.CHANGE_NETWORK_STATE 允许应用程序更改网络连接的状态。 提示
11 android.permission.CHANGE_WIFI_STATE 允许应用程序连接到WLAN接入点以及与WLAN接入点断开连接,并对配置的WLAN网络进行更改。 提示
12 android.permission.INTERNET 允许程序访问网络. 提示
13 android.permission.MOUNT_UNMOUNT_FILESYSTEMS 允许应用程序装载和卸载可移动存储器的文件系统。 提示
14 android.permission.VIBRATE 允许应用程序控制振动器。 提示
15 android.permission.WAKE_LOCK 允许应用程序防止手机进入休眠状态。 提示
16 android.permission.WRITE_EXTERNAL_STORAGE 允许应用程序写入SD卡。 提示

四大组件

组件名称

cobo.wallet.MainActivity
cn.jiguang.share.android.ui.JiguangShellActivity
cobo.wallet.wxapi.WXEntryActivity
cn.jpush.android.ui.PushActivity
cn.jpush.android.ui.PopWinActivity
com.google.android.gms.common.api.GoogleApiActivity

cn.jpush.android.service.DownloadService
cn.jpush.android.service.DaemonService
cn.jpush.android.service.PushService

cobo.wallet.FaceBookUploadReceiver
com.learnium.RNDeviceInfo.RNDeviceReceiver
cn.jpush.reactnativejpush.JPushModule$JPushReceiver
cn.jpush.reactnativejpush.JPushModule$MyJPushMessageReceiver
cn.jiguang.share.reactnative.JShareModule$FaceBookUploadReceiver
cn.jpush.android.service.PushReceiver
cn.jpush.android.service.AlarmReceiver

android.support.v4.content.FileProvider
cn.jiguang.share.facebook.FacebookContentProvider
com.imagepicker.FileProvider
cn.jpush.android.service.DataProvider

第三方库

# 库名 介绍
0 com.facebook.crypto Conceal provides easy Android APIs for performing fast encryption and authentication of data.
1 cn.jpush.android.api 极光推送,使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户保持互动,从而有效地提高留存率,提升用户体验。平台提供整合了Android推送、iOS推送的统一推送服务。
2 com.facebook.cache.common An image management library by FaceBook.
3 okhttp3 An HTTP+SPDY client for Android and Java applications.
4 com.google.zxing Official ZXing ("Zebra Crossing") project home
5 com.facebook.imagepipeline An image management library by FaceBook.
6 com.sina.weibo 新浪微博开放平台(Weibo Open Platform)是基于新浪微博海量用户和强大的传播能力,接入第三方合作伙伴服务,向用户提供丰富应用和完善服务的开放平台。将你的服务接入微博平台,有助于推广产品,增加网站/应用的流量、拓展新用户,获得收益。
7 android.support.multidex DEPRECATED

静态扫描发现风险点

风险等级 风险名称

中危

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

位置: classes.dex
cn.jiguang.net.SSLTrustManager;

当移动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个暴露的provider组件实现了openFile函数。

位置: classes.dex
Lcn/jiguang/share/facebook/FacebookContentProvider; openFile


对外暴露的Content Provider实现了openFile()接口,会导致其他有相应调用该Content Provider权限的应用即可调用Content Provider的openFile()接口进行文件数据访问。如果没有进行Content Provider访问权限控制和对访问的目标文件的Uri进行有效判断,攻击者利用文件目录遍历访问任意可读文件。
(1)将不必要导出的Content Provider设置为不导出
(2)去除没有必要的openFile()接口
(3)过滤限制跨域访问,对访问的目标文件的路径进行有效判断
(4)使用签名验证来控制Content Provider共享数据的访问权限,如设置protectionLevel="signature"或"signatureOrSystem"
(5)公开的content provider确保不存储敏感数据
(6)提供asset文件时注意权限保护

参考案例:
www.wooyun.org/bugs/wooyun-2013-047098
www.wooyun.org/bugs/wooyun-2013-044407
www.wooyun.org/bugs/wooyun-2013-044411

参考资料:
https://jaq.alibaba.com/blog.htm?id=61
http://wolfeye.baidu.com/blog/content-provider-file-traversal
http://drops.wooyun.org/tips/4314

中危

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

位置: classes.dex
com.facebook.soloader.UnpackingSoSource;->regenerate(B Lcom/facebook/soloader/UnpackingSoSource$DsoManifest; Lcom/facebook/soloader/UnpackingSoSource$InputDsoIterator;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.appsflyer.cache.CacheManager;->getCachedRequests(Landroid/content/Context;)Ljava/util/List;==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.bridge.CatalystInstanceImpl;->(Lcom/facebook/react/bridge/queue/ReactQueueConfigurationSpec; Lcom/facebook/react/bridge/JavaScriptExecutor; Lcom/facebook/react/bridge/NativeModuleRegistry; Lcom/facebook/react/bridge/JSBundleLoader; Lcom/facebook/react/bridge/NativeModuleCallExceptionHandler;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.samsung.android.sdk.pass.SpassFingerprint;->g()Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.amplitude.api.AmplitudeLog;->i(Ljava/lang/String; Ljava/lang/String;)I==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.horcrux.svg.SvgView;->handleTouchEvent(Landroid/view/MotionEvent;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.fingerprints.service.FingerprintManager;->(Landroid/os/IBinder; Landroid/os/Looper;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.horcrux.svg.SvgView;->handleTouchEvent(Landroid/view/MotionEvent;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.reactnativejpush.ExampleUtil;->getImei(Landroid/content/Context; Ljava/lang/String;)Ljava/lang/String;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.reactnativejpush.Logger;->i(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->detachViewFromInstance(Lcom/facebook/react/ReactRootView; Lcom/facebook/react/bridge/CatalystInstance;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->onReloadWithJSDebugger(Lcom/facebook/react/bridge/JavaJSExecutor$Factory;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.samsung.android.sdk.pass.Spass;->a()Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->setupReactContext(Lcom/facebook/react/bridge/ReactApplicationContext;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.appsflyer.cache.CacheManager;->cacheRequest(Lcom/appsflyer/cache/RequestCacheData; Landroid/content/Context;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.amplitude.api.AmplitudeLog;->v(Ljava/lang/String; Ljava/lang/String;)I==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.android.installreferrer.commons.InstallReferrerCommons;->logVerbose(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.microsoft.appcenter.utils.AppCenterLog;->debug(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.microsoft.appcenter.reactnative.appcenter.ReactNativeUtils;->logInfo(Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.share.android.utils.DeviceInfo;->a(Ljava/lang/String;)Ljava/lang/String;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->recreateReactContextInBackground(Lcom/facebook/react/bridge/JavaScriptExecutorFactory; Lcom/facebook/react/bridge/JSBundleLoader;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->runCreateReactContextOnNewThread(Lcom/facebook/react/ReactInstanceManager$ReactContextInitParams;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
io.sentry.android.AndroidSentryClientFactory;->(Landroid/content/Context;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.soloader.UnpackingSoSource;->prepare(I)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.share.reactnative.Logger;->i(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.amplitude.api.AmplitudeLog;->w(Ljava/lang/String; Ljava/lang/String;)I==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.bridge.CatalystInstanceImpl;->destroy()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.appsflyer.cache.CacheManager;->deleteRequest(Ljava/lang/String; Landroid/content/Context;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.g.e;->a(Ljava/lang/String; Ljava/util/Map;)Lcn/jiguang/g/e;==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.kiwisec.kdp.a;->log(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.microsoft.appcenter.utils.AppCenterLog;->error(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.samsung.android.sdk.pass.SpassFingerprint;->b(Lcom/samsung/android/sdk/pass/SpassFingerprint; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.imagepipeline.memory.NativeMemoryChunk;->copy(I Lcom/facebook/imagepipeline/memory/NativeMemoryChunk; I I)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.amplitude.api.AmplitudeLog;->d(Ljava/lang/String; Ljava/lang/String;)I==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.soloader.ApkSoSource$ApkUnpacker;->shouldExtract(Ljava/util/zip/ZipEntry; Ljava/lang/String;)Z==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.microsoft.appcenter.reactnative.appcenter.ReactNativeUtils;->logError(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.android.installreferrer.commons.InstallReferrerCommons;->logWarn(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.sina.weibo.sdk.api.ImageObject;->setImageObject(Landroid/graphics/Bitmap;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.bridge.CatalystInstanceImpl$1$1;->run()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.soloader.UnpackingSoSource;->deleteUnmentionedFiles([Lcom/facebook/soloader/UnpackingSoSource$Dso;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.sina.weibo.sdk.api.BaseMediaObject;->checkArgs()Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
io.sentry.android.event.helper.AndroidEventBuilderHelper;->getProGuardUuids(Landroid/content/Context;)[Ljava/lang/String;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.fingerprints.service.FingerprintManager;->(Landroid/os/IBinder; Landroid/os/Looper;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.views.scroll.ReactScrollView;->(Lcom/facebook/react/bridge/ReactContext; Lcom/facebook/react/views/scroll/FpsListener;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.bridge.CatalystInstanceImpl;->runJSBundle()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.share.qqmodel.g;->onPageStarted(Landroid/webkit/WebView; Ljava/lang/String; Landroid/graphics/Bitmap;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.samsung.android.sdk.pass.support.SdkSupporter;->copyStaticFields(Ljava/lang/Object; Ljava/lang/Class; Ljava/lang/String; Ljava/lang/String;)Z==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.share.qqmodel.g;->shouldOverrideUrlLoading(Landroid/webkit/WebView; Ljava/lang/String;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.sina.weibo.sdk.api.TextObject;->checkArgs()Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.sina.weibo.sdk.api.ImageObject;->checkArgs()Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.appsflyer.AFLogger;->ˎ(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.soloader.UnpackingSoSource;->extractDso(Lcom/facebook/soloader/UnpackingSoSource$InputDso; [B)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.fingerprints.service.FingerprintManager;->notifyScreenOn()V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.samsung.android.sdk.pass.support.v1.FingerprintManagerProxyFactory;->create(Landroid/content/Context;)Lcom/samsung/android/sdk/pass/support/IFingerprintManagerProxy;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.share.facebook.a.h;->a(Ljava/util/Collection;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.share.reactnative.Logger;->d(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.appsflyer.reactnative.RNAppsFlyerModule;->initSdk(Lcom/facebook/react/bridge/ReadableMap; Lcom/facebook/react/bridge/Callback; Lcom/facebook/react/bridge/Callback;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.microsoft.appcenter.utils.AppCenterLog;->info(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->attachRootViewToInstance(Lcom/facebook/react/ReactRootView; Lcom/facebook/react/bridge/CatalystInstance;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.appsflyer.AFLogger;->ˋ(Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.soloader.UnpackingSoSource$1;->run()V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.soloader.UnpackingSoSource;->prepare(I)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->createReactContextInBackground()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.microsoft.appcenter.utils.AppCenterLog;->warn(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.appsflyer.cache.CacheManager;->clearCache(Landroid/content/Context;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->createReactContext(Lcom/facebook/react/bridge/JavaScriptExecutor; Lcom/facebook/react/bridge/JSBundleLoader;)Lcom/facebook/react/bridge/ReactApplicationContext;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.lwansbrough.RCTCamera.RCTCameraViewFinder;->parseBarCodeString(Ljava/lang/String;)Lcom/google/zxing/BarcodeFormat;==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.reactnativejpush.Logger;->d(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->recreateReactContextInBackgroundFromBundleLoader()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.fingerprints.service.FingerprintManager;->notifyScreenOff()V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.share.qqmodel.a;->onActivityResult(Landroid/app/Activity; I I Landroid/content/Intent;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.horcrux.svg.SvgView;->dispatchCancelEvent(Landroid/view/MotionEvent;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.samsung.android.sdk.pass.SpassFingerprint;->(Landroid/content/Context;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
cn.jiguang.g.b.d;->a(Landroid/database/Cursor; I Ljava/io/Serializable;)Ljava/io/Serializable;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.soloader.UnpackingSoSource;->refreshLocked(Lcom/facebook/soloader/FileLocker; I [B)Z==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.appsflyer.AFLogger;->afInfoLog(Ljava/lang/String; Z)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->(Landroid/content/Context; Landroid/app/Activity; Lcom/facebook/react/modules/core/DefaultHardwareBackBtnHandler; Lcom/facebook/react/bridge/JavaScriptExecutorFactory; Lcom/facebook/react/bridge/JSBundleLoader; Ljava/lang/String; Ljava/util/List; Z Lcom/facebook/react/bridge/NotThreadSafeBridgeIdleDebugListener; Lcom/facebook/react/common/LifecycleState; Lcom/facebook/react/uimanager/UIImplementationProvider; Lcom/facebook/react/bridge/NativeModuleCallExceptionHandler; Lcom/facebook/react/devsupport/RedBoxHandler; Z Z Z Lcom/facebook/react/devsupport/interfaces/DevBundleDownloadListener; I I)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.service.e;->a(Landroid/os/Bundle; Landroid/os/Handler;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.amplitude.api.AmplitudeLog;->e(Ljava/lang/String; Ljava/lang/String;)I==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.appsflyer.AFLogger;->afRDLog(Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.sina.weibo.sdk.api.BaseMediaObject;->setThumbImage(Landroid/graphics/Bitmap;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.microsoft.appcenter.utils.AppCenterLog;->verbose(Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.microsoft.appcenter.reactnative.appcenter.ReactNativeUtils;->logDebug(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
cn.jpush.android.service.DataProvider;->query(Landroid/net/Uri; [Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Ljava/lang/String;)Landroid/database/Cursor;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.imagepicker.utils.MediaUtils$1;->onScanCompleted(Ljava/lang/String; Landroid/net/Uri;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->tearDownReactContext(Lcom/facebook/react/bridge/ReactContext;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->recreateReactContextInBackgroundInner()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.imagepipeline.memory.NativeMemoryChunk;->finalize()V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.bridge.CatalystInstanceImpl;->initialize()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.appsflyer.cache.CacheManager;->init(Landroid/content/Context;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.appsflyer.AFLogger;->afDebugLog(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.kiwisec.kdp.a;->prepareAllFiles()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.flat.FlatARTSurfaceViewShadowNode;->drawOutput()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.facebook.react.ReactInstanceManager;->onJSBundleLoadedFromServer()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.microsoft.codepush.react.CodePushUtils;->log(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I

中危

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

位置: classes.dex
com.facebook.react.views.webview.ReactWebViewManager$ReactWebView;->setMessagingEnabled(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

中危

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

位置: classes.dex
'10.0.0.172' used in: Lcn/jiguang/net/HttpUtils;->getHttpURLConnectionWithProxy(Landroid/content/Context; Ljava/lang/String;)Ljava/net/HttpURLConnection;
'10.0.2.2' used in: Lcom/facebook/react/modules/systeminfo/AndroidInfoHelpers;->getServerIpAddress(I)Ljava/lang/String;
'10.0.3.2' used in: Lcom/facebook/react/modules/systeminfo/AndroidInfoHelpers;->getServerIpAddress(I)Ljava/lang/String;
'data:image/' used in: Lfr/greweb/reactnativeviewshot/ViewShot;->execute(Lcom/facebook/react/uimanager/NativeViewHierarchyManager;)V
'http://%s/%s' used in: Lcom/facebook/react/devsupport/DevServerHelper;->createResourceURL(Ljava/lang/String; Ljava/lang/String;)Ljava/lang/String;
'http://%s/%s.%s?platform=android&dev=%s&minify=%s' used in: Lcom/facebook/react/devsupport/DevServerHelper;->createBundleURL(Ljava/lang/String; Ljava/lang/String; Z Z Z)Ljava/lang/String;
'http://%s/%s.%s?platform=android&dev=%s&minify=%s' used in: Lcom/facebook/react/devsupport/DevServerHelper;->getSourceUrl(Ljava/lang/String;)Ljava/lang/String;
'http://%s/%s.%s?platform=android&dev=%s&minify=%s' used in: Lcom/facebook/react/devsupport/DevServerHelper;->getSourceMapUrl(Ljava/lang/String;)Ljava/lang/String;
'http://%s/inspector/device?name=%s&app=%s' used in: Lcom/facebook/react/devsupport/DevServerHelper;->getInspectorDeviceUrl()Ljava/lang/String;
'http://%s/jscheapcaptureupload' used in: Lcom/facebook/react/devsupport/DevServerHelper;->getHeapCaptureUploadUrl()Ljava/lang/String;
'http://%s/launch-js-devtools' used in: Lcom/facebook/react/devsupport/DevServerHelper;->createLaunchJSDevtoolsCommandUrl()Ljava/lang/String;
'http://%s/nuclide/attach-debugger-nuclide?title=%s&app=%s&device=%s' used in: Lcom/facebook/react/devsupport/DevServerHelper;->getInspectorAttachUrl(Ljava/lang/String;)Ljava/lang/String;
'http://%s/onchange' used in: Lcom/facebook/react/devsupport/DevServerHelper;->createOnChangeEndpointUrl()Ljava/lang/String;
'http://%s/open-stack-frame' used in: Lcom/facebook/react/devsupport/DevServerHelper;->createOpenStackFrameURL(Ljava/lang/String;)Ljava/lang/String;
'http://%s/status' used in: Lcom/facebook/react/devsupport/DevServerHelper;->createPackagerStatusURL(Ljava/lang/String;)Ljava/lang/String;
'http://%s/symbolicate' used in: Lcom/facebook/react/devsupport/DevServerHelper;->createSymbolicateURL(Ljava/lang/String;)Ljava/lang/String;
'http://182.92.20.189:9099/' used in: Lcn/jiguang/a/a/c/i;->a(I)Ljava/lang/String;
'http://javax.xml.XMLConstants/feature/secure-processing' used in: Lcom/adobe/xmp/impl/XMPMetaParser;->createDocumentBuilderFactory()Ljavax/xml/parsers/DocumentBuilderFactory;
'http://ns.adobe.com/StockPhoto/1.0/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/camera-raw-settings/1.0/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/exif/1.0/' used in: Lcom/drew/metadata/xmp/XmpDirectory;->__clinit__()V
'http://ns.adobe.com/exif/1.0/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/exif/1.0/' used in: Lcom/adobe/xmp/impl/XMPNormalizer;->touchUpDataModel(Lcom/adobe/xmp/impl/XMPMetaImpl;)V
'http://ns.adobe.com/exif/1.0/aux/' used in: Lcom/drew/metadata/xmp/XmpDirectory;->__clinit__()V
'http://ns.adobe.com/exif/1.0/aux/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/pdf/1.3/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/photoshop/1.0/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/tiff/1.0/' used in: Lcom/drew/metadata/xmp/XmpDirectory;->__clinit__()V
'http://ns.adobe.com/tiff/1.0/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/xap/1.0/' used in: Lcom/drew/metadata/xmp/XmpDirectory;->__clinit__()V
'http://ns.adobe.com/xap/1.0/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/xap/1.0/g/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/xap/1.0/g/img/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/xap/1.0/mm/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/xap/1.0/mm/' used in: Lcom/adobe/xmp/impl/XMPNormalizer;->tweakOldXMP(Lcom/adobe/xmp/impl/XMPNode;)V
'http://ns.adobe.com/xap/1.0/rights/' used in: Lcom/adobe/xmp/impl/XMPNormalizer;->touchUpDataModel(Lcom/adobe/xmp/impl/XMPMetaImpl;)V
'http://ns.adobe.com/xap/1.0/sType/Font#' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/xap/1.0/t/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/xap/1.0/t/pg/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://ns.adobe.com/xmp/1.0/DynamicMedia/' used in: Lcom/adobe/xmp/impl/XMPNormalizer;->touchUpDataModel(Lcom/adobe/xmp/impl/XMPMetaImpl;)V
'http://purl.org/dc/1.1/' used in: Lcom/adobe/xmp/impl/ParseRDF;->addChildNode(Lcom/adobe/xmp/impl/XMPMetaImpl; Lcom/adobe/xmp/impl/XMPNode; Lorg/w3c/dom/Node; Ljava/lang/String; Z)Lcom/adobe/xmp/impl/XMPNode;
'http://purl.org/dc/elements/1.1/' used in: Lcom/drew/metadata/xmp/XmpDirectory;->__clinit__()V
'http://purl.org/dc/elements/1.1/' used in: Lcom/adobe/xmp/impl/ParseRDF;->addChildNode(Lcom/adobe/xmp/impl/XMPMetaImpl; Lcom/adobe/xmp/impl/XMPNode; Lorg/w3c/dom/Node; Ljava/lang/String; Z)Lcom/adobe/xmp/impl/XMPNode;
'http://purl.org/dc/elements/1.1/' used in: Lcom/adobe/xmp/impl/Utils;->isInternalProperty(Ljava/lang/String; Ljava/lang/String;)Z
'http://purl.org/dc/elements/1.1/' used in: Lcom/adobe/xmp/impl/XMPNormalizer;->migrateAudioCopyright(Lcom/adobe/xmp/XMPMeta; Lcom/adobe/xmp/impl/XMPNode;)V
'http://purl.org/dc/elements/1.1/' used in: Lcom/adobe/xmp/impl/XMPNormalizer;->touchUpDataModel(Lcom/adobe/xmp/impl/XMPMetaImpl;)V
'http://schemas.android.com/apk/res/android' used in: Landroid/support/v4/content/res/TypedArrayUtils;->hasAttribute(Lorg/xmlpull/v1/XmlPullParser; Ljava/lang/String;)Z
'http://www.android.com/' used in: Lcom/facebook/soloader/SoLoader;->loadLibrary(Ljava/lang/String;)V
'http://www.w3.org/1999/02/22-rdf-syntax-ns#' used in: Lcom/adobe/xmp/impl/ParseRDF;->rdf_ResourcePropertyElement(Lcom/adobe/xmp/impl/XMPMetaImpl; Lcom/adobe/xmp/impl/XMPNode; Lorg/w3c/dom/Node; Z)V
'http://www.w3.org/1999/02/22-rdf-syntax-ns#' used in: Lcom/adobe/xmp/impl/ParseRDF;->rdf_LiteralPropertyElement(Lcom/adobe/xmp/impl/XMPMetaImpl; Lcom/adobe/xmp/impl/XMPNode; Lorg/w3c/dom/Node; Z)V
'http://www.w3.org/1999/02/22-rdf-syntax-ns#' used in: Lcom/adobe/xmp/impl/ParseRDF;->getRDFTermKind(Lorg/w3c/dom/Node;)I
'http://www.w3.org/1999/02/22-rdf-syntax-ns#' used in: Lcom/adobe/xmp/impl/ParseRDF;->rdf_ParseTypeResourcePropertyElement(Lcom/adobe/xmp/impl/XMPMetaImpl; Lcom/adobe/xmp/impl/XMPNode; Lorg/w3c/dom/Node; Z)V
'http://www.w3.org/1999/02/22-rdf-syntax-ns#' used in: Lcom/adobe/xmp/impl/ParseRDF;->rdf_EmptyPropertyElement(Lcom/adobe/xmp/impl/XMPMetaImpl; Lcom/adobe/xmp/impl/XMPNode; Lorg/w3c/dom/Node; Z)V
'http://www.w3.org/1999/02/22-rdf-syntax-ns#' used in: Lcom/adobe/xmp/impl/XMPMetaParser;->findRootNode(Lorg/w3c/dom/Node; Z [Ljava/lang/Object;)[Ljava/lang/Object;
'http://www.w3.org/1999/02/22-rdf-syntax-ns#' used in: Lcom/adobe/xmp/impl/ParseRDF;->rdf_PropertyElement(Lcom/adobe/xmp/impl/XMPMetaImpl; Lcom/adobe/xmp/impl/XMPNode; Lorg/w3c/dom/Node; Z)V
'https://%s/%s' used in: Lcom/appsflyer/share/LinkGenerator;->setBaseURL(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Lcom/appsflyer/share/LinkGenerator;
'https://api.%s/install_data/v3/' used in: Lcom/appsflyer/AppsFlyerLib$b;->ˋ()Ljava/lang/String;
'https://api.amplitude.com/' used in: Lcom/amplitude/api/AmplitudeClient;->(Ljava/lang/String;)V
'https://api.twitter.com' used in: Lcn/jiguang/share/twitter/core/a;->()V
'https://api.twitter.com/1.1/statuses/update.json' used in: Lcn/jiguang/share/twitter/core/a/e;->b()Lcn/jiguang/share/twitter/core/a/a;
'https://api.twitter.com/1.1/users/show.json' used in: Lcn/jiguang/share/twitter/core/a/f;->b()Lcn/jiguang/share/twitter/core/a/a;
'https://api.twitter.com/oauth/access_token' used in: Lcn/jiguang/share/twitter/core/a/d;->c()Lcn/jiguang/share/twitter/core/a/a;
'https://api.twitter.com/oauth/request_token' used in: Lcn/jiguang/share/twitter/core/a/d;->b()Lcn/jiguang/share/twitter/core/a/a;
'https://app.%s' used in: Lcom/appsflyer/share/CrossPromotionHelper;->trackAndOpenStore(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String; Ljava/util/Map;)V
'https://app.%s' used in: Lcom/appsflyer/share/LinkGenerator;->ॱ()Ljava/lang/StringBuilder;
'https://attr.%s/api/v' used in: Lcom/appsflyer/AppsFlyerLib;->()V
'https://cobo.com/404' used in: Lcobo/wallet/rn/viewmanagers/webview/ExtendedWebView$ExtendedWebClient;->onReceivedError(Landroid/webkit/WebView; I Ljava/lang/String; Ljava/lang/String;)V
'https://codepush.azurewebsites.net/' used in: Lcom/microsoft/codepush/react/CodePush;->__clinit__()V
'https://drewnoakes.com/code/exif/\n' used in: Lcom/drew/tools/ProcessAllImagesInFolderUtility$TextFileOutputHandler;->closeWriter(Ljava/io/Writer;)V
'https://events.%s/api/v' used in: Lcom/appsflyer/AppsFlyerLib;->()V
'https://graph-video.%s' used in: Lcn/jiguang/share/facebook/a/v;->b()Ljava/lang/String;
'https://graph.%s' used in: Lcn/jiguang/share/facebook/a/v;->a()Ljava/lang/String;
'https://impression.%s' used in: Lcom/appsflyer/share/CrossPromotionHelper;->trackCrossPromoteImpression(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String;)V
'https://in.appcenter.ms' used in: Lcom/microsoft/appcenter/ingestion/IngestionHttp;->(Landroid/content/Context; Lcom/microsoft/appcenter/ingestion/models/json/LogSerializer;)V
'https://monitorsdk.%s/remote-debug?app_id=' used in: Lcom/appsflyer/w;->ˊ(Ljava/lang/String; Landroid/content/pm/PackageManager;)V
'https://onelink.%s/shortlink-sdk/v1' used in: Lcom/appsflyer/p;->ˊ()Ljava/lang/String;
'https://onelink.%s/shortlink-sdk/v1' used in: Lcom/appsflyer/CreateOneLinkHttpTask;->ˊ()Ljava/lang/String;
'https://pagead2.googlesyndication.com/pagead/gen_204?id=gmob-apps' used in: Lcom/google/android/gms/ads/identifier/AdvertisingIdClient;->zza(Lcom/google/android/gms/ads/identifier/AdvertisingIdClient$Info; Z Ljava/lang/Throwable;)Landroid/net/Uri;
'https://plus.google.com/' used in: Lcom/google/android/gms/common/internal/zzp;->()V
'https://register.%s/api/v' used in: Lcom/appsflyer/AppsFlyerLib;->()V
'https://sdk-services.%s/validate-android-signature' used in: Lcom/appsflyer/h;->run()V
'https://stats.%s/stats' used in: Lcom/appsflyer/AppsFlyerLib;->ˋ(Ljava/lang/ref/WeakReference;)V
'https://t.%s/api/v' used in: Lcom/appsflyer/AppsFlyerLib;->()V
'https://tsis.jpush.cn' used in: Lcn/jiguang/c/a;->()V
'https://upload.twitter.com/1.1/media/upload.json' used in: Lcn/jiguang/share/twitter/core/a/c;->b()Lcn/jiguang/share/twitter/core/a/a;
'https://validate.%s/api/v' used in: Lcom/appsflyer/h;->()V
'https://www.googleapis.com/auth/games' used in: Lcom/google/android/gms/auth/api/signin/GoogleSignInOptions;->()V
'javascript:(function () {var event;var data = ' used in: Lcom/facebook/react/views/webview/ReactWebViewManager;->receiveCommand(Landroid/webkit/WebView; I Lcom/facebook/react/bridge/ReadableArray;)V
'javascript:(function() {\n' used in: Lcom/facebook/react/views/webview/ReactWebViewManager$ReactWebView;->callInjectedJavaScript()V
"javascript:(function() {var parent = document.getElementsByTagName('head').item(0);var script = document.createElement('script');script.type = 'text/javascript';script.innerHTML = window.atob('" used in: Lcobo/wallet/rn/viewmanagers/webview/Web3ViewClient$1;->run()V
'javascript:(function(b){console.log("' used in: Lcn/jpush/android/e/a/d;->(Ljava/lang/String; Ljava/lang/Class;)V
'javascript:(window.originalPostMessage = window.postMessage,window.postMessage = function(data) {__REACT_WEB_VIEW_BRIDGE.postMessage(String(data));})' used in: Lcom/facebook/react/views/webview/ReactWebViewManager$ReactWebView;->linkBridge()V

中危

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

位置: classes.dex
com.facebook.react.views.webview.ReactWebViewManager;
cn.jiguang.share.twitter.a.c;
com.facebook.react.views.webview.ReactWebViewManager$ReactWebView;

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/

中危

检测到2使用全局可读写操作文件。

位置: classes.dex
com.google.android.gms.flags.impl.zzb$1;->zzDH()Landroid.content.SharedPreferences;===>getSharedPreferences
com.google.android.gms.ads.identifier.AdvertisingIdClient;->getAdvertisingIdInfo(Landroid.content.Context;)Lcom.google.android.gms.ads.identifier.AdvertisingIdClient$Info;===>getSharedPreferences

在使用getDir、getSharedPreferences(SharedPreference)或openFileOutput时,如果设置了全局的可读权限,攻击者恶意读取文件内容,获取敏感信息。在设置文件属性时如果设置全局可写,攻击者可能会篡改、伪造内容,可以能会进行诈骗等行为,造成用户财产损失。建议:
(1)使用MODE_PRIVATE模式创建内部存储文件。
(2)加密存储敏感数据。
(3)避免在文件中存储明文和敏感信息。

参考案例:
http://wooyun.org/bugs/wooyun-2010-047172
http://wooyun.org/bugs/wooyun-2010-054438
http://wooyun.org/bugs/wooyun-2010-0151270

参考资料:
https://jaq.alibaba.com/blog.htm?id=56
https://jaq.alibaba.com/blog.htm?id=58
http://wolfeye.baidu.com/blog/global-rw-of-file
http://wolfeye.baidu.com/blog/global-rw-of-sharepreference/

低危

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

位置: classes.dex
com.facebook.react.views.webview.ReactWebViewManager;->setSource(Landroid.webkit.WebView; Lcom.facebook.react.bridge.ReadableMap;)V
com.facebook.react.views.webview.ReactWebViewManager;->setScalesPageToFit(Landroid.webkit.WebView; Z)V
com.facebook.react.views.webview.ReactWebViewManager;->setSaveFormDataDisabled(Landroid.webkit.WebView; Z)V
cn.jiguang.share.weibo.a.j;->onCreate()V
cn.jpush.android.ui.FullScreenView;->initModule(Landroid.content.Context; Lcn.jpush.android.data.b;)V
com.facebook.react.views.webview.ReactWebViewManager;->setDomStorageEnabled(Landroid.webkit.WebView; Z)V
com.facebook.react.views.webview.ReactWebViewManager;->setMediaPlaybackRequiresUserAction(Landroid.webkit.WebView; Z)V
com.facebook.react.views.webview.ReactWebViewManager;->setUserAgent(Landroid.webkit.WebView; Ljava.lang.String;)V
cn.jiguang.share.twitter.a.c;->a(Landroid.webkit.WebView; Landroid.webkit.WebViewClient; Ljava.lang.String; Landroid.webkit.WebChromeClient;)V
cn.jiguang.share.qqmodel.f;->onCreate()V
com.facebook.react.views.webview.ReactWebViewManager;->setJavaScriptEnabled(Landroid.webkit.WebView; Z)V
cn.jpush.android.ui.c;->shouldOverrideUrlLoading(Landroid.webkit.WebView; Ljava.lang.String;)Z
com.facebook.react.views.webview.ReactWebViewManager;->setMixedContentMode(Landroid.webkit.WebView; Ljava.lang.String;)V
cn.jpush.android.ui.PopWinActivity;->onCreate(Landroid.os.Bundle;)V
com.facebook.react.views.webview.ReactWebViewManager;->setAllowUniversalAccessFromFileURLs(Landroid.webkit.WebView; Z)V
cn.jpush.android.e.a.c;->onProgressChanged(Landroid.webkit.WebView; I)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/

低危

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

位置: classes.dex
Lcn/jiguang/d/g/a/a;->b(Ljava/lang/String; [B)[B
Lcn/jiguang/d/g/a/a;->a(Ljava/lang/String; [B)[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脚本,移除大部分系统输出代码。
经扫描该包仍存在大量系统输出代码,共发现12处系统输出代码.(此处扫描的系统输出代码,是指调用System.out.print*输出的,本应在打包平台移除的系统输出代码.)
各个bundle系统输出代码详情如下:

位置: classes.dex
com.localz.RNPinch;
com.drew.tools.ExtractJpegSegmentTool;
com.drew.tools.ProcessAllImagesInFolderUtility$FileHandlerBase;
com.adobe.xmp.XMPMetaFactory;
com.drew.tools.ProcessUrlUtility;
com.localz.pinch.utils.KeyPinStoreUtil;
cn.jiguang.share.android.utils.AndroidUtils;
com.fasterxml.jackson.core.util.VersionUtil;
com.drew.tools.ProcessAllImagesInFolderUtility;
com.drew.imaging.ImageMetadataReader;
com.drew.tools.ProcessAllImagesInFolderUtility$TextFileOutputHandler;

位置: classes2.dex
org.slf4j.helpers.Util;

低危

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

位置: classes.dex
cn.jpush.android.ui.c;->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/

警告

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

位置: classes.dex
cobo.wallet.rn.modules.update.UpdateManager;->install
com.facebook.react.modules.intent.IntentModule;->canOpenURL
cn.jiguang.share.wechat.b;->a
cn.jiguang.share.wechat.b;->authInternal
cn.jpush.reactnativejpush.JPushModule;->jumpToPushActivity
cn.jiguang.share.jchatpro.b;->a
cn.jiguang.share.android.ui.c;->run
cn.jpush.android.d.a;->b
cn.jpush.reactnativejpush.JPushModule;->jumpToPushActivityWithParams
com.facebook.react.modules.intent.IntentModule;->openURL
cn.jpush.android.c.c;->a

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

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

警告

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

activity cn.jiguang.share.android.ui.JiguangShellActivity
activity cobo.wallet.wxapi.WXEntryActivity
service cn.jpush.android.service.DaemonService
receiver cobo.wallet.FaceBookUploadReceiver
receiver com.learnium.RNDeviceInfo.RNDeviceReceiver
receiver cn.jpush.reactnativejpush.JPushModule$JPushReceiver
receiver cn.jpush.reactnativejpush.JPushModule$MyJPushMessageReceiver
receiver cn.jiguang.share.reactnative.JShareModule$FaceBookUploadReceiver

建议:
(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 cn.jpush.android.service.DaemonService

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

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

警告

检测2处組件設置了android.intent.category.BROWSABLE属性。
cobo.wallet.MainActivity
cn.jiguang.share.android.ui.JiguangShellActivity


在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

警告

检测到3潜在的XSS漏洞。

位置: classes.dex
cn.jiguang.share.qqmodel.f;->onCreate()V
cn.jiguang.share.weibo.a.j;->onCreate()V
cn.jpush.android.d.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处IvParameterSpec的使用。

位置: classes.dex
com.nimbusds.jose.crypto.AESCBC;->createAESCBCCipher(Ljavax.crypto.SecretKey; Z [B Ljava.security.Provider;)Ljavax.crypto.Cipher;

使用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处provider的grantUriPermissions设置为true。
android.support.v4.content.FileProvider
com.imagepicker.FileProvider


grant-uri-permission若设置为true,可被其它程序员通过uri访问到content provider的内容,容易造成信息泄露。

参考资料:
https://security.tencent.com/index.php/blog/msg/6

警告

检测到1处socket通信。

位置: classes.dex
Lcn.jiguang.d.d.d;->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

警告

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

位置: classes.dex
com.nimbusds.jose.crypto.LegacyConcatKDF;->generateCIK(Ljavax.crypto.SecretKey; Lcom.nimbusds.jose.EncryptionMethod; [B [B)Ljavax.crypto.SecretKey;
com.nimbusds.jose.crypto.DirectEncrypter;->([B)V
cn.jiguang.d.g.a.a;->a(Ljava.lang.String; Ljava.lang.String;)Ljava.lang.String;
cn.jiguang.d.g.a.a;->a(Ljava.lang.String;)Ljava.lang.String;
cn.jiguang.d.g.a.a;->a([B Ljava.lang.String; Ljava.lang.String;)[B
okio.ByteString;->hmac(Ljava.lang.String; Lokio.ByteString;)Lokio.ByteString;
com.nimbusds.jose.crypto.DirectDecrypter;->([B)V
cn.jiguang.d.g.a.a;->a(Ljava.lang.String; [B)[B
com.nimbusds.jose.crypto.ECDH;->deriveSharedSecret(Ljava.security.interfaces.ECPublicKey; Ljava.security.interfaces.ECPrivateKey; Ljava.security.Provider;)Ljavax.crypto.SecretKey;
com.nimbusds.jose.crypto.RSA1_5;->decryptCEK(Ljava.security.PrivateKey; [B I Ljava.security.Provider;)Ljavax.crypto.SecretKey;
com.nimbusds.jose.crypto.AESDecrypter;->([B)V
cn.jiguang.d.g.a.a;->b(Ljava.lang.String; [B)[B
cn.jiguang.share.twitter.core.oauth.b;->a(Ljava.lang.String;)Ljava.lang.String;
com.nimbusds.jose.crypto.AESCBC;->createAESCBCCipher(Ljavax.crypto.SecretKey; Z [B Ljava.security.Provider;)Ljavax.crypto.Cipher;
okio.Buffer;->hmac(Ljava.lang.String; Lokio.ByteString;)Lokio.ByteString;
com.nimbusds.jose.crypto.RSA_OAEP_256;->decryptCEK(Ljava.security.PrivateKey; [B Ljava.security.Provider;)Ljavax.crypto.SecretKey;
com.nimbusds.jose.crypto.ContentCryptoProvider;->generateCEK(Lcom.nimbusds.jose.EncryptionMethod; Ljava.security.SecureRandom;)Ljavax.crypto.SecretKey;
com.nimbusds.jose.crypto.HMAC;->compute(Ljava.lang.String; [B [B Ljava.security.Provider;)[B
okio.HashingSource;->(Lokio.Source; Lokio.ByteString; Ljava.lang.String;)V
com.nimbusds.jose.crypto.LegacyConcatKDF;->generateCEK(Ljavax.crypto.SecretKey; Lcom.nimbusds.jose.EncryptionMethod; [B [B)Ljavax.crypto.SecretKey;
com.nimbusds.jose.crypto.AESEncrypter;->([B)V
okio.HashingSink;->(Lokio.Sink; Lokio.ByteString; Ljava.lang.String;)V
com.nimbusds.jose.crypto.PBKDF2;->deriveKey([B [B I Lcom.nimbusds.jose.crypto.PRFParams;)Ljavax.crypto.SecretKey;
com.nimbusds.jose.crypto.RSA_OAEP;->decryptCEK(Ljava.security.PrivateKey; [B Ljava.security.Provider;)Ljavax.crypto.SecretKey;
com.nimbusds.jose.crypto.AESGCMKW;->decryptCEK(Ljavax.crypto.SecretKey; [B Lcom.nimbusds.jose.crypto.AuthenticatedCipherText; I Ljava.security.Provider;)Ljavax.crypto.SecretKey;

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

应用证书