安全分析报告: 易医文库 v1.0.0

安全分数


安全分数 48/100

风险评级


等级

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

严重性分布 (%)


隐私风险

2

用户/设备跟踪器


调研结果

高危 2
中危 19
信息 2
安全 1
关注 0

高危 已启用远程WebView调试

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

Files:
com/onesignal/o3.java, line(s) 353,12

高危 如果一个应用程序使用WebView.loadDataWithBaseURL方法来加载一个网页到WebView,那么这个应用程序可能会遭受跨站脚本攻击

如果一个应用程序使用WebView.loadDataWithBaseURL方法来加载一个网页到WebView,那么这个应用程序可能会遭受跨站脚本攻击
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x05h-Testing-Platform-Interaction.md#static-analysis-7

Files:
com/pichillilorenzo/flutter_inappwebview/InAppWebViewMethodHandler.java, line(s) 1029,6
com/pichillilorenzo/flutter_inappwebview/in_app_browser/InAppBrowserActivity.java, line(s) 359,17,18
com/pichillilorenzo/flutter_inappwebview/in_app_webview/FlutterWebView.java, line(s) 150,10,11

中危 应用程序存在Janus漏洞

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

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

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

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

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

中危 应用程序数据存在被泄露的风险

未设置[android:allowBackup]标志
这个标志 [android:allowBackup]应该设置为false。默认情况下它被设置为true,允许任何人通过adb备份你的应用程序数据。它允许已经启用了USB调试的用户从设备上复制应用程序数据。

中危 Broadcast Receiver (io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingReceiver) 受权限保护, 但是应该检查权限的保护级别。

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

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

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

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

存在一个intent-filter。
发现 Activity与设备上的其他应用程序共享,因此让它可以被设备上的任何其他应用程序访问。intent-filter的存在表明这个Activity是显式导出的。

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

存在一个intent-filter。
发现 Broadcast Receiver与设备上的其他应用程序共享,因此让它可以被设备上的任何其他应用程序访问。intent-filter的存在表明这个Broadcast Receiver是显式导出的。

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

存在一个intent-filter。
发现 Broadcast Receiver与设备上的其他应用程序共享,因此让它可以被设备上的任何其他应用程序访问。intent-filter的存在表明这个Broadcast Receiver是显式导出的。

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

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

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

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

中危 高优先级的Intent (999)

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

中危 应用程序使用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:
b/p/a/g/a.java, line(s) 4,5,6,7,89
c/b/b/a/i/x/j/b0.java, line(s) 5,6,304
c/b/b/a/i/x/j/f0.java, line(s) 3,17
c/b/b/a/i/x/j/h0.java, line(s) 4,5,88
com/onesignal/j2.java, line(s) 6,7,8,9,10,474
com/onesignal/q3/i.java, line(s) 3,4,11
com/pichillilorenzo/flutter_inappwebview/credential_database/CredentialDatabaseHelper.java, line(s) 4,5,17

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

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

Files:
b/c/b/b.java, line(s) 10
com/onesignal/i3.java, line(s) 322
com/onesignal/w0.java, line(s) 20
com/pichillilorenzo/flutter_inappwebview/credential_database/URLCredentialContract.java, line(s) 7,9
com/pichillilorenzo/flutter_inappwebview/types/URLCredential.java, line(s) 88

中危 应用程序可以读取/写入外部存储器,任何应用程序都可以读取写入外部存储器的数据

应用程序可以读取/写入外部存储器,任何应用程序都可以读取写入外部存储器的数据
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x05d-Testing-Data-Storage.md#external-storage

Files:
b/h/e/a.java, line(s) 74
b/h/e/b.java, line(s) 201
io/flutter/plugins/f/h.java, line(s) 110,119
io/flutter/plugins/share/b.java, line(s) 66

中危 不安全的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/o3.java, line(s) 272,271

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

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

Files:
c/b/b/b/g/i/c.java, line(s) 17

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

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

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

从应用程序中识别出以下机密确保这些不是机密或私人信息
"firebase_database_url" : "https://flyweb-2020.firebaseio.com"
"google_api_key" : "AIzaSyDNKy8damDiZfaqCL6uZLBh0UmgluSDHC0"
"google_crash_reporting_api_key" : "AIzaSyDNKy8damDiZfaqCL6uZLBh0UmgluSDHC0"
b2f7f966-d8cc-11e4-bed1-df8f05be55ba
c682b8144a8dd52bc1ad63
5eb5a37e-b458-11e3-ac11-000c2940e62c
VGhpcyBpcyB0aGUgcHJlZml4IGZvciBCaWdJbnRlZ2Vy

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

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

Files:
b/a/k/a/a.java, line(s) 96
b/a/n/g.java, line(s) 117,150,227
b/h/e/a.java, line(s) 39
b/h/e/d/a.java, line(s) 41
b/h/e/d/b.java, line(s) 62
b/h/e/d/f.java, line(s) 187,200,211,82,91
b/h/f/c.java, line(s) 403,408
b/h/f/e.java, line(s) 75
b/h/f/f.java, line(s) 36,68
b/h/f/g.java, line(s) 48,106
b/h/f/j.java, line(s) 89,92
b/h/f/k.java, line(s) 91
b/h/j/f.java, line(s) 21
b/h/l/b.java, line(s) 35,47,59,73
b/h/m/b.java, line(s) 16
b/h/n/a0.java, line(s) 62,74,81,90
b/h/n/b.java, line(s) 55
b/h/n/b0/c.java, line(s) 143
b/h/n/f.java, line(s) 18,27
b/h/n/h.java, line(s) 13
b/h/n/s.java, line(s) 580
b/h/n/t.java, line(s) 18,29
b/h/n/v.java, line(s) 19,34,53,78,97,116,137
b/j/b/c.java, line(s) 392
b/l/a/a.java, line(s) 28
b/m/a/b.java, line(s) 30,39,64
b/n/a/a.java, line(s) 151,156,163,167,183,193
b/p/a/c.java, line(s) 32,35,47,25,39
b/q/b/c.java, line(s) 593,814,827,846
b/r/i0.java, line(s) 28,81
b/r/y.java, line(s) 33,42,44,81,94
b/s/a/a/h.java, line(s) 942
c/b/b/a/i/v/a.java, line(s) 6,10,14,22,26
c/b/b/b/b/a.java, line(s) 143
c/b/b/b/c/b.java, line(s) 25,41,67
c/b/b/b/c/d.java, line(s) 52,102,116,142,213,228,47,100,114,140,208,227,137,155,167,172,184
c/b/b/b/c/e.java, line(s) 21,20,20
c/b/b/b/c/i.java, line(s) 47,42
c/b/b/b/c/j.java, line(s) 89,128,170,84,126,148,166,198,242,258,297,149,199,243,259,298,118,178
c/b/b/b/c/s.java, line(s) 22
c/b/b/b/c/u.java, line(s) 28,42,20,34
c/b/b/b/c/v.java, line(s) 39,27,58
c/b/b/b/d/e.java, line(s) 50,63,68,167
c/b/b/b/d/j.java, line(s) 80,46,163,177,182,185
c/b/b/b/d/k.java, line(s) 34
c/b/b/b/d/q/a.java, line(s) 40,45
c/b/b/b/d/u.java, line(s) 11
c/b/b/b/d/v.java, line(s) 41
c/b/b/b/g/c/a6.java, line(s) 173
c/b/b/b/g/c/c.java, line(s) 58
c/b/b/b/g/c/f.java, line(s) 135
c/b/b/b/g/c/k.java, line(s) 16,35
c/b/b/b/g/c/l.java, line(s) 16
c/b/b/b/g/c/m.java, line(s) 25,49
c/b/b/b/g/c/m5.java, line(s) 47
c/b/b/b/g/c/w5.java, line(s) 69,87,91
c/b/b/b/g/f/o.java, line(s) 14
c/b/b/b/g/h/t.java, line(s) 26
c/b/b/b/g/i/c.java, line(s) 166,133,121,130,139,212,218
c/b/b/b/g/i/f.java, line(s) 65
c/b/b/b/g/i/m0.java, line(s) 18
c/b/b/b/g/l/d6.java, line(s) 43,81,86,89
c/b/b/b/g/l/f.java, line(s) 63
c/b/b/b/g/l/g5.java, line(s) 56,71
c/b/b/b/g/l/i.java, line(s) 16
c/b/b/b/j/b/a.java, line(s) 90,101,115,119
c/b/b/b/k/a.java, line(s) 100,136,75
c/b/b/b/m/c.java, line(s) 9,16,27,34,8,15,23,24,40,41,47,48
c/b/b/c/l/h.java, line(s) 48
c/b/b/c/n/a.java, line(s) 187
c/b/b/c/w/d.java, line(s) 135,168
c/b/b/c/x/b.java, line(s) 25
c/b/b/c/z/g.java, line(s) 395
c/d/a/a.java, line(s) 169,158
c/d/a/c.java, line(s) 70,59
c/d/a/d.java, line(s) 26,15
com/amolg/flutterbarcodescanner/BarcodeCaptureActivity.java, line(s) 266,279
com/amolg/flutterbarcodescanner/FlutterBarcodeScannerPlugin.java, line(s) 158,173,266
com/amolg/flutterbarcodescanner/camera/CameraSourcePreview.java, line(s) 68,35,39,162,166
com/baseflow/location_permissions/LocationPermissionsPlugin.java, line(s) 80,83,182,185,259,275,278,343,165,270
com/onesignal/JobIntentService.java, line(s) 192,197,235
com/onesignal/a2.java, line(s) 1574,1580,1594,1576,1572,1578
com/onesignal/flutter/f.java, line(s) 177
com/onesignal/g.java, line(s) 12
com/onesignal/r3/c.java, line(s) 61
com/pichillilorenzo/flutter_inappwebview/JavaScriptBridgeInterface.java, line(s) 76
com/pichillilorenzo/flutter_inappwebview/ServiceWorkerManager.java, line(s) 47
com/pichillilorenzo/flutter_inappwebview/Util.java, line(s) 206,190
com/pichillilorenzo/flutter_inappwebview/chrome_custom_tabs/CustomTabsHelper.java, line(s) 82
com/pichillilorenzo/flutter_inappwebview/content_blocker/ContentBlockerHandler.java, line(s) 207,272
com/pichillilorenzo/flutter_inappwebview/in_app_browser/InAppBrowserActivity.java, line(s) 272,353
com/pichillilorenzo/flutter_inappwebview/in_app_browser/InAppBrowserManager.java, line(s) 126
com/pichillilorenzo/flutter_inappwebview/in_app_webview/DisplayListenerProxy.java, line(s) 38
com/pichillilorenzo/flutter_inappwebview/in_app_webview/FlutterWebView.java, line(s) 49,140
com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebView.java, line(s) 1280
com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebViewChromeClient.java, line(s) 1032,1056,213,546,589,641,696,756,817,885,948
com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebViewClient.java, line(s) 130,219,314,399,454,535,568,629
com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebViewRenderProcessClient.java, line(s) 35,67
com/pichillilorenzo/flutter_inappwebview/in_app_webview/InputAwareWebView.java, line(s) 60,68,96,143
d/a/b.java, line(s) 9,13,20,24
io/flutter/plugins/a/b.java, line(s) 53,74,22,65,71
io/flutter/plugins/a/c.java, line(s) 181,170
io/flutter/plugins/d/k.java, line(s) 56
io/flutter/plugins/d/l.java, line(s) 161
io/flutter/plugins/d/o.java, line(s) 22
io/flutter/plugins/d/p.java, line(s) 96,123
io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingBackgroundService.java, line(s) 20,57,71,40,51
io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingReceiver.java, line(s) 14
io/flutter/plugins/firebase/messaging/n.java, line(s) 13
io/flutter/plugins/firebase/messaging/o.java, line(s) 126,163,76,79,118
io/flutter/plugins/h/a.java, line(s) 74
io/flutter/plugins/h/e.java, line(s) 259
io/flutter/plugins/h/g.java, line(s) 51,59,79,107
io/flutter/plugins/urllauncher/a.java, line(s) 58,47
io/flutter/plugins/urllauncher/c.java, line(s) 12,30,45

信息 此应用程序将数据复制到剪贴板。敏感数据不应复制到剪贴板,因为其他应用程序可以访问它

此应用程序将数据复制到剪贴板。敏感数据不应复制到剪贴板,因为其他应用程序可以访问它
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x04b-Mobile-App-Security-Testing.md#clipboard

Files:
io/flutter/plugin/editing/b.java, line(s) 4,68,77
io/flutter/plugin/platform/d.java, line(s) 6,197

安全 此应用程序使用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:
h/k0/e.java, line(s) 90,89,88,88

安全评分: ( 易医文库 1.0.0)