安全分析报告: Settings v1

安全分数


安全分数 46/100

风险评级


等级

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

严重性分布 (%)


隐私风险

1

用户/设备跟踪器


调研结果

高危 5
中危 28
信息 2
安全 2
关注 0

高危 Activity (com.google.firebase.auth.internal.GenericIdpActivity) 的启动模式不是standard模式

Activity 不应将启动模式属性设置为 "singleTask/singleInstance",因为这会使其成为根 Activity,并可能导致其他应用程序读取调用 Intent 的内容。因此,当 Intent 包含敏感信息时,需要使用 "standard" 启动模式属性。

高危 Activity (com.google.firebase.auth.internal.GenericIdpActivity) 容易受到StrandHogg 2.0的攻击

已发现活动存在 StrandHogg 2.0 栈劫持漏洞的风险。漏洞利用时,其他应用程序可以将恶意活动放置在易受攻击的应用程序的活动栈顶部,从而使应用程序成为网络钓鱼攻击的易受攻击目标。可以通过将启动模式属性设置为“singleInstance”并设置空 taskAffinity (taskAffinity="") 来修复此漏洞。您还可以将应用的目标 SDK 版本 (28) 更新到 29 或更高版本以在平台级别修复此问题。

高危 Activity (com.google.firebase.auth.internal.RecaptchaActivity) 的启动模式不是standard模式

Activity 不应将启动模式属性设置为 "singleTask/singleInstance",因为这会使其成为根 Activity,并可能导致其他应用程序读取调用 Intent 的内容。因此,当 Intent 包含敏感信息时,需要使用 "standard" 启动模式属性。

高危 Activity (com.google.firebase.auth.internal.RecaptchaActivity) 容易受到StrandHogg 2.0的攻击

已发现活动存在 StrandHogg 2.0 栈劫持漏洞的风险。漏洞利用时,其他应用程序可以将恶意活动放置在易受攻击的应用程序的活动栈顶部,从而使应用程序成为网络钓鱼攻击的易受攻击目标。可以通过将启动模式属性设置为“singleInstance”并设置空 taskAffinity (taskAffinity="") 来修复此漏洞。您还可以将应用的目标 SDK 版本 (28) 更新到 29 或更高版本以在平台级别修复此问题。

高危 SSL的不安全实现。信任所有证书或接受自签名证书是一个关键的安全漏洞。此应用程序易受MITM攻击

SSL的不安全实现。信任所有证书或接受自签名证书是一个关键的安全漏洞。此应用程序易受MITM攻击
https://github.com/OWASP/owasp-mstg/blob/master/Document/0x05g-Testing-Network-Communication.md#android-network-apis

Files:
q4/c.java, line(s) 22,23,3

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

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

中危 应用程序数据可以被备份

[android:allowBackup=true]
这个标志允许任何人通过adb备份你的应用程序数据。它允许已经启用了USB调试的用户从设备上复制应用程序数据。

中危 Content Provider (wosc.play.artefactos.ContentProvider) 未被保护。

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

中危 Activity-Alias (wosc.play.Launcher) 未被保护。

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

中危 Broadcast Receiver (wosc.play.detectores.DetectaNuevaFoto) 未被保护。

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

中危 Broadcast Receiver (wosc.play.detectores.DetectaLlamadas) 未被保护。

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

中危 Broadcast Receiver (wosc.play.detectores.DetectaPowerON) 未被保护。

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

中危 Broadcast Receiver (wosc.play.detectores.DetectaPowerOFF) 未被保护。

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

中危 Broadcast Receiver (wosc.play.detectores.MyDeviceAdminReceiver) 受权限保护, 但是应该检查权限的保护级别。

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

中危 Broadcast Receiver (wosc.play.detectores.DetectaUnlockPhone) 未被保护。

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

中危 Broadcast Receiver (wosc.play.detectores.DetectaGpsOnOff) 未被保护。

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

中危 Service (wosc.play.fcm.MyFirebaseMessagingService) 未被保护。

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

中危 Service (wosc.play.servicios.GpsService) 未被保护。

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

中危 Service (wosc.play.servicios.NewPicture_JobService) 受权限保护, 但是应该检查权限的保护级别。

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

中危 Service (wosc.play.servicios.AccesibilidadService) 受权限保护, 但是应该检查权限的保护级别。

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

中危 Service (wosc.play.detectores.DetectaNotificaciones) 受权限保护, 但是应该检查权限的保护级别。

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

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

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

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

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

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

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

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

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

Files:
g4/a.java, line(s) 3
k4/j.java, line(s) 3
o5/c.java, line(s) 5
org/jsoup/helper/DataUtil.java, line(s) 14
q4/i.java, line(s) 9
wosc/play/artefactos/e.java, line(s) 21
wosc/play/dominio/j.java, line(s) 20

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

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

Files:
wosc/play/artefactos/f.java, line(s) 28

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

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

Files:
d4/p.java, line(s) 6,7,8,9,133,638
s1/m0.java, line(s) 5,6,68,102,121,130,180,291,308,742
s1/t0.java, line(s) 4,5,136

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

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

Files:
wosc/play/webservice/a.java, line(s) 543

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

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

Files:
wosc/play/artefactos/d.java, line(s) 44,47,66
wosc/play/dominio/j.java, line(s) 66,72

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

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


Files:
f5/c.java, line(s) 80
u0/b.java, line(s) 117

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

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

Files:
f5/b.java, line(s) 55
k4/m.java, line(s) 134

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

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

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

从应用程序中识别出以下机密确保这些不是机密或私人信息
"firebase_database_url" : "https://catwatchful-e03b8-2.firebaseio.com"
"google_api_key" : "AIzaSyBUbLfoHmVON_PyJYnJQ3T3m9qZJ8bJZ4M"
"google_app_id" : "1:290254967732:android:1be5a596e0649f3e"
"google_crash_reporting_api_key" : "AIzaSyBUbLfoHmVON_PyJYnJQ3T3m9qZJ8bJZ4M"
L1doYXRzYXBwIERvY3VtZW50cy9Qcml2YXRl
ABCDEF012GHIJKL345MNOPQR678STUVWXYZ9
L0FuZHJvaWQvbWVkaWEvY29tLndoYXRzYXBwL1doYXRzYXBwL01lZGlh

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

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

Files:
a0/a.java, line(s) 95,104,162,172
a0/e.java, line(s) 36,68
a2/e.java, line(s) 115,161,168
a2/i.java, line(s) 84,37,67,127,133,142,145
a2/l.java, line(s) 29
a4/g0.java, line(s) 38,56,65,72,83
a4/l0.java, line(s) 94
a4/q.java, line(s) 61
b4/g.java, line(s) 34,41,44,53,87
b4/o.java, line(s) 128
c3/h.java, line(s) 51
d/a.java, line(s) 102
d0/h.java, line(s) 23
d2/c.java, line(s) 37,43,32,49,55
d2/g0.java, line(s) 53,58
d2/u.java, line(s) 26
d4/o.java, line(s) 81,82,83
f0/b.java, line(s) 36,48,60,74
f5/b.java, line(s) 59,76
g/g.java, line(s) 152,185,262
g2/a.java, line(s) 42,46,35,62,67,71,75
g5/c.java, line(s) 95,98,120,128,129,150,156
h/c.java, line(s) 277
h0/c.java, line(s) 164
h2/a.java, line(s) 57,68
i2/f.java, line(s) 13
i2/k.java, line(s) 17,16
i2/l.java, line(s) 107,52,59,80,89
i6/c.java, line(s) 14
k4/m.java, line(s) 93
l0/c.java, line(s) 418
l1/e.java, line(s) 36,65,72,75,92,97,102,107,112
l4/a.java, line(s) 243
m0/a.java, line(s) 255,824,1025,789,803,1039,1222
m2/b.java, line(s) 36,100
n5/e.java, line(s) 19,22
o1/a.java, line(s) 15,22,29,14,21,28,42,43,49,50
o4/a.java, line(s) 19,24,29,34
o5/a.java, line(s) 86
o5/b.java, line(s) 30,37
o5/c.java, line(s) 65,67,83
o5/i.java, line(s) 28,39,24,47,63,74,81
p/d.java, line(s) 208
p0/a.java, line(s) 31
p3/d.java, line(s) 157,190
p5/d.java, line(s) 242,257,134,173,321,241,256,67,88,93,260
q3/b.java, line(s) 86
s3/g.java, line(s) 434
t0/a.java, line(s) 139,144,151,155,171,181
u0/a.java, line(s) 233,352,408,197,204,206,212,334,345,356,392,110,141,200,208,215,228,239,251,268,314
u0/b.java, line(s) 58,69,71,98,100,118,139,179,221,243,292,302,305,309,94,102,111,231,247,262,300
w0/a.java, line(s) 36
w1/a.java, line(s) 125,161
w1/d.java, line(s) 23,41,50,60
w3/e.java, line(s) 284,223,227,239
wosc/play/WakeUp.java, line(s) 48,72,108,166,181,185,204,212,219,259,301
wosc/play/activitys/ActivityInicio.java, line(s) 56
wosc/play/activitys/ActivityLogin.java, line(s) 138,142
wosc/play/activitys/ActivityPermisos.java, line(s) 399
wosc/play/activitys/fragmentos/b.java, line(s) 60
wosc/play/artefactos/ScreenCapture.java, line(s) 75,51,68,175,180,183,224,250,254
wosc/play/artefactos/Superponer.java, line(s) 41,33,57,137,150,176
wosc/play/artefactos/b.java, line(s) 45,36,52,58,103
wosc/play/artefactos/d.java, line(s) 43,74,83,206,219,236
wosc/play/artefactos/e.java, line(s) 161,170,193,202,47,209
wosc/play/artefactos/g.java, line(s) 25,29,32,57,90,94
wosc/play/artefactos/h.java, line(s) 88,43
wosc/play/detectores/DetectaGpsOnOff.java, line(s) 15
wosc/play/detectores/DetectaLlamadas.java, line(s) 59,62,71,75,84
wosc/play/detectores/DetectaNotificaciones.java, line(s) 31,67,72,78,86,99,124
wosc/play/detectores/DetectaNuevaFoto.java, line(s) 36
wosc/play/detectores/DetectaUnlockPhone.java, line(s) 17
wosc/play/dominio/a.java, line(s) 73
wosc/play/dominio/c.java, line(s) 46
wosc/play/dominio/d.java, line(s) 48,73,91
wosc/play/dominio/e.java, line(s) 60
wosc/play/dominio/h.java, line(s) 12
wosc/play/dominio/i.java, line(s) 14
wosc/play/dominio/j.java, line(s) 90,143,152,161,171,178
wosc/play/fcm/MyFirebaseMessagingService.java, line(s) 74,87,106,118,137,57,102,135,236,240,402,407,506
wosc/play/firebase/c.java, line(s) 45,22,59,74,90,104,119,134,190,204,219,292,307,325,343,421
wosc/play/firebase/d.java, line(s) 48,241,25,53,79,85,99,142,164,183
wosc/play/firebase/e.java, line(s) 111,123,137,183,30,59,66,80,85,96,103,105,175,177
wosc/play/servicios/AccesibilidadService.java, line(s) 36,41,59,85,134,141,146,151,98
wosc/play/servicios/GpsService.java, line(s) 42,52,61,68,74
wosc/play/servicios/NewPicture_JobService.java, line(s) 47,28,33,37,51,55,56,64,72,76,79,97
wosc/play/servicios/a.java, line(s) 31,39,42,61,66,69,84,109,112
wosc/play/webservice/a.java, line(s) 43,81,119,153,173,189,226,236,247,257,297,351,402,450,501,509,549,555
x/a.java, line(s) 42
x0/i0.java, line(s) 35,88
x0/y.java, line(s) 38,47,49
y/a.java, line(s) 41
y/b.java, line(s) 66
y/f.java, line(s) 83,92
y2/a.java, line(s) 79,83
z/c.java, line(s) 408,413
z/e.java, line(s) 84
z/f.java, line(s) 41,76
z/g.java, line(s) 56,114
z/j.java, line(s) 96,99
z/k.java, line(s) 96
z0/v.java, line(s) 105,109,113,13,118,123
z1/b.java, line(s) 63,76,52
z1/d.java, line(s) 86,99,124,172,187,282,84,98,123,167,186,277,120,136,148,194,215,256
z1/h.java, line(s) 15,12,12
z1/r.java, line(s) 41,83,149,37,81,96,144,194,222,251,284,97,195,223,252,285,49,184
z1/s.java, line(s) 25
z1/u.java, line(s) 35,49,27,41
z1/x.java, line(s) 55,50
z1/y.java, line(s) 53,36,73
z2/a.java, line(s) 116,206,153,220

信息 应用与Firebase数据库通信

该应用与位于 https://catwatchful-e03b8-2.firebaseio.com 的 Firebase 数据库进行通信

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

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

Files:
w5/v.java, line(s) 293,282,292,291,291

安全 Firebase远程配置已禁用

Firebase远程配置URL ( https://firebaseremoteconfig.googleapis.com/v1/projects/290254967732/namespaces/firebase:fetch?key=AIzaSyBUbLfoHmVON_PyJYnJQ3T3m9qZJ8bJZ4M ) 已禁用。响应内容如下所示:

{
    "state": "NO_TEMPLATE"
}

安全评分: ( Settings 1)