react-native-device-defense 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +92 -1
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/cpp/device-security.cpp +281 -7
  4. package/android/src/main/java/com/devicedefense/DeviceSecurityModule.kt +126 -2
  5. package/android/src/main/java/com/devicedefense/EmulatorDetection.kt +29 -18
  6. package/android/src/main/java/com/devicedefense/NativeSecurityCheck.kt +43 -1
  7. package/android/test-gradle.gradle +3 -0
  8. package/lib/commonjs/NativeDeviceSecurity.js.map +1 -1
  9. package/lib/commonjs/api.js +137 -2
  10. package/lib/commonjs/api.js.map +1 -1
  11. package/lib/commonjs/components/SecurityBlockedScreen.js +12 -2
  12. package/lib/commonjs/components/SecurityBlockedScreen.js.map +1 -1
  13. package/lib/commonjs/hooks/useDeviceSecurity.js +13 -7
  14. package/lib/commonjs/hooks/useDeviceSecurity.js.map +1 -1
  15. package/lib/module/NativeDeviceSecurity.js.map +1 -1
  16. package/lib/module/api.js +137 -2
  17. package/lib/module/api.js.map +1 -1
  18. package/lib/module/components/SecurityBlockedScreen.js +12 -2
  19. package/lib/module/components/SecurityBlockedScreen.js.map +1 -1
  20. package/lib/module/hooks/useDeviceSecurity.js +14 -8
  21. package/lib/module/hooks/useDeviceSecurity.js.map +1 -1
  22. package/lib/typescript/NativeDeviceSecurity.d.ts +7 -0
  23. package/lib/typescript/NativeDeviceSecurity.d.ts.map +1 -1
  24. package/lib/typescript/api.d.ts +29 -1
  25. package/lib/typescript/api.d.ts.map +1 -1
  26. package/lib/typescript/components/SecurityBlockedScreen.d.ts.map +1 -1
  27. package/lib/typescript/hooks/useDeviceSecurity.d.ts.map +1 -1
  28. package/lib/typescript/types.d.ts +30 -1
  29. package/lib/typescript/types.d.ts.map +1 -1
  30. package/package.json +4 -2
  31. package/src/NativeDeviceSecurity.ts +9 -0
  32. package/src/api.ts +143 -0
  33. package/src/components/SecurityBlockedScreen.tsx +10 -0
  34. package/src/hooks/useDeviceSecurity.ts +14 -11
  35. package/src/types.ts +36 -1
@@ -19,8 +19,7 @@ class EmulatorDetection(private val context: Context) {
19
19
  checkEmulatorBuildProps() ||
20
20
  checkEmulatorFiles() ||
21
21
  checkEmulatorFeatures() ||
22
- checkNetworkInterfaces() ||
23
- checkCamera()
22
+ checkNetworkInterfaces()
24
23
  }
25
24
 
26
25
  /**
@@ -117,25 +116,37 @@ class EmulatorDetection(private val context: Context) {
117
116
  * Check for emulator features
118
117
  */
119
118
  private fun checkEmulatorFeatures(): Boolean {
120
- val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager
121
- ?: return false
119
+ try {
120
+ val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager
121
+ ?: return false
122
122
 
123
- // Check for invalid network operator
124
- val networkOperator = telephonyManager.networkOperator
125
- if (networkOperator == null || networkOperator == "000000000000000") {
126
- return true
127
- }
123
+ // Check for invalid network operator (only check for known emulator fake values, not null/empty which happens on tablets)
124
+ val networkOperator = telephonyManager.networkOperator
125
+ if (networkOperator == "000000000000000") {
126
+ return true
127
+ }
128
128
 
129
- // Check for invalid subscriber ID
130
- val subscriberId = telephonyManager.subscriberId
131
- if (subscriberId == null || subscriberId == "000000000000000") {
132
- return true
133
- }
129
+ // Check for invalid subscriber ID (requires READ_PHONE_STATE, might throw SecurityException)
130
+ try {
131
+ val subscriberId = telephonyManager.subscriberId
132
+ if (subscriberId == "000000000000000") {
133
+ return true
134
+ }
135
+ } catch (e: SecurityException) {
136
+ // Ignore if permission denied
137
+ }
134
138
 
135
- // Check for invalid IMEI/MEID
136
- val deviceId = telephonyManager.deviceId
137
- if (deviceId == null || deviceId == "000000000000000" || deviceId == "0") {
138
- return true
139
+ // Check for invalid IMEI/MEID (requires READ_PHONE_STATE)
140
+ try {
141
+ val deviceId = telephonyManager.deviceId
142
+ if (deviceId == "000000000000000" || deviceId == "0") {
143
+ return true
144
+ }
145
+ } catch (e: SecurityException) {
146
+ // Ignore if permission denied
147
+ }
148
+ } catch (e: Exception) {
149
+ // Ignore other telephony errors
139
150
  }
140
151
 
141
152
  return false
@@ -45,9 +45,51 @@ object NativeSecurityCheck {
45
45
  */
46
46
  external fun isDebuggerAttached(): Boolean
47
47
 
48
+ /**
49
+ * Native check for SSL validation bypass
50
+ * Checks if SSL certificate validation has been bypassed
51
+ * @return true if SSL validation is bypassed
52
+ */
53
+ external fun hasSSLValidationBypass(): Boolean
54
+
55
+ /**
56
+ * Native check for SSL pinning bypass tools
57
+ * Checks for common SSL pinning bypass frameworks and tools
58
+ * @return true if SSL pinning bypass detected
59
+ */
60
+ external fun hasSSLPinningBypass(): Boolean
61
+
62
+ /**
63
+ * Native check for proxy configuration
64
+ * Checks if HTTP/HTTPS proxy is configured (potential MITM)
65
+ * @return true if proxy is configured
66
+ */
67
+ external fun hasProxyConfiguration(): Boolean
68
+
69
+ /**
70
+ * Native check for modified SSL libraries
71
+ * Checks if SSL libraries are from unexpected locations
72
+ * @return true if modified SSL libraries detected
73
+ */
74
+ external fun hasModifiedSSLLibraries(): Boolean
75
+
76
+ /**
77
+ * Native check for certificate tampering
78
+ * Checks for excessive user-installed CA certificates
79
+ * @return true if certificate tampering detected
80
+ */
81
+ external fun hasCertificateTampering(): Boolean
82
+
83
+ /**
84
+ * Native comprehensive SSL security check
85
+ * Checks all SSL security aspects
86
+ * @return true if any SSL security issue detected
87
+ */
88
+ external fun hasSSLSecurityIssue(): Boolean
89
+
48
90
  /**
49
91
  * Get native security status as JSON string
50
- * @return JSON string with security status
92
+ * @return JSON string with security status including SSL checks
51
93
  */
52
94
  external fun getSecurityStatus(): String
53
95
 
@@ -0,0 +1,3 @@
1
+ apply plugin: 'java'
2
+ repositories { mavenCentral() }
3
+ dependencies { implementation 'com.scottyab:rootbeer:0.1.0' }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeDeviceSecurity.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GA+BpCC,gCAAmB,CAACC,YAAY,CAAO,gBAAgB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeDeviceSecurity.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAwCpCC,gCAAmB,CAACC,YAAY,CAAO,gBAAgB,CAAC","ignoreList":[]}
@@ -51,7 +51,13 @@ class DeviceSecurity {
51
51
  hasXposed: false,
52
52
  hasMagisk: false,
53
53
  isDebuggable: false,
54
- isEmulator: false
54
+ isEmulator: false,
55
+ hasSSLValidationBypass: false,
56
+ hasSSLPinningBypass: false,
57
+ hasProxyConfiguration: false,
58
+ hasModifiedSSLLibraries: false,
59
+ hasCertificateTampering: false,
60
+ hasSSLSecurityIssue: false
55
61
  };
56
62
  }
57
63
  try {
@@ -63,6 +69,37 @@ class DeviceSecurity {
63
69
  }
64
70
  }
65
71
 
72
+ /**
73
+ * Get detailed SSL security status
74
+ */
75
+ async getSSLSecurityStatus() {
76
+ if (_reactNative.Platform.OS !== 'android') {
77
+ // iOS: no-op for now, return secure status
78
+ return {
79
+ hasSSLValidationBypass: false,
80
+ hasSSLPinningBypass: false,
81
+ hasProxyConfiguration: false,
82
+ hasModifiedSSLLibraries: false,
83
+ hasCertificateTampering: false,
84
+ hasSSLSecurityIssue: false
85
+ };
86
+ }
87
+ try {
88
+ const statusJson = await _NativeDeviceSecurity.default.getSSLSecurityStatus();
89
+ return JSON.parse(statusJson);
90
+ } catch (error) {
91
+ console.error('DeviceSecurity: Error getting SSL security status', error);
92
+ return {
93
+ hasSSLValidationBypass: false,
94
+ hasSSLPinningBypass: false,
95
+ hasProxyConfiguration: false,
96
+ hasModifiedSSLLibraries: false,
97
+ hasCertificateTampering: false,
98
+ hasSSLSecurityIssue: false
99
+ };
100
+ }
101
+ }
102
+
66
103
  /**
67
104
  * Check if device is rooted (synchronous, Android only)
68
105
  */
@@ -153,6 +190,98 @@ class DeviceSecurity {
153
190
  }
154
191
  }
155
192
 
193
+ // ===== SSL Security Methods =====
194
+
195
+ /**
196
+ * Check if SSL validation has been bypassed
197
+ */
198
+ hasSSLValidationBypass() {
199
+ if (_reactNative.Platform.OS !== 'android') {
200
+ return false;
201
+ }
202
+ try {
203
+ return _NativeDeviceSecurity.default.hasSSLValidationBypass();
204
+ } catch (error) {
205
+ console.error('DeviceSecurity: Error checking SSL validation bypass', error);
206
+ return false;
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Check if SSL pinning bypass tools are present
212
+ */
213
+ hasSSLPinningBypass() {
214
+ if (_reactNative.Platform.OS !== 'android') {
215
+ return false;
216
+ }
217
+ try {
218
+ return _NativeDeviceSecurity.default.hasSSLPinningBypass();
219
+ } catch (error) {
220
+ console.error('DeviceSecurity: Error checking SSL pinning bypass', error);
221
+ return false;
222
+ }
223
+ }
224
+
225
+ /**
226
+ * Check if proxy is configured (potential MITM)
227
+ */
228
+ hasProxyConfiguration() {
229
+ if (_reactNative.Platform.OS !== 'android') {
230
+ return false;
231
+ }
232
+ try {
233
+ return _NativeDeviceSecurity.default.hasProxyConfiguration();
234
+ } catch (error) {
235
+ console.error('DeviceSecurity: Error checking proxy configuration', error);
236
+ return false;
237
+ }
238
+ }
239
+
240
+ /**
241
+ * Check if SSL libraries have been modified
242
+ */
243
+ hasModifiedSSLLibraries() {
244
+ if (_reactNative.Platform.OS !== 'android') {
245
+ return false;
246
+ }
247
+ try {
248
+ return _NativeDeviceSecurity.default.hasModifiedSSLLibraries();
249
+ } catch (error) {
250
+ console.error('DeviceSecurity: Error checking modified SSL libraries', error);
251
+ return false;
252
+ }
253
+ }
254
+
255
+ /**
256
+ * Check if certificates have been tampered with
257
+ */
258
+ hasCertificateTampering() {
259
+ if (_reactNative.Platform.OS !== 'android') {
260
+ return false;
261
+ }
262
+ try {
263
+ return _NativeDeviceSecurity.default.hasCertificateTampering();
264
+ } catch (error) {
265
+ console.error('DeviceSecurity: Error checking certificate tampering', error);
266
+ return false;
267
+ }
268
+ }
269
+
270
+ /**
271
+ * Comprehensive SSL security check
272
+ */
273
+ hasSSLSecurityIssue() {
274
+ if (_reactNative.Platform.OS !== 'android') {
275
+ return false;
276
+ }
277
+ try {
278
+ return _NativeDeviceSecurity.default.hasSSLSecurityIssue();
279
+ } catch (error) {
280
+ console.error('DeviceSecurity: Error checking SSL security', error);
281
+ return false;
282
+ }
283
+ }
284
+
156
285
  /**
157
286
  * Block app when security threat detected
158
287
  * This will show an alert and potentially exit the app
@@ -201,7 +330,13 @@ class DeviceSecurity {
201
330
  hasXposed: false,
202
331
  hasMagisk: false,
203
332
  isDebuggable: false,
204
- isEmulator: false
333
+ isEmulator: false,
334
+ hasSSLValidationBypass: false,
335
+ hasSSLPinningBypass: false,
336
+ hasProxyConfiguration: false,
337
+ hasModifiedSSLLibraries: false,
338
+ hasCertificateTampering: false,
339
+ hasSSLSecurityIssue: false
205
340
  };
206
341
  }
207
342
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_NativeDeviceSecurity","_interopRequireDefault","e","__esModule","default","DeviceSecurity","isDeviceSecure","Platform","OS","NativeDeviceSecurity","error","console","getSecurityStatus","isSecure","threats","isRooted","hasRootBeerDetected","hasNativeRootDetected","hasDangerousBins","hasRootApps","hasSystemPropsModified","hasFrida","hasXposed","hasMagisk","isDebuggable","isEmulator","statusJson","JSON","parse","getDefaultSecurityStatus","blockOnSecurityThreat","options","showAlert","alertTitle","alertMessage","alertButtonText","onBlocked","then","status","exports","deviceSecurityInstance","_default"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_NativeDeviceSecurity","_interopRequireDefault","e","__esModule","default","DeviceSecurity","isDeviceSecure","Platform","OS","NativeDeviceSecurity","error","console","getSecurityStatus","isSecure","threats","isRooted","hasRootBeerDetected","hasNativeRootDetected","hasDangerousBins","hasRootApps","hasSystemPropsModified","hasFrida","hasXposed","hasMagisk","isDebuggable","isEmulator","hasSSLValidationBypass","hasSSLPinningBypass","hasProxyConfiguration","hasModifiedSSLLibraries","hasCertificateTampering","hasSSLSecurityIssue","statusJson","JSON","parse","getDefaultSecurityStatus","getSSLSecurityStatus","blockOnSecurityThreat","options","showAlert","alertTitle","alertMessage","alertButtonText","onBlocked","then","status","exports","deviceSecurityInstance","_default"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":"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","ignoreList":[]}
@@ -24,7 +24,12 @@ const THREAT_TITLES = {
24
24
  xposed_detected: 'Phát hiện Xposed Framework',
25
25
  magisk_detected: 'Phát hiện Magisk',
26
26
  debugger_detected: 'Phát hiện Debugger',
27
- emulator_detected: 'Phát hiện Bộ giả lập'
27
+ emulator_detected: 'Phát hiện Bộ giả lập',
28
+ ssl_validation_bypass: 'SSL Validation bị bypass',
29
+ ssl_pinning_bypass: 'SSL Pinning bị bypass',
30
+ proxy_configuration: 'Phát hiện Proxy (MITM)',
31
+ modified_ssl_libraries: 'SSL Library đã sửa đổi',
32
+ certificate_tampering: 'Certificate bị can thiệp'
28
33
  };
29
34
  const THREAT_DESCRIPTIONS = {
30
35
  root_detected: 'Thiết bị của bạn đã được root, làm giảm tính bảo mật của ứng dụng.',
@@ -37,7 +42,12 @@ const THREAT_DESCRIPTIONS = {
37
42
  xposed_detected: 'Phát hiện Xposed Framework - có thể can thiệp vào ứng dụng.',
38
43
  magisk_detected: 'Phát hiện Magisk - công cụ root ẩn danh.',
39
44
  debugger_detected: 'Phát hiện debugger đang gắn vào ứng dụng.',
40
- emulator_detected: 'Ứng dụng đang chạy trên bộ giả lập, không an toàn cho môi trường production.'
45
+ emulator_detected: 'Ứng dụng đang chạy trên bộ giả lập, không an toàn cho môi trường production.',
46
+ ssl_validation_bypass: 'SSL certificate validation đã bị bypass, kết nối có thể không an toàn.',
47
+ ssl_pinning_bypass: 'Phát hiện công cụ SSL pinning bypass (Frida, Xposed...) - tấn công MITM có thể xảy ra.',
48
+ proxy_configuration: 'Phát hiện cấu hình proxy - có thể là dấu hiệu của tấn công MITM.',
49
+ modified_ssl_libraries: 'SSL libraries đã bị sửa đổi - có thể dẫn đến kết nối không an toàn.',
50
+ certificate_tampering: 'Phát hiện certificate đã bị can thiệp - kết nối có thể bị theo dõi.'
41
51
  };
42
52
 
43
53
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","e","__esModule","default","THREAT_TITLES","root_detected","root_beer_detected","native_root_detected","dangerous_bins_detected","root_apps_detected","system_props_modified","frida_detected","xposed_detected","magisk_detected","debugger_detected","emulator_detected","THREAT_DESCRIPTIONS","SecurityBlockedScreen","threats","title","message","icon","createElement","SafeAreaView","style","styles","container","ScrollView","contentContainerStyle","scrollContent","bounces","View","iconContainer","Text","length","Fragment","threatsTitle","threatsList","map","threat","key","threatItem","bullet","threatContent","threatTitle","threatDescription","footer","footerText","exports","StyleSheet","create","flex","backgroundColor","padding","alignItems","width","height","borderRadius","justifyContent","marginBottom","fontSize","fontWeight","color","textAlign","lineHeight","alignSelf","flexDirection","borderLeftWidth","borderLeftColor","marginTop","marginRight","paddingTop","borderTopWidth","borderTopColor","_default"],"sourceRoot":"../../../src","sources":["components/SecurityBlockedScreen.tsx"],"mappings":";;;;;;AAMA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAOsB,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAdtB;AACA;AACA;AACA;AACA;;AAwBA,MAAMG,aAA6C,GAAG;EACpDC,aAAa,EAAE,kBAAkB;EACjCC,kBAAkB,EAAE,2BAA2B;EAC/CC,oBAAoB,EAAE,yBAAyB;EAC/CC,uBAAuB,EAAE,4BAA4B;EACrDC,kBAAkB,EAAE,yBAAyB;EAC7CC,qBAAqB,EAAE,gCAAgC;EACvDC,cAAc,EAAE,2BAA2B;EAC3CC,eAAe,EAAE,4BAA4B;EAC7CC,eAAe,EAAE,kBAAkB;EACnCC,iBAAiB,EAAE,oBAAoB;EACvCC,iBAAiB,EAAE;AACrB,CAAC;AAED,MAAMC,mBAAmD,GAAG;EAC1DX,aAAa,EAAE,oEAAoE;EACnFC,kBAAkB,EAAE,+DAA+D;EACnFC,oBAAoB,EAAE,wDAAwD;EAC9EC,uBAAuB,EAAE,sDAAsD;EAC/EC,kBAAkB,EAAE,gDAAgD;EACpEC,qBAAqB,EAAE,mDAAmD;EAC1EC,cAAc,EAAE,kEAAkE;EAClFC,eAAe,EAAE,6DAA6D;EAC9EC,eAAe,EAAE,0CAA0C;EAC3DC,iBAAiB,EAAE,2CAA2C;EAC9DC,iBAAiB,EAAE;AACrB,CAAC;;AAED;AACA;AACA;AACO,MAAME,qBAA2D,GAAGA,CAAC;EAC1EC,OAAO,GAAG,EAAE;EACZC,KAAK,GAAG,kBAAkB;EAC1BC,OAAO,GAAG,mFAAmF;EAC7FC;AACF,CAAC,KAAK;EACJ,oBACExB,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAAuB,YAAY;IAACC,KAAK,EAAEC,MAAM,CAACC;EAAU,gBACpC7B,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAA2B,UAAU;IACTC,qBAAqB,EAAEH,MAAM,CAACI,aAAc;IAC5CC,OAAO,EAAE;EAAM,GAEdT,IAAI,iBACHxB,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAA+B,IAAI;IAACP,KAAK,EAAEC,MAAM,CAACO;EAAc,gBAChCnC,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAAiC,IAAI;IAACT,KAAK,EAAEC,MAAM,CAACJ;EAAK,GAAC,cAAQ,CAC9B,CACP,eAEDxB,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAAiC,IAAI;IAACT,KAAK,EAAEC,MAAM,CAACN;EAAM,GAAEA,KAAY,CAAC,eAEzCtB,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAAiC,IAAI;IAACT,KAAK,EAAEC,MAAM,CAACL;EAAQ,GAAEA,OAAc,CAAC,EAE5CF,OAAO,CAACgB,MAAM,GAAG,CAAC,iBACjBrC,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAAAzB,MAAA,CAAAM,OAAA,CAAAgC,QAAA,qBACEtC,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAAiC,IAAI;IAACT,KAAK,EAAEC,MAAM,CAACW;EAAa,GAAC,0CAAuB,CAAC,eAE1DvC,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAA+B,IAAI;IAACP,KAAK,EAAEC,MAAM,CAACY;EAAY,GAC7BnB,OAAO,CAACoB,GAAG,CAAEC,MAAM,iBAClB1C,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAA+B,IAAI;IAACS,GAAG,EAAED,MAAO;IAACf,KAAK,EAAEC,MAAM,CAACgB;EAAW,gBAC1C5C,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAA+B,IAAI;IAACP,KAAK,EAAEC,MAAM,CAACiB;EAAO,CAAE,CAAC,eAC9B7C,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAA+B,IAAI;IAACP,KAAK,EAAEC,MAAM,CAACkB;EAAc,gBAChC9C,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAAiC,IAAI;IAACT,KAAK,EAAEC,MAAM,CAACmB;EAAY,GAC7BxC,aAAa,CAACmC,MAAM,CAAC,IAAIA,MACtB,CAAC,eACP1C,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAAiC,IAAI;IAACT,KAAK,EAAEC,MAAM,CAACoB;EAAkB,GACnC7B,mBAAmB,CAACuB,MAAM,CAAC,IAAI,gCAC5B,CACF,CACF,CACP,CACG,CACN,CACH,eAED1C,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAA+B,IAAI;IAACP,KAAK,EAAEC,MAAM,CAACqB;EAAO,gBACzBjD,MAAA,CAAAM,OAAA,CAAAmB,aAAA,CAACtB,YAAA,CAAAiC,IAAI;IAACT,KAAK,EAAEC,MAAM,CAACsB;EAAW,GAAC,wJAE1B,CACF,CACI,CACA,CAAC;AAEnB,CAAC;AAACC,OAAA,CAAA/B,qBAAA,GAAAA,qBAAA;AAEF,MAAMQ,MAAM,GAAGwB,uBAAU,CAACC,MAAM,CAAC;EAC/BxB,SAAS,EAAE;IACTyB,IAAI,EAAE,CAAC;IACPC,eAAe,EAAE;EACnB,CAAC;EACDvB,aAAa,EAAE;IACbwB,OAAO,EAAE,EAAE;IACXC,UAAU,EAAE;EACd,CAAC;EACDtB,aAAa,EAAE;IACbuB,KAAK,EAAE,GAAG;IACVC,MAAM,EAAE,GAAG;IACXC,YAAY,EAAE,EAAE;IAChBL,eAAe,EAAE,SAAS;IAC1BM,cAAc,EAAE,QAAQ;IACxBJ,UAAU,EAAE,QAAQ;IACpBK,YAAY,EAAE;EAChB,CAAC;EACDtC,IAAI,EAAE;IACJuC,QAAQ,EAAE;EACZ,CAAC;EACDzC,KAAK,EAAE;IACLyC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBC,KAAK,EAAE,SAAS;IAChBC,SAAS,EAAE,QAAQ;IACnBJ,YAAY,EAAE;EAChB,CAAC;EACDvC,OAAO,EAAE;IACPwC,QAAQ,EAAE,EAAE;IACZE,KAAK,EAAE,SAAS;IAChBC,SAAS,EAAE,QAAQ;IACnBJ,YAAY,EAAE,EAAE;IAChBK,UAAU,EAAE;EACd,CAAC;EACD5B,YAAY,EAAE;IACZwB,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBC,KAAK,EAAE,SAAS;IAChBG,SAAS,EAAE,YAAY;IACvBN,YAAY,EAAE;EAChB,CAAC;EACDtB,WAAW,EAAE;IACXkB,KAAK,EAAE,MAAM;IACbI,YAAY,EAAE;EAChB,CAAC;EACDlB,UAAU,EAAE;IACVyB,aAAa,EAAE,KAAK;IACpBd,eAAe,EAAE,SAAS;IAC1BK,YAAY,EAAE,CAAC;IACfJ,OAAO,EAAE,EAAE;IACXM,YAAY,EAAE,EAAE;IAChBQ,eAAe,EAAE,CAAC;IAClBC,eAAe,EAAE;EACnB,CAAC;EACD1B,MAAM,EAAE;IACNa,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,YAAY,EAAE,CAAC;IACfL,eAAe,EAAE,SAAS;IAC1BiB,SAAS,EAAE,CAAC;IACZC,WAAW,EAAE;EACf,CAAC;EACD3B,aAAa,EAAE;IACbQ,IAAI,EAAE;EACR,CAAC;EACDP,WAAW,EAAE;IACXgB,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBC,KAAK,EAAE,SAAS;IAChBH,YAAY,EAAE;EAChB,CAAC;EACDd,iBAAiB,EAAE;IACjBe,QAAQ,EAAE,EAAE;IACZE,KAAK,EAAE,SAAS;IAChBE,UAAU,EAAE;EACd,CAAC;EACDlB,MAAM,EAAE;IACNuB,SAAS,EAAE,EAAE;IACbE,UAAU,EAAE,EAAE;IACdC,cAAc,EAAE,CAAC;IACjBC,cAAc,EAAE;EAClB,CAAC;EACD1B,UAAU,EAAE;IACVa,QAAQ,EAAE,EAAE;IACZE,KAAK,EAAE,SAAS;IAChBC,SAAS,EAAE;EACb;AACF,CAAC,CAAC;AAAC,IAAAW,QAAA,GAAA1B,OAAA,CAAA7C,OAAA,GAEYc,qBAAqB","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","e","__esModule","default","THREAT_TITLES","root_detected","root_beer_detected","native_root_detected","dangerous_bins_detected","root_apps_detected","system_props_modified","frida_detected","xposed_detected","magisk_detected","debugger_detected","emulator_detected","ssl_validation_bypass","ssl_pinning_bypass","proxy_configuration","modified_ssl_libraries","certificate_tampering","THREAT_DESCRIPTIONS","SecurityBlockedScreen","threats","title","message","icon","createElement","SafeAreaView","style","styles","container","ScrollView","contentContainerStyle","scrollContent","bounces","View","iconContainer","Text","length","Fragment","threatsTitle","threatsList","map","threat","key","threatItem","bullet","threatContent","threatTitle","threatDescription","footer","footerText","exports","StyleSheet","create","flex","backgroundColor","padding","alignItems","width","height","borderRadius","justifyContent","marginBottom","fontSize","fontWeight","color","textAlign","lineHeight","alignSelf","flexDirection","borderLeftWidth","borderLeftColor","marginTop","marginRight","paddingTop","borderTopWidth","borderTopColor","_default"],"sourceRoot":"../../../src","sources":["components/SecurityBlockedScreen.tsx"],"mappings":"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","ignoreList":[]}
@@ -15,15 +15,18 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
15
15
 
16
16
  function useDeviceSecurity(options = {}) {
17
17
  const {
18
- onSecurityThreat,
19
- blockOnThreat = false,
20
- blockOptions,
21
18
  checkInterval = 0
22
19
  } = options;
23
20
  const [isSecure, setIsSecure] = (0, _react.useState)(null);
24
21
  const [isLoading, setIsLoading] = (0, _react.useState)(true);
25
22
  const [securityStatus, setSecurityStatus] = (0, _react.useState)(null);
26
23
  const [error, setError] = (0, _react.useState)(null);
24
+
25
+ // Use refs for options to avoid infinite loops when inline objects/functions are passed
26
+ const optionsRef = (0, _react.useRef)(options);
27
+ (0, _react.useEffect)(() => {
28
+ optionsRef.current = options;
29
+ }, [options]);
27
30
  const checkSecurity = (0, _react.useCallback)(async () => {
28
31
  if (_reactNative.Platform.OS !== 'android') {
29
32
  setIsSecure(true);
@@ -39,14 +42,17 @@ function useDeviceSecurity(options = {}) {
39
42
 
40
43
  // Handle security threats
41
44
  if (!status.isSecure) {
45
+ const currentOptions = optionsRef.current;
46
+
42
47
  // Call callback for each threat
43
48
  for (const threat of status.threats) {
44
- onSecurityThreat === null || onSecurityThreat === void 0 || onSecurityThreat(threat, status);
49
+ var _currentOptions$onSec;
50
+ (_currentOptions$onSec = currentOptions.onSecurityThreat) === null || _currentOptions$onSec === void 0 || _currentOptions$onSec.call(currentOptions, threat, status);
45
51
  }
46
52
 
47
53
  // Block if requested
48
- if (blockOnThreat) {
49
- _api.default.blockOnSecurityThreat(blockOptions);
54
+ if (currentOptions.blockOnThreat) {
55
+ _api.default.blockOnSecurityThreat(currentOptions.blockOptions);
50
56
  }
51
57
  }
52
58
  } catch (err) {
@@ -56,7 +62,7 @@ function useDeviceSecurity(options = {}) {
56
62
  } finally {
57
63
  setIsLoading(false);
58
64
  }
59
- }, [onSecurityThreat, blockOnThreat, blockOptions]);
65
+ }, []);
60
66
  const recheck = (0, _react.useCallback)(async () => {
61
67
  await checkSecurity();
62
68
  }, [checkSecurity]);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_api","_interopRequireDefault","e","__esModule","default","useDeviceSecurity","options","onSecurityThreat","blockOnThreat","blockOptions","checkInterval","isSecure","setIsSecure","useState","isLoading","setIsLoading","securityStatus","setSecurityStatus","error","setError","checkSecurity","useCallback","Platform","OS","status","deviceSecurity","getSecurityStatus","threat","threats","blockOnSecurityThreat","err","errorObj","Error","recheck","useEffect","intervalId","setInterval","clearInterval","_default","exports"],"sourceRoot":"../../../src","sources":["hooks/useDeviceSecurity.ts"],"mappings":";;;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAoC,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AANpC;AACA;AACA;;AAWO,SAASG,iBAAiBA,CAC/BC,OAAiC,GAAG,CAAC,CAAC,EACb;EACzB,MAAM;IACJC,gBAAgB;IAChBC,aAAa,GAAG,KAAK;IACrBC,YAAY;IACZC,aAAa,GAAG;EAClB,CAAC,GAAGJ,OAAO;EAEX,MAAM,CAACK,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAiB,IAAI,CAAC;EAC9D,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAF,eAAQ,EAAC,IAAI,CAAC;EAChD,MAAM,CAACG,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAJ,eAAQ,EAClD,IACF,CAAC;EACD,MAAM,CAACK,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAN,eAAQ,EAAe,IAAI,CAAC;EAEtD,MAAMO,aAAa,GAAG,IAAAC,kBAAW,EAAC,YAAY;IAC5C,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MAC7BX,WAAW,CAAC,IAAI,CAAC;MACjBG,YAAY,CAAC,KAAK,CAAC;MACnB;IACF;IAEA,IAAI;MACFA,YAAY,CAAC,IAAI,CAAC;MAClBI,QAAQ,CAAC,IAAI,CAAC;MAEd,MAAMK,MAAM,GAAG,MAAMC,YAAc,CAACC,iBAAiB,CAAC,CAAC;MACvDT,iBAAiB,CAACO,MAAM,CAAC;MACzBZ,WAAW,CAACY,MAAM,CAACb,QAAQ,CAAC;;MAE5B;MACA,IAAI,CAACa,MAAM,CAACb,QAAQ,EAAE;QACpB;QACA,KAAK,MAAMgB,MAAM,IAAIH,MAAM,CAACI,OAAO,EAAE;UACnCrB,gBAAgB,aAAhBA,gBAAgB,eAAhBA,gBAAgB,CAAGoB,MAAM,EAAEH,MAAM,CAAC;QACpC;;QAEA;QACA,IAAIhB,aAAa,EAAE;UACjBiB,YAAc,CAACI,qBAAqB,CAACpB,YAAY,CAAC;QACpD;MACF;IACF,CAAC,CAAC,OAAOqB,GAAG,EAAE;MACZ,MAAMC,QAAQ,GACZD,GAAG,YAAYE,KAAK,GAAGF,GAAG,GAAG,IAAIE,KAAK,CAAC,uBAAuB,CAAC;MACjEb,QAAQ,CAACY,QAAQ,CAAC;MAClBnB,WAAW,CAAC,KAAK,CAAC;IACpB,CAAC,SAAS;MACRG,YAAY,CAAC,KAAK,CAAC;IACrB;EACF,CAAC,EAAE,CAACR,gBAAgB,EAAEC,aAAa,EAAEC,YAAY,CAAC,CAAC;EAEnD,MAAMwB,OAAO,GAAG,IAAAZ,kBAAW,EAAC,YAAY;IACtC,MAAMD,aAAa,CAAC,CAAC;EACvB,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAEnB,IAAAc,gBAAS,EAAC,MAAM;IACdd,aAAa,CAAC,CAAC;;IAEf;IACA,IAAIV,aAAa,GAAG,CAAC,EAAE;MACrB,MAAMyB,UAAU,GAAGC,WAAW,CAAChB,aAAa,EAAEV,aAAa,CAAC;MAC5D,OAAO,MAAM2B,aAAa,CAACF,UAAU,CAAC;IACxC;EACF,CAAC,EAAE,CAACf,aAAa,EAAEV,aAAa,CAAC,CAAC;EAElC,OAAO;IACLC,QAAQ;IACRG,SAAS;IACTE,cAAc;IACdE,KAAK;IACLe;EACF,CAAC;AACH;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAnC,OAAA,GAEcC,iBAAiB","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_api","_interopRequireDefault","e","__esModule","default","useDeviceSecurity","options","checkInterval","isSecure","setIsSecure","useState","isLoading","setIsLoading","securityStatus","setSecurityStatus","error","setError","optionsRef","useRef","useEffect","current","checkSecurity","useCallback","Platform","OS","status","deviceSecurity","getSecurityStatus","currentOptions","threat","threats","_currentOptions$onSec","onSecurityThreat","call","blockOnThreat","blockOnSecurityThreat","blockOptions","err","errorObj","Error","recheck","intervalId","setInterval","clearInterval","_default","exports"],"sourceRoot":"../../../src","sources":["hooks/useDeviceSecurity.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeDeviceSecurity.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AA+BlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,gBAAgB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeDeviceSecurity.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAwClD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,gBAAgB,CAAC","ignoreList":[]}
package/lib/module/api.js CHANGED
@@ -44,7 +44,13 @@ class DeviceSecurity {
44
44
  hasXposed: false,
45
45
  hasMagisk: false,
46
46
  isDebuggable: false,
47
- isEmulator: false
47
+ isEmulator: false,
48
+ hasSSLValidationBypass: false,
49
+ hasSSLPinningBypass: false,
50
+ hasProxyConfiguration: false,
51
+ hasModifiedSSLLibraries: false,
52
+ hasCertificateTampering: false,
53
+ hasSSLSecurityIssue: false
48
54
  };
49
55
  }
50
56
  try {
@@ -56,6 +62,37 @@ class DeviceSecurity {
56
62
  }
57
63
  }
58
64
 
65
+ /**
66
+ * Get detailed SSL security status
67
+ */
68
+ async getSSLSecurityStatus() {
69
+ if (Platform.OS !== 'android') {
70
+ // iOS: no-op for now, return secure status
71
+ return {
72
+ hasSSLValidationBypass: false,
73
+ hasSSLPinningBypass: false,
74
+ hasProxyConfiguration: false,
75
+ hasModifiedSSLLibraries: false,
76
+ hasCertificateTampering: false,
77
+ hasSSLSecurityIssue: false
78
+ };
79
+ }
80
+ try {
81
+ const statusJson = await NativeDeviceSecurity.getSSLSecurityStatus();
82
+ return JSON.parse(statusJson);
83
+ } catch (error) {
84
+ console.error('DeviceSecurity: Error getting SSL security status', error);
85
+ return {
86
+ hasSSLValidationBypass: false,
87
+ hasSSLPinningBypass: false,
88
+ hasProxyConfiguration: false,
89
+ hasModifiedSSLLibraries: false,
90
+ hasCertificateTampering: false,
91
+ hasSSLSecurityIssue: false
92
+ };
93
+ }
94
+ }
95
+
59
96
  /**
60
97
  * Check if device is rooted (synchronous, Android only)
61
98
  */
@@ -146,6 +183,98 @@ class DeviceSecurity {
146
183
  }
147
184
  }
148
185
 
186
+ // ===== SSL Security Methods =====
187
+
188
+ /**
189
+ * Check if SSL validation has been bypassed
190
+ */
191
+ hasSSLValidationBypass() {
192
+ if (Platform.OS !== 'android') {
193
+ return false;
194
+ }
195
+ try {
196
+ return NativeDeviceSecurity.hasSSLValidationBypass();
197
+ } catch (error) {
198
+ console.error('DeviceSecurity: Error checking SSL validation bypass', error);
199
+ return false;
200
+ }
201
+ }
202
+
203
+ /**
204
+ * Check if SSL pinning bypass tools are present
205
+ */
206
+ hasSSLPinningBypass() {
207
+ if (Platform.OS !== 'android') {
208
+ return false;
209
+ }
210
+ try {
211
+ return NativeDeviceSecurity.hasSSLPinningBypass();
212
+ } catch (error) {
213
+ console.error('DeviceSecurity: Error checking SSL pinning bypass', error);
214
+ return false;
215
+ }
216
+ }
217
+
218
+ /**
219
+ * Check if proxy is configured (potential MITM)
220
+ */
221
+ hasProxyConfiguration() {
222
+ if (Platform.OS !== 'android') {
223
+ return false;
224
+ }
225
+ try {
226
+ return NativeDeviceSecurity.hasProxyConfiguration();
227
+ } catch (error) {
228
+ console.error('DeviceSecurity: Error checking proxy configuration', error);
229
+ return false;
230
+ }
231
+ }
232
+
233
+ /**
234
+ * Check if SSL libraries have been modified
235
+ */
236
+ hasModifiedSSLLibraries() {
237
+ if (Platform.OS !== 'android') {
238
+ return false;
239
+ }
240
+ try {
241
+ return NativeDeviceSecurity.hasModifiedSSLLibraries();
242
+ } catch (error) {
243
+ console.error('DeviceSecurity: Error checking modified SSL libraries', error);
244
+ return false;
245
+ }
246
+ }
247
+
248
+ /**
249
+ * Check if certificates have been tampered with
250
+ */
251
+ hasCertificateTampering() {
252
+ if (Platform.OS !== 'android') {
253
+ return false;
254
+ }
255
+ try {
256
+ return NativeDeviceSecurity.hasCertificateTampering();
257
+ } catch (error) {
258
+ console.error('DeviceSecurity: Error checking certificate tampering', error);
259
+ return false;
260
+ }
261
+ }
262
+
263
+ /**
264
+ * Comprehensive SSL security check
265
+ */
266
+ hasSSLSecurityIssue() {
267
+ if (Platform.OS !== 'android') {
268
+ return false;
269
+ }
270
+ try {
271
+ return NativeDeviceSecurity.hasSSLSecurityIssue();
272
+ } catch (error) {
273
+ console.error('DeviceSecurity: Error checking SSL security', error);
274
+ return false;
275
+ }
276
+ }
277
+
149
278
  /**
150
279
  * Block app when security threat detected
151
280
  * This will show an alert and potentially exit the app
@@ -194,7 +323,13 @@ class DeviceSecurity {
194
323
  hasXposed: false,
195
324
  hasMagisk: false,
196
325
  isDebuggable: false,
197
- isEmulator: false
326
+ isEmulator: false,
327
+ hasSSLValidationBypass: false,
328
+ hasSSLPinningBypass: false,
329
+ hasProxyConfiguration: false,
330
+ hasModifiedSSLLibraries: false,
331
+ hasCertificateTampering: false,
332
+ hasSSLSecurityIssue: false
198
333
  };
199
334
  }
200
335
  }