安全分析报告: v1.3

安全分数


安全分数 50/100

风险评级


等级

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

严重性分布 (%)


隐私风险

2

用户/设备跟踪器


调研结果

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

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

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

中危 Activity (com.learnpersecond.dailymassreading.Splash) 未被保护。

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

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

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

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

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

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

中危 Content Provider (org.cqelv.msoyg.slfiz.hxxIH7) 未被保护。

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

中危 Service (org.cqelv.msoyg.slfiz.FIami0) 受权限保护, 但是应该检查权限的保护级别。

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

中危 Service (org.cqelv.msoyg.slfiz.tffZ3O) 受权限保护, 但是应该检查权限的保护级别。

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

中危 Broadcast Receiver (org.cqelv.msoyg.slfiz.QskUGS) 未被保护。

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

中危 Broadcast Receiver (com.startapp.sdk.adsbase.remoteconfig.BootCompleteListener) 未被保护。

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

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

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


Files:
P1/C2589w.java, line(s) 237
h0/s.java, line(s) 59

中危 应用程序使用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:
M0/C2464b.java, line(s) 4,28
T0/h.java, line(s) 5,27
com/learnpersecond/dailymassreading/MainActivity.java, line(s) 14,172
com/learnpersecond/dailymassreading/MassReading.java, line(s) 13,207
com/learnpersecond/dailymassreading/Masscalendar.java, line(s) 9,85
net/sqlcipher/database/SQLiteDatabase.java, line(s) 815,839,295
r1/A1.java, line(s) 5,6,7,8,151
r1/C2642j.java, line(s) 6,7,99
r1/E1.java, line(s) 5,69
r1/a3.java, line(s) 18,19,561

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

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

Files:
E/N.java, line(s) 14
K1/i.java, line(s) 12
M0/C0071p.java, line(s) 8
r1/g3.java, line(s) 43
t2/a.java, line(s) 3
t2/b.java, line(s) 4
u2/a.java, line(s) 4

中危 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:
M0/C0071p.java, line(s) 35
P1/AbstractC2588v.java, line(s) 157
r1/g3.java, line(s) 413

中危 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:
H1/AbstractC2290c.java, line(s) 121
K1/i.java, line(s) 57,59,62,65
Z2/C2821b.java, line(s) 69

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

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

Files:
S1/r.java, line(s) 36,38
W2/C2788d.java, line(s) 266

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

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

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

从应用程序中识别出以下机密确保这些不是机密或私人信息
AdMob广告平台的=> "com.google.android.gms.ads.APPLICATION_ID" : "ca-app-pub-9273311230576901~4079310801"
"google_api_key" : "AIzaSyBeFyG4TN-1i23XWfl7-txjPEgeJ0-Ug1c"
"google_crash_reporting_api_key" : "AIzaSyBeFyG4TN-1i23XWfl7-txjPEgeJ0-Ug1c"
QWxsb3cgZGlzcGxheSBvdmVyIG90aGVyIGFwcHM/
UGVybWl0aXIgYXBhcmVjZXIgZW5jaW1hIHBhcmEgY29udGludWFy
UGVybWl0aXIgYSBhcHJlc2VudGHDp8OjbyBzb2JyZSBvdXRyb3MgYXBsaWNhdGl2b3M/
Q29uY2x1aXIgYSBpbnN0YWxhw6fDo28=
wr9QZXJtaXRpciBsYSBhcGFyaWNpw7NuIHNvYnJlIG90cmFzIGFwbGljYWNpb25lcz8=
QXBwbGljYXRpb24gdW5hdmFpbGFibGUgaW4geW91ciByZWdpb24uIFRhcCAnT0snIHRvIHJlbW92ZSBBcHA=
UGVybWl0aXIgYXBhcmVjZXIgc29icmUgb3V0cm9zIHBhcmEgY29udGludWFy
QWxsb3cgZGlzcGxheSBvdmVyIG90aGVyIGFwcHMgdG8gY29udGludWU=
B3EEABB8EE11C2BE770B684D95219ECB

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

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

Files:
A0/C0172d.java, line(s) 41
A0/f.java, line(s) 126
B/g.java, line(s) 36,41
B/h.java, line(s) 40
B/i.java, line(s) 55
B/j.java, line(s) 43
B/k.java, line(s) 56,115
C/d.java, line(s) 29,32,35,83,165,176
C/k.java, line(s) 25,60
C0/g.java, line(s) 97,453,480,446,447,452
D1/AbstractC2167e.java, line(s) 329,147,153,159,168,358
D1/AbstractC2179q.java, line(s) 89,92,96,100,104,108,117,121,124,127,173,178
D1/BinderC2161E.java, line(s) 70
D1/C2170h.java, line(s) 85
D1/G.java, line(s) 40,55
D1/HandlerC2160D.java, line(s) 112,120
D1/J.java, line(s) 40,47
D1/L.java, line(s) 31
D1/b.java, line(s) 33
D1/t.java, line(s) 20
D2/c.java, line(s) 194,257,259,373,379,385
E/AbstractActivityC2197m.java, line(s) 402
E/C.java, line(s) 100
E/H.java, line(s) 781,1516,2157,2159,2162,1276,1285,1295,1304,1325,1360,1383,1411,876,1043,1046,1622,1635,2025
E/N.java, line(s) 119,132,156
E/r.java, line(s) 50
E0/e.java, line(s) 715,722
F/p.java, line(s) 22
G/a.java, line(s) 400,408,412,420,433
G0/C2268y.java, line(s) 154,122
G0/O.java, line(s) 751
G0/Z.java, line(s) 42
G0/e0.java, line(s) 220
H/C2280i.java, line(s) 93,152,166,174
H/C2281j.java, line(s) 186
H/e.java, line(s) 30
H1/AbstractC2290c.java, line(s) 33
H1/b.java, line(s) 312
I/ViewOnKeyListenerC2312i.java, line(s) 465
I/o.java, line(s) 551
J/AbstractC2398l0.java, line(s) 20
J/C0007c.java, line(s) 85
J/C0028p.java, line(s) 31,44,92,158,204,225,249
J/C2318B.java, line(s) 50,54
J/C2343N0.java, line(s) 335,87,92,99,212,318
J/C2354T0.java, line(s) 22
J/C2356U0.java, line(s) 26,36,49,59
J/C2359W.java, line(s) 74
J/C2362X0.java, line(s) 241
J/C2406p0.java, line(s) 100,109,230
J/C2419w.java, line(s) 92
J/C2423y.java, line(s) 218
J/D1.java, line(s) 138,232
J/DialogInterfaceOnClickListenerC2346P.java, line(s) 37,102,107,127
J/H1.java, line(s) 31
J/K.java, line(s) 79
J/RunnableC2393j.java, line(s) 197,321,402,413,361,367
J/W.java, line(s) 304,225,303
J/Z.java, line(s) 20,31
J/k0.java, line(s) 105
J/p1.java, line(s) 100,277,436,197,307,321,399,414
J/q1.java, line(s) 34
J/r0.java, line(s) 31
J/s0.java, line(s) 32,44,51,60
J/w0.java, line(s) 80,99,71
J0/b.java, line(s) 99,147,259
J0/c.java, line(s) 45,61,71,81
K1/d.java, line(s) 19
K1/e.java, line(s) 77,85,585,614,117,128,144,181,227,580,162,82,165,195,198,224,301,359,395,410,418,428,523
K1/g.java, line(s) 263,283
L0/j.java, line(s) 58
M/d.java, line(s) 46
M0/C0067n.java, line(s) 311,315,320,421
M0/C2465c.java, line(s) 28
M0/C2466d.java, line(s) 172
M1/C2475f.java, line(s) 43
M1/e.java, line(s) 416,459,461
M1/g.java, line(s) 143
N/u.java, line(s) 19,18
O/d.java, line(s) 34
P0/I.java, line(s) 17,19,25,31
P1/AbstractC2588v.java, line(s) 612,621,696,706,724,733
P1/AbstractC2592z.java, line(s) 1110,1202,1124,1134,1199,1217
P1/C2561T.java, line(s) 17,19
P1/C2571e.java, line(s) 68
P1/C2575i.java, line(s) 12
P1/C2589w.java, line(s) 138,154,162,315
Q/e.java, line(s) 294
S0/f.java, line(s) 48,57,62,67,74,85,95,106,113,145,150,159,165,171,181,188
S0/n.java, line(s) 98,100,108,110,118,120,128,130
S1/q.java, line(s) 492,501,543,552
S2/C2736h.java, line(s) 77
T1/C2744a.java, line(s) 115,120
T1/P.java, line(s) 458,297,311,322,349,457,451
U/AbstractC2759c.java, line(s) 73,117,126
U/f.java, line(s) 51
U/g.java, line(s) 38
U/j.java, line(s) 369,438
U/n.java, line(s) 683,1371,1905,1911,1912,1913,1920,1960,1966,1967,1968,1975,2036,348,806,1494,1509,1850
W1/b.java, line(s) 35
W2/C2788d.java, line(s) 432,454
X1/b.java, line(s) 53,44,52,45
Y2/C2813a.java, line(s) 155,363
Z2/AbstractC0158u.java, line(s) 1200
Z2/C2821b.java, line(s) 62,73
a/q.java, line(s) 69,93,97
a1/e.java, line(s) 75,137,144
a1/f.java, line(s) 98,36,112,185,193,210,230
a1/i.java, line(s) 34
a1/j.java, line(s) 383,385,259,309,318,380,81
a1/l.java, line(s) 36
a1/o.java, line(s) 47
a1/s.java, line(s) 126,130,52,72
a1/v.java, line(s) 50,53,67
a2/c.java, line(s) 276,281,90,96,252,262
c1/d.java, line(s) 134,170
c1/e.java, line(s) 279,505
c1/p.java, line(s) 296,345
c2/j.java, line(s) 23,31,32
c2/n.java, line(s) 49,48
com/learnpersecond/dailymassreading/PermissionActivity.java, line(s) 285
g1/C2270a.java, line(s) 71,81
h0/i.java, line(s) 85,184
h0/n.java, line(s) 32,45
h0/o.java, line(s) 65
h0/s.java, line(s) 146,149,154
h2/C2296e.java, line(s) 22
h2/C2298g.java, line(s) 433,451,83,94,120,160,192,229,257,289,350
i1/b.java, line(s) 1316,1401,1364
j1/d.java, line(s) 111,145
n2/b.java, line(s) 40
net/sqlcipher/database/SQLiteDatabase.java, line(s) 216
net/sqlcipher/database/SQLiteDebug.java, line(s) 7,8,9,10,11,12
net/sqlcipher/database/SQLiteQueryBuilder.java, line(s) 201
p/d.java, line(s) 400
q0/e.java, line(s) 354
q0/p.java, line(s) 504
r/e.java, line(s) 881,921,978,1013,1048
r1/C1.java, line(s) 272
r1/a3.java, line(s) 464,475,463
y/C2803f.java, line(s) 52
z/a.java, line(s) 94,102,108,118,95,103,109,119
z/h.java, line(s) 82

信息 此应用程序使用SQL Cipher。SQLCipher为sqlite数据库文件提供256位AES加密

此应用程序使用SQL Cipher。SQLCipher为sqlite数据库文件提供256位AES加密


Files:
net/sqlcipher/database/SupportHelper.java, line(s) 12,1
org/cqelv/msoyg/slfiz/hxxIH7.java, line(s) 99,16,17

安全 此应用程序可能具有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:
X1/b.java, line(s) 34
Y1/f.java, line(s) 34

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

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

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

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

安全评分: ( 1.3)