安全分析报告: Load Shedding v1.2.25

安全分数


安全分数 50/100

风险评级


等级

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

严重性分布 (%)


隐私风险

4

用户/设备跟踪器


调研结果

高危 1
中危 24
信息 1
安全 1
关注 1

高危 已启用远程WebView调试

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

Files:
com/onesignal/q4.java, line(s) 523,12

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

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

中危 Broadcast Receiver (za.co.kwl.apps.loadshedding.receiver.BootCompleteReceiver) 未被保护。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

中危 高优先级的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:
c7/i.java, line(s) 9,10,11,12,13,211
com/onesignal/l3.java, line(s) 6,7,8,9,10,402
p0/a.java, line(s) 4,5,6,7,101
y6/k.java, line(s) 3,4,13
z1/m0.java, line(s) 6,7,89
z1/t0.java, line(s) 4,5,135

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

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

Files:
com/onesignal/OSUtils.java, line(s) 26
e6/d.java, line(s) 7
l2/t.java, line(s) 9
y8/a.java, line(s) 3
y8/b.java, line(s) 3
z8/a.java, line(s) 3

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

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


Files:
k0/b.java, line(s) 236
q5/c.java, line(s) 80

中危 不安全的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/q4.java, line(s) 439,438

中危 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:
q5/b.java, line(s) 55

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

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

Files:
com/dexterous/flutterlocalnotifications/FlutterLocalNotificationsPlugin.java, line(s) 115
com/dexterous/flutterlocalnotifications/models/NotificationDetails.java, line(s) 52,66
com/onesignal/h1.java, line(s) 22
com/onesignal/h4.java, line(s) 325
com/onesignal/q1.java, line(s) 762
x4/e.java, line(s) 79

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

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

Files:
i8/h.java, line(s) 108,130
i8/i.java, line(s) 98
j8/b.java, line(s) 72

中危 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:
t3/z0.java, line(s) 46

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

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

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

从应用程序中识别出以下机密确保这些不是机密或私人信息
AdMob广告平台的=> "com.google.android.gms.ads.APPLICATION_ID" : "ca-app-pub-8275837247859219~1611881177"
凭证信息=> "com.google.android.geo.API_KEY" : "AIzaSyBW-R4HYSHdFkZje3ENtkORV1lFxbja3pM"
"com.google.firebase.crashlytics.mapping_file_id" : "a43f9a70cfc845be8e781330e85537f3"
"google_api_key" : "AIzaSyBW-R4HYSHdFkZje3ENtkORV1lFxbja3pM"
"google_crash_reporting_api_key" : "AIzaSyBW-R4HYSHdFkZje3ENtkORV1lFxbja3pM"
5eb5a37e-b458-11e3-ac11-000c2940e62c
470fa2b4ae81cd56ecbcda9735803434cec591fa
b2f7f966-d8cc-11e4-bed1-df8f05be55ba
B3EEABB8EE11C2BE770B684D95219ECB
VGhpcyBpcyB0aGUgcHJlZml4IGZvciBCaWdJbnRlZ2Vy
c682b8144a8dd52bc1ad63

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

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

Files:
a4/e0.java, line(s) 25,58,34
a7/c.java, line(s) 68
b3/b.java, line(s) 63,76,52
b3/d.java, line(s) 86,99,124,172,187,282,84,98,123,167,186,277,120,136,148,194,215,256
b3/h.java, line(s) 15,12,12
b3/r.java, line(s) 40,81,141,36,79,94,136,185,209,234,265,95,186,210,235,266,48,176
b3/s.java, line(s) 25
b3/u.java, line(s) 35,49,27,41
b3/x.java, line(s) 63,58
b3/y.java, line(s) 53,36,73
b4/d.java, line(s) 80
c3/e.java, line(s) 112,158,165
c3/e0.java, line(s) 33,36,57
c3/i.java, line(s) 107,52,90,150,156,165,168
c3/j.java, line(s) 45,124
c3/j0.java, line(s) 58,60,54
c3/m.java, line(s) 26
c3/v.java, line(s) 49
c3/z.java, line(s) 70,88,92,120,127,53
c7/c0.java, line(s) 83,101,164,179,230,243,249,266,271,338,347,407,87,342
c7/e0.java, line(s) 25
c7/i.java, line(s) 156,217,225,269,342,419,459,529,660,240,442
c8/a.java, line(s) 15
com/baseflow/geolocator/GeolocatorLocationService.java, line(s) 116,130,133,145,150,180,190,197,203,208,219
com/baseflow/geolocator/b.java, line(s) 49
com/baseflow/geolocator/j.java, line(s) 275,263
com/baseflow/geolocator/m.java, line(s) 134,36,39,69,80,84,123
com/onesignal/JobIntentService.java, line(s) 203,208,246
com/onesignal/e3.java, line(s) 1992,1998,2014,1994,1990,1996
com/onesignal/f.java, line(s) 13
com/onesignal/flutter/f.java, line(s) 231
d3/i.java, line(s) 20
e/e.java, line(s) 1535,961,967,2019,2253,1594
e/g.java, line(s) 160
e/h.java, line(s) 49,59,74,84,101,113,125,134,147,161,173
e/j.java, line(s) 65,111
e0/a.java, line(s) 415
e3/l0.java, line(s) 49
f/a.java, line(s) 103
f3/a.java, line(s) 18
f3/a1.java, line(s) 28
f3/b1.java, line(s) 36
f3/c.java, line(s) 203,221,397,401,405,411
f3/c0.java, line(s) 98,101,105,109,113,117,126,130,133,136,168,176
f3/d1.java, line(s) 45
f3/f0.java, line(s) 26
f3/j0.java, line(s) 116,131,142,151
f3/j1.java, line(s) 53,58
f3/m1.java, line(s) 50
f3/w0.java, line(s) 35
f3/z0.java, line(s) 101
f4/a.java, line(s) 74,88,99,103
f8/a.java, line(s) 42
f8/d.java, line(s) 21
g0/a.java, line(s) 31
g1/b.java, line(s) 25
g1/c.java, line(s) 67,56
g4/a.java, line(s) 123,185,188,256,203,270
g8/d.java, line(s) 200
h2/a.java, line(s) 130,169,213
h2/d.java, line(s) 23,41,50,60
h7/b.java, line(s) 10,14,28,32
i/g.java, line(s) 153,186,263
i0/a.java, line(s) 166,171,178,182,198,208
i3/a.java, line(s) 57,68
i8/i.java, line(s) 142
j/c.java, line(s) 276
j3/h.java, line(s) 16
j3/s.java, line(s) 17,16
j3/t.java, line(s) 173,194,64,71,146,155,208
k0/a.java, line(s) 99,214,263,63,70,72,78,200,207,218,247,36,66,74,81,94,105,117,134,180
k0/b.java, line(s) 57,68,70,106,148,170,217,219,237,258,284,294,297,301,158,174,189,213,221,230,292
k1/j.java, line(s) 57,118
k4/e.java, line(s) 172,242,246,258
k8/l.java, line(s) 79
l1/b.java, line(s) 107,117,137
l8/a.java, line(s) 63,52
l8/b.java, line(s) 35,38
l8/c.java, line(s) 15,33,48
m3/i.java, line(s) 25
n1/a.java, line(s) 17
n1/n.java, line(s) 49,69,73,255,263,269,277
n1/o.java, line(s) 266,270,275
n1/p.java, line(s) 55
n2/n1.java, line(s) 11,17,19,28
n3/b.java, line(s) 36,100
o0/c.java, line(s) 41,29,33
p3/l.java, line(s) 52,58,70,103,110
p4/g.java, line(s) 34,41,44,53,87
p4/o.java, line(s) 128
q5/b.java, line(s) 59,76
r0/a.java, line(s) 81
r5/c.java, line(s) 95,98,120,128,129,150,156
s/d.java, line(s) 206
s1/k.java, line(s) 36,65,72,75,92,97,102,107,112
s4/f.java, line(s) 31,41,18,51,61,71
t3/b0.java, line(s) 21
t3/d1.java, line(s) 40
t3/g2.java, line(s) 299
t3/h0.java, line(s) 33
t3/l.java, line(s) 53,58,71,81
t3/n.java, line(s) 46,49,57,60,73,76
t3/o0.java, line(s) 52,57,63,193
t3/s1.java, line(s) 57,74,82,91
t3/u1.java, line(s) 21,23
v/f.java, line(s) 428
v0/j.java, line(s) 24,26,35,37,46,48,57,59,68,70
v1/a.java, line(s) 15,22,29,14,21,28,42,43,49,50
v4/m.java, line(s) 190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208
w5/e.java, line(s) 69
x/a.java, line(s) 96,99
z3/e.java, line(s) 39,64,74
z5/c.java, line(s) 24,28,32,36
za/co/kwl/apps/loadshedding/MainActivity.java, line(s) 33
za/co/kwl/apps/loadshedding/receiver/NotificationServiceExtension.java, line(s) 39

安全 此应用程序可能具有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:
v4/h.java, line(s) 81,81,82

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

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

安全评分: ( Load Shedding 1.2.25)