安全分析报告: Dolan v2.4.21

安全分数


安全分数 54/100

风险评级


等级

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

严重性分布 (%)


隐私风险

0

用户/设备跟踪器


调研结果

高危 1
中危 16
信息 1
安全 2
关注 3

高危 如果一个应用程序使用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/reactnativecommunity/webview/RNCWebViewManager.java, line(s) 489,32,33

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

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

中危 Activity (com.braintreepayments.api.BraintreeBrowserSwitchActivity) 未被保护。

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

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

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

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

中危 Service (com.google.android.gms.auth.api.signin.RevocationBoundService) 受权限保护, 但是应该检查权限的保护级别。

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

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

中危 应用程序使用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/reactnativecommunity/asyncstorage/AsyncLocalStorageUtil.java, line(s) 6,88
com/reactnativecommunity/asyncstorage/ReactDatabaseSupplier.java, line(s) 4,5,6,43

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

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

Files:
com/agontuk/RNFusedLocation/FusedLocationProvider.java, line(s) 24
io/grpc/internal/DnsNameResolver.java, line(s) 35
io/grpc/internal/ExponentialBackoffPolicy.java, line(s) 5
io/grpc/internal/PickFirstLoadBalancer.java, line(s) 13
io/grpc/internal/RetriableStream.java, line(s) 24
io/grpc/okhttp/OkHttpClientTransport.java, line(s) 72
io/grpc/util/OutlierDetectionLoadBalancer.java, line(s) 27
io/grpc/util/RoundRobinLoadBalancer.java, line(s) 21

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

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

Files:
io/grpc/internal/DnsNameResolver.java, line(s) 76,74,75,77
io/grpc/internal/PickFirstLoadBalancerProvider.java, line(s) 13
io/grpc/internal/TransportFrameUtil.java, line(s) 33
io/invertase/firebase/common/TaskExecutorService.java, line(s) 14,15
io/invertase/firebase/messaging/ReactNativeFirebaseMessagingHeadlessService.java, line(s) 13,11
io/invertase/firebase/messaging/ReactNativeFirebaseMessagingSerializer.java, line(s) 20
net/time4j/tz/spi/WinZoneProviderSPI.java, line(s) 26
org/reactnative/facedetector/tasks/FileFaceDetectionAsyncTask.java, line(s) 26,28,29

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

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

Files:
com/learnium/RNDeviceInfo/RNDeviceModule.java, line(s) 359
com/lwansbrough/RCTCamera/RCTCameraModule.java, line(s) 620,624
com/reactnativecommunity/webview/RNCWebViewModule.java, line(s) 480,478
io/invertase/firebase/utils/ReactNativeFirebaseUtilsModule.java, line(s) 113,122,123,124

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

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


Files:
com/lwansbrough/RCTCamera/RCTCameraModule.java, line(s) 650,653
com/reactnativecommunity/webview/RNCWebViewModule.java, line(s) 480
com/rnmaps/maps/FileUtil.java, line(s) 39
com/rnmaps/maps/MapModule.java, line(s) 109

中危 IP地址泄露

IP地址泄露


Files:
io/grpc/okhttp/OkHttpClientTransport.java, line(s) 222
io/grpc/okhttp/OkHttpServerTransport.java, line(s) 631,646,652,737

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

从应用程序中识别出以下机密确保这些不是机密或私人信息
凭证信息=> "com.google.android.geo.API_KEY" : "AIzaSyAQLQCVRi9SmYJG-4ptzP_Mc_rasNBD2ho"
"firebase_database_url" : "https://dolanid.firebaseio.com"
"google_api_key" : "AIzaSyBO5G1zqiYqt1SEw_fDvpZiCxMa_METEL0"
"google_crash_reporting_api_key" : "AIzaSyBO5G1zqiYqt1SEw_fDvpZiCxMa_METEL0"

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

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

Files:
cl/json/RNShareModule.java, line(s) 234,238,246,257,262,276,291
cl/json/RNSharePathUtil.java, line(s) 52
cl/json/social/InstagramShare.java, line(s) 41,50
cl/json/social/SingleShareIntent.java, line(s) 27,30,39
com/agontuk/RNFusedLocation/FusedLocationProvider.java, line(s) 78
com/agontuk/RNFusedLocation/LocationManagerProvider.java, line(s) 75
com/agontuk/RNFusedLocation/RNFusedLocationModule.java, line(s) 44
com/azendoo/reactnativesnackbar/SnackbarModule.java, line(s) 71
com/brentvatne/react/ReactVideoView.java, line(s) 460,464
com/drew/imaging/ImageMetadataReader.java, line(s) 274,210,211,225,236,244,245,246,247,248,249,250,251,252,253,254,255,266,268,270
com/drew/lang/CompoundException.java, line(s) 60
com/drew/tools/ExtractJpegSegmentTool.java, line(s) 22,30,37,48,53,61,62,63,66,69
com/drew/tools/ProcessAllImagesInFolderUtility.java, line(s) 82,95,102,103,104
com/drew/tools/ProcessUrlUtility.java, line(s) 16,29,34,51,53,22,47
com/henninghall/date_picker/DerivedData.java, line(s) 77
com/henninghall/date_picker/pickers/AndroidNative.java, line(s) 82,84,86,134,137,141,144
com/imagepicker/ImageMetadata.java, line(s) 34
com/imagepicker/Metadata.java, line(s) 28
com/learnium/RNDeviceInfo/RNDeviceModule.java, line(s) 212,289,387,392,503,535,630,813,904,908
com/learnium/RNDeviceInfo/RNInstallReferrerClient.java, line(s) 76,82,87,100,27,43,94
com/learnium/RNDeviceInfo/resolver/DeviceIdResolver.java, line(s) 21,24,25,29
com/lwansbrough/RCTCamera/MutableImage.java, line(s) 169,191,214
com/lwansbrough/RCTCamera/RCTCamera.java, line(s) 41,188,281,397,423,441
com/lwansbrough/RCTCamera/RCTCameraModule.java, line(s) 278,305,316,324,470,606,617,630,639,655,658
com/lwansbrough/RCTCamera/RCTCameraViewFinder.java, line(s) 180,447,469,282
com/reactcommunity/rndatetimepicker/MinuteIntervalSnappableTimePickerDialog.java, line(s) 105
com/reactnativecommunity/asyncstorage/AsyncLocalStorageUtil.java, line(s) 80,83,90,92
com/reactnativecommunity/asyncstorage/AsyncStorageExpoMigration.java, line(s) 30,36,42,44,50,52
com/reactnativecommunity/asyncstorage/AsyncStorageModule.java, line(s) 109,150,164,178,195,202,208,213,255,259,264,280,311,325,339,353,366,370,375,391,414,436
com/reactnativecommunity/asyncstorage/ReactDatabaseSupplier.java, line(s) 92,95
com/reactnativecommunity/webview/RNCWebViewManager.java, line(s) 909,985,193,206,898,914,941,987
com/reactnativecommunity/webview/RNCWebViewModule.java, line(s) 304,309,333,338,221,245,259
com/rnmaps/maps/FileUtil.java, line(s) 33
com/rnmaps/maps/MapGradientPolyline.java, line(s) 203
com/rnmaps/maps/MapTileProvider.java, line(s) 111,115,119,123,145,147,162,166,168,175,178,264
com/rnmaps/maps/MapTileWorker.java, line(s) 39
com/rnmaps/maps/MapUrlTile.java, line(s) 198,207
com/rnmaps/maps/MapView.java, line(s) 184
com/swmansion/gesturehandler/react/RNGestureHandlerModule.java, line(s) 697
com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java, line(s) 47,65
com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java, line(s) 37
com/swmansion/reanimated/NativeMethodsHelper.java, line(s) 44
com/swmansion/reanimated/ReanimatedModule.java, line(s) 107
com/swmansion/reanimated/ReanimatedUIManagerFactory.java, line(s) 21
com/swmansion/reanimated/layoutReanimation/AnimationsManager.java, line(s) 198,212
com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java, line(s) 36
com/swmansion/reanimated/layoutReanimation/SharedTransitionManager.java, line(s) 92
com/swmansion/reanimated/nativeProxy/NativeProxyCommon.java, line(s) 189
com/swmansion/reanimated/sensor/ReanimatedSensorContainer.java, line(s) 35
com/th3rdwave/safeareacontext/SafeAreaView.java, line(s) 107
com/zoontek/rnpermissions/RNPermissionsModuleImpl.java, line(s) 282
io/grpc/android/AndroidChannelBuilder.java, line(s) 44,47,51,55,124
io/grpc/okhttp/internal/Platform.java, line(s) 70
io/invertase/firebase/app/ReactNativeFirebaseApp.java, line(s) 16
io/invertase/firebase/app/ReactNativeFirebaseAppModule.java, line(s) 53
io/invertase/firebase/auth/ReactNativeFirebaseAuthModule.java, line(s) 103,109,128,131,139,145,169,175,186,218,229,236,243,251,263,278,289,304,306,316,331,342,357,368,383,394,401,418,429,441,453,469,482,498,511,532,545,566,579,595,608,624,647,659,672,696,712,724,786,791,796,801,807,850,875,1001,1048,1055,1066,1078,1093,1101,1112,1129,1140,1151,1163,1174,1185,1211,1226,1245,1294,1299,1304,1309,1316,1331,1349,1364,1383,1432,1437,1442,1447,1551,1567,1578,1594,1614,1625,1638,1664,1675,283,310,336,362,388,395,422,445,462,473,485,502,514,536,548,570,582,599,611,628,645,663,675,700,728,866,1005,1059,1144,1167,1198,1230,1335,1368,1571,1607,1679
io/invertase/firebase/common/RCTConvertFirebase.java, line(s) 159
io/invertase/firebase/common/ReactNativeFirebaseEventEmitter.java, line(s) 147
io/invertase/firebase/common/SharedUtils.java, line(s) 88,340,448,147
io/invertase/firebase/firestore/ReactNativeFirebaseFirestoreSerialize.java, line(s) 292
io/invertase/firebase/messaging/ReactNativeFirebaseMessagingModule.java, line(s) 82
io/invertase/firebase/messaging/ReactNativeFirebaseMessagingReceiver.java, line(s) 20,41
io/invertase/firebase/utils/ReactNativeFirebaseUtilsModule.java, line(s) 70
net/time4j/android/ApplicationStarter.java, line(s) 105,54,58,84,100,101,102,103
net/time4j/base/ResourceLoader.java, line(s) 87,113
net/time4j/format/expert/ChronoFormatter.java, line(s) 499,540,589,593,1005,1032,1062,1081,1102,1393,1399,562,587,590,949,952,1010,1025,1033,1072,1076,1082,1097,1149,1153,1266,1286,1292,1336,1417,1450
net/time4j/format/expert/CustomizedProcessor.java, line(s) 101,107
net/time4j/format/expert/DecimalProcessor.java, line(s) 174,136,137,164,169,172,190,192
net/time4j/format/expert/FormatStep.java, line(s) 181,176,179,187,195,331
net/time4j/format/expert/FractionProcessor.java, line(s) 146,139,158,171,182,191
net/time4j/format/expert/IgnorableWhitespaceProcessor.java, line(s) 49
net/time4j/format/expert/Iso8601Format.java, line(s) 79,93
net/time4j/format/expert/LiteralProcessor.java, line(s) 114,177,180,201,343
net/time4j/format/expert/LocalizedGMTProcessor.java, line(s) 194,238,241,255,258,271,283,286,305,308,313,350,353
net/time4j/format/expert/LookupProcessor.java, line(s) 78,79,98,110,118
net/time4j/format/expert/MultiFormatParser.java, line(s) 37,50,65,35,48,54,63,69
net/time4j/format/expert/NumberProcessor.java, line(s) 376,326,327,332,348,353,356,360,368,369,377,381,425,429,437,445,502,511,517,520,526,533,535,549,555,560
net/time4j/format/expert/OrdinalProcessor.java, line(s) 121,122,154,158,165,172,176
net/time4j/format/expert/SkipProcessor.java, line(s) 75
net/time4j/format/expert/StyleProcessor.java, line(s) 79
net/time4j/format/expert/TextProcessor.java, line(s) 97,83,84,99,111,114
net/time4j/format/expert/TimezoneGenericProcessor.java, line(s) 121,143,184,189,192
net/time4j/format/expert/TimezoneIDProcessor.java, line(s) 44,59,63,68,73,78,94,100
net/time4j/format/expert/TimezoneNameProcessor.java, line(s) 116,142,213,230,232
net/time4j/format/expert/TimezoneOffsetProcessor.java, line(s) 175,190,206,219,222,233,236,247,250,261,273,295,302,322,325
net/time4j/format/expert/TwoDigitYearProcessor.java, line(s) 99,100,129,133,140
net/time4j/i18n/WeekdataProviderSPI.java, line(s) 141
net/time4j/tz/spi/ZoneNameProviderSPI.java, line(s) 151
org/reactnative/facedetector/tasks/FileFaceDetectionAsyncTask.java, line(s) 86

安全 此应用程序使用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:
io/grpc/okhttp/OkHttpChannelBuilder.java, line(s) 418,419,506,432,504,504
io/grpc/okhttp/OkHttpServerBuilder.java, line(s) 263,264,277
io/grpc/util/AdvancedTlsX509TrustManager.java, line(s) 109,99,107,107,125

安全 此应用程序没有隐私跟踪程序

此应用程序不包括任何用户或设备跟踪器。在静态分析期间没有找到任何跟踪器。

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

{'ip': '180.163.151.162', 'country_short': 'CN', 'country_long': '中国', 'region': '江苏', 'city': '无锡', 'latitude': '31.569349', 'longitude': '120.288788'}

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

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

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

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

安全评分: ( Dolan 2.4.21)