安全分析报告: Kredit Buddy v1.0.3

安全分数


安全分数 46/100

风险评级


等级

  1. A
  2. B
  3. C
  4. F

严重性分布 (%)


隐私风险

3

用户/设备跟踪器


调研结果

高危 4
中危 28
信息 1
安全 1
关注 2

高危 已启用远程WebView调试

已启用远程WebView调试
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x04c-Tampering-and-Reverse-Engineering.md#debugging-and-tracing

Files:
com/onesignal/inAppMessages/internal/display/impl/WebViewManager.java, line(s) 392,9

高危 WebView域控制不严格漏洞

WebView域控制不严格漏洞


Files:
com/kredit/buddy/personal/instant/loan/kreditbuddy/activity/PushNotificationActivity.java, line(s) 45,44,45,46,47,48,49,50,51,52,53
com/kredit/buddy/personal/instant/loan/kreditbuddy/activity/WebViewActivity.java, line(s) 62,58,59,61,62,63,64,65,66,67,68,69,70

高危 该文件是World Writable。任何应用程序都可以写入文件

该文件是World Writable。任何应用程序都可以写入文件
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x05d-Testing-Data-Storage.md#testing-local-storage-for-sensitive-data-mstg-storage-1-and-mstg-storage-2

Files:
com/kredit/buddy/personal/instant/loan/kreditbuddy/utils/SharedPref.java, line(s) 127,133,51,59,145

高危 该文件是World Readable。任何应用程序都可以读取文件

该文件是World Readable。任何应用程序都可以读取文件
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x05d-Testing-Data-Storage.md#testing-local-storage-for-sensitive-data-mstg-storage-1-and-mstg-storage-2

Files:
com/kredit/buddy/personal/instant/loan/kreditbuddy/utils/SharedPref.java, line(s) 77

中危 应用程序存在Janus漏洞

应用程序使用了v1签名方案进行签名,如果只使用v1签名方案,那么它就容易受到安卓5.0-8.0上的Janus漏洞的攻击。在安卓5.0-7.0上运行的使用了v1签名方案的应用程序,以及同时使用了v2/v3签名方案的应用程序也同样存在漏洞。

中危 应用程序可以安装在有漏洞的已更新 Android 版本上

Android 6.0-6.0.1, [minSdk=23]
该应用程序可以安装在具有多个未修复漏洞的旧版本 Android 上。这些设备不会从 Google 接收合理的安全更新。支持 Android 版本 => 10、API 29 以接收合理的安全更新。

中危 应用程序已启用明文网络流量

[android:usesCleartextTraffic=true]
应用程序打算使用明文网络流量,例如明文HTTP,FTP协议,DownloadManager和MediaPlayer。针对API级别27或更低的应用程序,默认值为“true”。针对API级别28或更高的应用程序,默认值为“false”。避免使用明文流量的主要原因是缺乏机密性,真实性和防篡改保护;网络攻击者可以窃听传输的数据,并且可以在不被检测到的情况下修改它。

中危 Service (com.kredit.buddy.personal.instant.loan.kreditbuddy.firebase.FirebaseNotificationService) 未被保护。

[android:exported=true]
发现 Service与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 Broadcast Receiver (com.kredit.buddy.personal.instant.loan.kreditbuddy.utils.MySMSBroadcastReceiver) 受权限保护, 但是应该检查权限的保护级别。

Permission: com.google.android.gms.auth.api.phone.permission.SEND [android:exported=true]
发现一个 Broadcast Receiver被共享给了设备上的其他应用程序,因此让它可以被设备上的任何其他应用程序访问。它受到一个在分析的应用程序中没有定义的权限的保护。因此,应该在定义它的地方检查权限的保护级别。如果它被设置为普通或危险,一个恶意应用程序可以请求并获得这个权限,并与该组件交互。如果它被设置为签名,只有使用相同证书签名的应用程序才能获得这个权限。

中危 Activity (com.kredit.buddy.personal.instant.loan.kreditbuddy.activity.PreApprovedOfferActivity) 未被保护。

[android:exported=true]
发现 Activity与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 Activity (com.kredit.buddy.personal.instant.loan.kreditbuddy.activity.CreditCardsOfferActivity) 未被保护。

[android:exported=true]
发现 Activity与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 Broadcast Receiver (com.onesignal.notifications.receivers.FCMBroadcastReceiver) 受权限保护, 但是应该检查权限的保护级别。

Permission: com.google.android.c2dm.permission.SEND [android:exported=true]
发现一个 Broadcast Receiver被共享给了设备上的其他应用程序,因此让它可以被设备上的任何其他应用程序访问。它受到一个在分析的应用程序中没有定义的权限的保护。因此,应该在定义它的地方检查权限的保护级别。如果它被设置为普通或危险,一个恶意应用程序可以请求并获得这个权限,并与该组件交互。如果它被设置为签名,只有使用相同证书签名的应用程序才能获得这个权限。

中危 Activity (com.onesignal.notifications.activities.NotificationOpenedActivityHMS) 未被保护。

[android:exported=true]
发现 Activity与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 Broadcast Receiver (com.onesignal.notifications.receivers.NotificationDismissReceiver) 未被保护。

[android:exported=true]
发现 Broadcast Receiver与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 Broadcast Receiver (com.onesignal.notifications.receivers.BootUpReceiver) 未被保护。

[android:exported=true]
发现 Broadcast Receiver与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 Broadcast Receiver (com.onesignal.notifications.receivers.UpgradeReceiver) 未被保护。

[android:exported=true]
发现 Broadcast Receiver与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 Activity (com.onesignal.notifications.activities.NotificationOpenedActivity) 未被保护。

[android:exported=true]
发现 Activity与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 Activity (com.onesignal.notifications.activities.NotificationOpenedActivityAndroid22AndOlder) 未被保护。

[android:exported=true]
发现 Activity与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 Broadcast Receiver (com.google.firebase.iid.FirebaseInstanceIdReceiver) 受权限保护, 但是应该检查权限的保护级别。

Permission: com.google.android.c2dm.permission.SEND [android:exported=true]
发现一个 Broadcast Receiver被共享给了设备上的其他应用程序,因此让它可以被设备上的任何其他应用程序访问。它受到一个在分析的应用程序中没有定义的权限的保护。因此,应该在定义它的地方检查权限的保护级别。如果它被设置为普通或危险,一个恶意应用程序可以请求并获得这个权限,并与该组件交互。如果它被设置为签名,只有使用相同证书签名的应用程序才能获得这个权限。

中危 Activity (com.google.firebase.auth.internal.GenericIdpActivity) 未被保护。

[android:exported=true]
发现 Activity与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 Activity (com.google.firebase.auth.internal.RecaptchaActivity) 未被保护。

[android:exported=true]
发现 Activity与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 Service (com.google.android.gms.auth.api.signin.RevocationBoundService) 受权限保护, 但是应该检查权限的保护级别。

Permission: com.google.android.gms.auth.api.signin.permission.REVOCATION_NOTIFICATION [android:exported=true]
发现一个 Service被共享给了设备上的其他应用程序,因此让它可以被设备上的任何其他应用程序访问。它受到一个在分析的应用程序中没有定义的权限的保护。因此,应该在定义它的地方检查权限的保护级别。如果它被设置为普通或危险,一个恶意应用程序可以请求并获得这个权限,并与该组件交互。如果它被设置为签名,只有使用相同证书签名的应用程序才能获得这个权限。

中危 Service (androidx.work.impl.background.systemjob.SystemJobService) 受权限保护, 但是应该检查权限的保护级别。

Permission: android.permission.BIND_JOB_SERVICE [android:exported=true]
发现一个 Service被共享给了设备上的其他应用程序,因此让它可以被设备上的任何其他应用程序访问。它受到一个在分析的应用程序中没有定义的权限的保护。因此,应该在定义它的地方检查权限的保护级别。如果它被设置为普通或危险,一个恶意应用程序可以请求并获得这个权限,并与该组件交互。如果它被设置为签名,只有使用相同证书签名的应用程序才能获得这个权限。

中危 Broadcast Receiver (androidx.work.impl.diagnostics.DiagnosticsReceiver) 受权限保护, 但是应该检查权限的保护级别。

Permission: android.permission.DUMP [android:exported=true]
发现一个 Broadcast Receiver被共享给了设备上的其他应用程序,因此让它可以被设备上的任何其他应用程序访问。它受到一个在分析的应用程序中没有定义的权限的保护。因此,应该在定义它的地方检查权限的保护级别。如果它被设置为普通或危险,一个恶意应用程序可以请求并获得这个权限,并与该组件交互。如果它被设置为签名,只有使用相同证书签名的应用程序才能获得这个权限。

中危 Service (com.google.android.play.core.assetpacks.AssetPackExtractionService) 未被保护。

[android:exported=true]
发现 Service与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

中危 高优先级的Intent (999)

[android:priority]
通过设置一个比另一个Intent更高的优先级,应用程序有效地覆盖了其他请求。

中危 不安全的Web视图实现。可能存在WebView任意代码执行漏洞

不安全的Web视图实现。可能存在WebView任意代码执行漏洞
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x05h-Testing-Platform-Interaction.md#testing-javascript-execution-in-webviews-mstg-platform-5

Files:
com/onesignal/inAppMessages/internal/display/impl/WebViewManager.java, line(s) 745,742
com/pierfrancescosoffritti/androidyoutubeplayer/core/player/views/WebViewYouTubePlayer.java, line(s) 53,46

中危 文件可能包含硬编码的敏感信息,如用户名、密码、密钥等

文件可能包含硬编码的敏感信息,如用户名、密码、密钥等
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x05d-Testing-Data-Storage.md#checking-memory-for-sensitive-data-mstg-storage-10

Files:
com/bumptech/glide/load/Option.java, line(s) 69
com/bumptech/glide/load/engine/DataCacheKey.java, line(s) 38
com/bumptech/glide/load/engine/EngineResource.java, line(s) 94
com/bumptech/glide/load/engine/ResourceCacheKey.java, line(s) 83
com/onesignal/inAppMessages/internal/display/impl/WebViewManager.java, line(s) 61,63,65,51
com/onesignal/inAppMessages/internal/prompt/InAppMessagePromptTypes.java, line(s) 10,12
com/onesignal/inAppMessages/internal/prompt/impl/InAppMessagePrompt.java, line(s) 40
com/onesignal/notifications/bridges/OneSignalHmsEventBridge.java, line(s) 25,27
com/onesignal/notifications/internal/Notification.java, line(s) 570
com/onesignal/notifications/internal/bundle/impl/NotificationBundleProcessor.java, line(s) 29
com/onesignal/notifications/internal/common/NotificationConstants.java, line(s) 29,17,19,21,23,25
com/onesignal/notifications/internal/common/NotificationHelper.java, line(s) 35
com/onesignal/notifications/receivers/FCMBroadcastReceiver.java, line(s) 22
io/grpc/internal/TransportFrameUtil.java, line(s) 80

中危 应用程序使用不安全的随机数生成器

应用程序使用不安全的随机数生成器
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x04g-Testing-Cryptography.md#weak-random-number-generators

Files:
com/kredit/buddy/personal/instant/loan/kreditbuddy/firebase/FirebaseNotificationService.java, line(s) 27
com/kredit/buddy/personal/instant/loan/kreditbuddy/network/ShowCustomNotificationAsync.java, line(s) 23
com/onesignal/common/AndroidUtils.java, line(s) 22
io/grpc/internal/DnsNameResolver.java, line(s) 31
io/grpc/internal/ExponentialBackoffPolicy.java, line(s) 5
io/grpc/internal/RetriableStream.java, line(s) 21
io/grpc/okhttp/OkHttpClientTransport.java, line(s) 64
io/grpc/util/RoundRobinLoadBalancer.java, line(s) 21

中危 应用程序使用SQLite数据库并执行原始SQL查询。原始SQL查询中不受信任的用户输入可能会导致SQL注入。敏感信息也应加密并写入数据库

应用程序使用SQLite数据库并执行原始SQL查询。原始SQL查询中不受信任的用户输入可能会导致SQL注入。敏感信息也应加密并写入数据库
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x04h-Testing-Code-Quality.md#injection-flaws-mstg-arch-2-and-mstg-platform-2

Files:
com/onesignal/core/internal/database/impl/OSDatabase.java, line(s) 7,8,9,10,11,388
com/onesignal/session/internal/outcomes/impl/OutcomeTableProvider.java, line(s) 3,4,17

中危 应用程序包含隐私跟踪程序

此应用程序有多个3隐私跟踪程序。跟踪器可以跟踪设备或用户,是终端用户的隐私问题。

中危 此应用可能包含硬编码机密信息

从应用程序中识别出以下机密确保这些不是机密或私人信息
"com.google.firebase.crashlytics.mapping_file_id" : "bc386185bb344735acb3d500a68ddedc"
"google_api_key" : "AIzaSyDSAmA-bvOqQLgnkmIAvaDzfS2wP38tz2o"
"google_crash_reporting_api_key" : "AIzaSyDSAmA-bvOqQLgnkmIAvaDzfS2wP38tz2o"
960b6800-8b43-4b98-b568-6e16d24809ed
c682b8144a8dd52bc1ad63
16a09e667f3bcc908b2fb1366ea957d3e3adec17512775099da2f590b0667322a

信息 应用程序记录日志信息,不得记录敏感信息

应用程序记录日志信息,不得记录敏感信息
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x05d-Testing-Data-Storage.md#logs

Files:
com/airbnb/lottie/LottieAnimationView.java, line(s) 572
com/airbnb/lottie/utils/LogcatLogger.java, line(s) 14,40,29
com/bumptech/glide/Glide.java, line(s) 249,258,207,248,255,208
com/bumptech/glide/gifdecoder/GifHeaderParser.java, line(s) 80,108,79,107
com/bumptech/glide/gifdecoder/StandardGifDecoder.java, line(s) 537,562,580,536,561,579
com/bumptech/glide/load/data/AssetPathFetcher.java, line(s) 50,49
com/bumptech/glide/load/data/HttpUrlFetcher.java, line(s) 70,83,191,69,82,190,194,200,207,204,208
com/bumptech/glide/load/data/LocalUriFetcher.java, line(s) 51,50
com/bumptech/glide/load/data/mediastore/ThumbFetcher.java, line(s) 114,113
com/bumptech/glide/load/data/mediastore/ThumbnailStreamOpener.java, line(s) 44,103,43,102
com/bumptech/glide/load/engine/DecodeJob.java, line(s) 326,341,448
com/bumptech/glide/load/engine/DecodePath.java, line(s) 51,52
com/bumptech/glide/load/engine/Engine.java, line(s) 24,182
com/bumptech/glide/load/engine/GlideException.java, line(s) 103
com/bumptech/glide/load/engine/SourceGenerator.java, line(s) 51,107,41,50,106,42
com/bumptech/glide/load/engine/bitmap_recycle/LruArrayPool.java, line(s) 110,147,111,148
com/bumptech/glide/load/engine/bitmap_recycle/LruBitmapPool.java, line(s) 134,174,184,199,92,133,143,163,173,183,198,215,222,98,144,216,223,164
com/bumptech/glide/load/engine/cache/DiskLruCacheWrapper.java, line(s) 38,44,73,83,39,74,45,86
com/bumptech/glide/load/engine/cache/MemorySizeCalculator.java, line(s) 117,96
com/bumptech/glide/load/engine/executor/GlideExecutor.java, line(s) 125,124
com/bumptech/glide/load/engine/prefill/BitmapPreFillRunner.java, line(s) 80,79
com/bumptech/glide/load/model/ByteBufferEncoder.java, line(s) 18,17
com/bumptech/glide/load/model/ByteBufferFileLoader.java, line(s) 47,46
com/bumptech/glide/load/model/FileLoader.java, line(s) 96,95
com/bumptech/glide/load/model/ResourceLoader.java, line(s) 76,77
com/bumptech/glide/load/model/StreamEncoder.java, line(s) 36,35
com/bumptech/glide/load/resource/DefaultOnHeaderDecodedListener.java, line(s) 79,80
com/bumptech/glide/load/resource/bitmap/BitmapEncoder.java, line(s) 80,79,89,103,104
com/bumptech/glide/load/resource/bitmap/BitmapImageDecoderResourceDecoder.java, line(s) 30,31
com/bumptech/glide/load/resource/bitmap/DefaultImageHeaderParser.java, line(s) 172,179,289,299,312,323,344,348,353,362,365,370,381,388,171,178,288,298,311,322,343,347,352,361,364,369,380,387
com/bumptech/glide/load/resource/bitmap/Downsampler.java, line(s) 98,213,380,97,203,212,313,348,379,204,314,453
com/bumptech/glide/load/resource/bitmap/DrawableToBitmapConverter.java, line(s) 40,45,41,46
com/bumptech/glide/load/resource/bitmap/HardwareConfigState.java, line(s) 89,121,126,131,136,141,148,153,158,122,127,132,137,142,149,154,159,90
com/bumptech/glide/load/resource/bitmap/TransformationUtils.java, line(s) 305,123,128,173,182,189,304,124,129,174,183,190,191,192,196
com/bumptech/glide/load/resource/bitmap/VideoDecoder.java, line(s) 173,172
com/bumptech/glide/load/resource/gif/ByteBufferGifDecoder.java, line(s) 88,93,98,113,89,94,99,114
com/bumptech/glide/load/resource/gif/GifDrawableEncoder.java, line(s) 23,24
com/bumptech/glide/load/resource/gif/StreamGifDecoder.java, line(s) 41,42
com/bumptech/glide/manager/DefaultConnectivityMonitorFactory.java, line(s) 23,17
com/bumptech/glide/manager/RequestManagerFragment.java, line(s) 138,139
com/bumptech/glide/manager/RequestManagerRetriever.java, line(s) 172,204,213,171,176,203,209,212,304,178,180,210,305
com/bumptech/glide/manager/RequestTracker.java, line(s) 87,88
com/bumptech/glide/manager/SingletonConnectivityReceiver.java, line(s) 116,90,115,137,158,91,138,159
com/bumptech/glide/manager/SupportRequestManagerFragment.java, line(s) 178,187,179,188
com/bumptech/glide/module/ManifestParser.java, line(s) 63,70,81,86,62,69,74,80,85,75
com/bumptech/glide/request/SingleRequest.java, line(s) 104,26,247,279
com/bumptech/glide/request/target/CustomViewTarget.java, line(s) 59,96,97,60
com/bumptech/glide/request/target/ViewTarget.java, line(s) 61,102,103,62
com/bumptech/glide/util/pool/FactoryPools.java, line(s) 43,44
com/kredit/buddy/personal/instant/loan/kreditbuddy/utils/AppLogger.java, line(s) 17,23,29
com/onesignal/common/AndroidSupportV4Compat.java, line(s) 74
com/onesignal/debug/internal/logging/Logging.java, line(s) 190,200,216,193,187,196
com/onesignal/notifications/internal/badges/impl/shortcutbadger/ShortcutBadger.java, line(s) 62,87,97,61,86,149,156,162
com/pierfrancescosoffritti/androidyoutubeplayer/core/ui/DefaultPlayerUiController.java, line(s) 343
com/pierfrancescosoffritti/androidyoutubeplayer/core/ui/menu/defaultMenu/DefaultYouTubePlayerMenu.java, line(s) 87
com/tomergoldst/tooltips/ToolTipsManager.java, line(s) 42,45

安全 此应用程序使用SSL Pinning 来检测或防止安全通信通道中的MITM攻击

此应用程序使用SSL Pinning 来检测或防止安全通信通道中的MITM攻击
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x05g-Testing-Network-Communication.md#testing-custom-certificate-stores-and-certificate-pinning-mstg-network-4

Files:
com/kredit/buddy/personal/instant/loan/kreditbuddy/network/APIClient.java, line(s) 37,39
io/grpc/util/AdvancedTlsX509TrustManager.java, line(s) 128,127,126,126,145

关注 应用程序可能与位于OFAC制裁国家 (China) 的服务器 (app-measurement.com) 通信。

{'ip': '180.163.150.161', 'country_short': 'CN', 'country_long': 'China', 'region': 'Shanghai', 'city': 'Shanghai', 'latitude': '31.224333', 'longitude': '121.469139'}

关注 应用程序可能与位于OFAC制裁国家 (China) 的服务器 (pagead2.googlesyndication.com) 通信。

{'ip': '180.163.150.38', 'country_short': 'CN', 'country_long': 'China', 'region': 'Shanghai', 'city': 'Shanghai', 'latitude': '31.224333', 'longitude': '121.469139'}

安全评分: ( Kredit Buddy 1.0.3)