安全分析报告: Whisper v1.3.3

安全分数


安全分数 52/100

风险评级


等级

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

严重性分布 (%)


隐私风险

3

用户/设备跟踪器


调研结果

高危 2
中危 14
信息 1
安全 2
关注 1

高危 App 链接 assetlinks.json 文件未找到

[android:name=com.example.whisperai.MainActivity][android:host=http://www.example.com]
App Link 资产验证 URL (http://www.example.com/.well-known/assetlinks.json) 未找到或配置不正确。(状态代码:404)。应用程序链接允许用户从 Web URL/电子邮件重定向到移动应用程序。如果此文件丢失或为 App Link 主机/域配置不正确,则恶意应用程序可以劫持此类 URL。这可能会导致网络钓鱼攻击,泄露 URI 中的敏感数据,例如 PII、OAuth 令牌、魔术链接/密码重置令牌等。您必须通过托管 assetlinks.json 文件并通过 Activity intent-filter 中的 [android:autoVerify=“true”] 启用验证来验证 App Link 网域。

高危 如果一个应用程序使用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) 1100,7
com/pichillilorenzo/flutter_inappwebview/in_app_browser/InAppBrowserActivity.java, line(s) 390,18,19
com/pichillilorenzo/flutter_inappwebview/in_app_webview/FlutterWebView.java, line(s) 152,11,12

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

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

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

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

中危 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被共享给了设备上的其他应用程序,因此让它可以被设备上的任何其他应用程序访问。它受到一个在分析的应用程序中没有定义的权限的保护。因此,应该在定义它的地方检查权限的保护级别。如果它被设置为普通或危险,一个恶意应用程序可以请求并获得这个权限,并与该组件交互。如果它被设置为签名,只有使用相同证书签名的应用程序才能获得这个权限。

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

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

Files:
a7/a.java, line(s) 3
com/amazon/a/a/b/b.java, line(s) 17
com/amazon/a/a/i/b.java, line(s) 7
com/amazon/a/a/l/c.java, line(s) 7
h2/t.java, line(s) 9
z6/a.java, line(s) 3
z6/b.java, line(s) 3

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

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

Files:
com/pichillilorenzo/flutter_inappwebview/credential_database/URLCredentialContract.java, line(s) 8,10
com/pichillilorenzo/flutter_inappwebview/types/URLCredential.java, line(s) 89
com/revenuecat/purchases/amazon/AmazonBillingKt.java, line(s) 4
com/revenuecat/purchases/amazon/AmazonCacheKt.java, line(s) 4
com/revenuecat/purchases/common/BackendKt.java, line(s) 5,4
com/revenuecat/purchases/common/caching/DeviceCache.java, line(s) 59
com/revenuecat/purchases/common/diagnostics/DiagnosticsEntry.java, line(s) 35,145,277,148,38,280,151,17,41,283,19
com/revenuecat/purchases/common/diagnostics/DiagnosticsSynchronizer.java, line(s) 14
com/revenuecat/purchases/common/diagnostics/DiagnosticsTracker.java, line(s) 20
com/revenuecat/purchases/strings/ConfigureStrings.java, line(s) 14
com/revenuecat/purchases/subscriberattributes/SubscriberAttribute.java, line(s) 165
com/revenuecat/purchases/subscriberattributes/SubscriberAttributeKt.java, line(s) 7
j4/e.java, line(s) 79

中危 应用程序创建临时文件。敏感信息永远不应该被写进临时文件

应用程序创建临时文件。敏感信息永远不应该被写进临时文件


Files:
a5/c.java, line(s) 80
h5/c.java, line(s) 32

中危 应用程序使用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/pichillilorenzo/flutter_inappwebview/credential_database/CredentialDatabaseHelper.java, line(s) 4,5,18
p0/a.java, line(s) 4,5,6,7,96
v1/m0.java, line(s) 5,6,253
v1/t0.java, line(s) 4,5,135

中危 SHA-1是已知存在哈希冲突的弱哈希

SHA-1是已知存在哈希冲突的弱哈希
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x04g-Testing-Cryptography.md#identifying-insecure-andor-deprecated-cryptographic-algorithms-mstg-crypto-4

Files:
a5/b.java, line(s) 56
com/amazon/a/a/o/b/a.java, line(s) 71
com/revenuecat/purchases/common/UtilsKt.java, line(s) 30

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

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

Files:
com/mr/flutter/plugin/filepicker/b.java, line(s) 246
com/mr/flutter/plugin/filepicker/c.java, line(s) 94
h1/a.java, line(s) 64,74
h6/h.java, line(s) 108,130
h6/i.java, line(s) 98

中危 MD5是已知存在哈希冲突的弱哈希

MD5是已知存在哈希冲突的弱哈希
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x04g-Testing-Cryptography.md#identifying-insecure-andor-deprecated-cryptographic-algorithms-mstg-crypto-4

Files:
m3/z0.java, line(s) 46

中危 IP地址泄露

IP地址泄露


Files:
com/amazon/device/drm/LicensingService.java, line(s) 10,11,15
com/amazon/device/iap/PurchasingService.java, line(s) 16,17

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

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

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

从应用程序中识别出以下机密确保这些不是机密或私人信息
AdMob广告平台的=> "com.google.android.gms.ads.APPLICATION_ID" : "ca-app-pub-2737102509284323~1122342887"
"com.google.firebase.crashlytics.mapping_file_id" : "fbe1b5e275d24eeca646ccbaf3f3a55a"
"google_api_key" : "AIzaSyCgSH5MPwIOMZZyR42GhplITKbU9SL-g98"
"google_crash_reporting_api_key" : "AIzaSyCgSH5MPwIOMZZyR42GhplITKbU9SL-g98"
470fa2b4ae81cd56ecbcda9735803434cec591fa
B3EEABB8EE11C2BE770B684D95219ECB
VGhpcyBpcyB0aGUgcHJlZml4IGZvciBCaWdJbnRlZ2Vy

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

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

Files:
a3/a.java, line(s) 18
a3/a0.java, line(s) 98,101,105,109,113,117,129,133,136,139,171,176
a3/c.java, line(s) 207,225,377,381,385,391
a3/d0.java, line(s) 26
a3/f1.java, line(s) 53,58
a3/i1.java, line(s) 50
a3/s0.java, line(s) 35
a3/v0.java, line(s) 101
a3/w0.java, line(s) 28
a3/x0.java, line(s) 36
a3/z0.java, line(s) 45
a5/b.java, line(s) 60,77
b4/g.java, line(s) 34,41,44,53,87
b4/o.java, line(s) 128
b5/c.java, line(s) 95,98,120,128,129,150,156
com/amazon/a/a/g/d.java, line(s) 19,29,39
com/amazon/a/a/o/c.java, line(s) 35,41,47,53,59
com/amazon/c/a/a/d.java, line(s) 53,57
com/amazon/device/drm/LicensingService.java, line(s) 15
com/amazon/device/drm/a/d/c.java, line(s) 40,55
com/amazon/device/iap/PurchasingService.java, line(s) 31
com/amazon/device/iap/internal/c/e.java, line(s) 190,197,253,288,300,327,359,386,91,101,304
com/amazon/device/simplesignin/BroadcastHandler.java, line(s) 17
com/amazon/device/simplesignin/SimpleSignInService.java, line(s) 17
com/amazon/device/simplesignin/a/c/b.java, line(s) 178,49,78,81,102,127,159,185,216,238,257,279,87,96,121,151,191,223,244,264
com/mr/flutter/plugin/filepicker/b.java, line(s) 88,96,116,133,247,263,284
com/mr/flutter/plugin/filepicker/c.java, line(s) 141,269,39,83,201,205,210,265,218,136
com/pichillilorenzo/flutter_inappwebview/JavaScriptBridgeInterface.java, line(s) 78
com/pichillilorenzo/flutter_inappwebview/ServiceWorkerManager.java, line(s) 69
com/pichillilorenzo/flutter_inappwebview/Util.java, line(s) 272,227,245,254
com/pichillilorenzo/flutter_inappwebview/chrome_custom_tabs/CustomTabsHelper.java, line(s) 85
com/pichillilorenzo/flutter_inappwebview/content_blocker/ContentBlockerHandler.java, line(s) 204,266
com/pichillilorenzo/flutter_inappwebview/in_app_browser/InAppBrowserActivity.java, line(s) 293,386
com/pichillilorenzo/flutter_inappwebview/in_app_browser/InAppBrowserManager.java, line(s) 152
com/pichillilorenzo/flutter_inappwebview/in_app_webview/DisplayListenerProxy.java, line(s) 40
com/pichillilorenzo/flutter_inappwebview/in_app_webview/FlutterWebView.java, line(s) 141
com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebView.java, line(s) 1118
com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebViewChromeClient.java, line(s) 1098,1110,1143,1155,234,599,642,696,751,811,872,939,1001
com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebViewClient.java, line(s) 117,205,250,348,413,509,560,641,674,735
com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebViewRenderProcessClient.java, line(s) 37,69
com/pichillilorenzo/flutter_inappwebview/in_app_webview/InputAwareWebView.java, line(s) 60,68,76,101,148
com/revenuecat/purchases/CustomerInfoHelper$getCustomerInfoFetchOnly$2.java, line(s) 55
com/revenuecat/purchases/common/DefaultLogHandler.java, line(s) 12,20,22,30,37,44
com/revenuecat/purchases/hybridcommon/mappers/PurchasesPeriod.java, line(s) 44
d0/a.java, line(s) 387,1035,1057,1212,1215,1224,1230,1268,1289,1296,1312,1324,1348,1375,1391,1396,1403,1473,1483,1501,1532,1593,1629,1708,1768,1860,1871,1894,1901,2084,2136,2157,2170,2202,2228,2299,2344,2349,2355,2419,696,704,738,750,762,774,786,798,810,822,834,841,852,864,129,847,1104,1673,1687,2048,2312,2316,2320,2599
d2/a.java, line(s) 130,169,213
d2/d.java, line(s) 23,41,50,60
d3/a.java, line(s) 57,68
e3/g.java, line(s) 16
e3/r.java, line(s) 17,16
e4/f.java, line(s) 31,41,18,51,61,71
f6/a.java, line(s) 42
f6/d.java, line(s) 21
g0/a.java, line(s) 31
g6/d.java, line(s) 200
h1/a.java, line(s) 106,280,287
h1/c.java, line(s) 39,44,90
h3/b.java, line(s) 36,100
h4/m.java, line(s) 189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207
h5/a.java, line(s) 278
h5/b.java, line(s) 177,191,278
h6/i.java, line(s) 142
i6/l.java, line(s) 79
j1/e.java, line(s) 59
j1/q.java, line(s) 546,461,524,871
j2/n1.java, line(s) 11,17,19,28
j3/l.java, line(s) 52,58,70,103,110
j5/d.java, line(s) 115,123,129,27,32,42,48,49,51,71,83,92,106,121,137,146,157,197,54,75,86
j6/a.java, line(s) 61,50
j6/b.java, line(s) 35,38
j6/c.java, line(s) 15,33,48
l5/b.java, line(s) 10,14,28,32
m3/b0.java, line(s) 21
m3/d1.java, line(s) 40
m3/g2.java, line(s) 299
m3/h0.java, line(s) 33
m3/l.java, line(s) 53,58,71,81
m3/n.java, line(s) 46,49,57,60,73,76
m3/o0.java, line(s) 52,57,63,193
m3/s1.java, line(s) 57,74,82,91
m3/u1.java, line(s) 21,23
o/d.java, line(s) 206
o0/c.java, line(s) 41,29,33
o1/k.java, line(s) 36,65,72,75,92,97,102,107,112
r/f.java, line(s) 428
r1/a.java, line(s) 15,22,29,14,21,28,42,43,49,50
r3/a.java, line(s) 80,84
s0/a.java, line(s) 81
t/a.java, line(s) 96,99
u3/i.java, line(s) 31,22,38,45,30,37,44,51,52,58,59
w0/j.java, line(s) 24,26,35,37,46,48,57,59,68,70
x2/e.java, line(s) 110,156,163
x2/e0.java, line(s) 33,36,57
x2/i.java, line(s) 92,37,75,135,141,150,153
x2/j.java, line(s) 45,124
x2/j0.java, line(s) 58,60,54
x2/m.java, line(s) 29
x2/v.java, line(s) 39
x2/z.java, line(s) 70,88,92,120,127,53
y/c.java, line(s) 140
y3/e.java, line(s) 171,241,245,257
z2/z.java, line(s) 51

安全 此应用程序可能具有Root检测功能

此应用程序可能具有Root检测功能
https://github.com/MobSF/owasp-mstg/blob/master/Document/0x05j-Testing-Resiliency-Against-Reverse-Engineering.md#testing-root-detection-mstg-resilience-1

Files:
h4/h.java, line(s) 81,81,82
u3/w.java, line(s) 24

安全 此应用程序使用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/amazon/a/a/o/b/a.java, line(s) 41,39,38,38
p7/e.java, line(s) 109,108,107,107

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

{'ip': '180.163.150.34', 'country_short': 'CN', 'country_long': '中国', 'region': '上海', 'city': '上海', 'latitude': '31.224333', 'longitude': '121.468948'}

安全评分: ( Whisper 1.3.3)