react-native-device-defense 1.0.0 → 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.
- package/README.md +106 -19
- package/android/build.gradle +2 -2
- package/android/src/main/cpp/device-security.cpp +281 -7
- package/android/src/main/java/{vn/osp/security → com/devicedefense}/DebugDetection.kt +1 -1
- package/android/src/main/java/{vn/osp/security → com/devicedefense}/DeviceSecurityModule.kt +127 -3
- package/android/src/main/java/{vn/osp/security → com/devicedefense}/DeviceSecurityPackage.kt +1 -1
- package/android/src/main/java/{vn/osp/security → com/devicedefense}/EmulatorDetection.kt +30 -19
- package/android/src/main/java/{vn/osp/security → com/devicedefense}/HookDetection.kt +1 -1
- package/android/src/main/java/{vn/osp/security → com/devicedefense}/NativeSecurityCheck.kt +44 -2
- package/android/src/main/java/{vn/osp/security → com/devicedefense}/RootDetection.kt +1 -1
- package/android/test-gradle.gradle +3 -0
- package/lib/commonjs/NativeDeviceSecurity.js.map +1 -1
- package/lib/commonjs/api.js +137 -2
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/components/SecurityBlockedScreen.js +12 -2
- package/lib/commonjs/components/SecurityBlockedScreen.js.map +1 -1
- package/lib/commonjs/hooks/useDeviceSecurity.js +13 -7
- package/lib/commonjs/hooks/useDeviceSecurity.js.map +1 -1
- package/lib/module/NativeDeviceSecurity.js.map +1 -1
- package/lib/module/api.js +137 -2
- package/lib/module/api.js.map +1 -1
- package/lib/module/components/SecurityBlockedScreen.js +12 -2
- package/lib/module/components/SecurityBlockedScreen.js.map +1 -1
- package/lib/module/hooks/useDeviceSecurity.js +14 -8
- package/lib/module/hooks/useDeviceSecurity.js.map +1 -1
- package/lib/typescript/NativeDeviceSecurity.d.ts +7 -0
- package/lib/typescript/NativeDeviceSecurity.d.ts.map +1 -1
- package/lib/typescript/api.d.ts +29 -1
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/components/SecurityBlockedScreen.d.ts.map +1 -1
- package/lib/typescript/hooks/useDeviceSecurity.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +30 -1
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/react-native-device-security.podspec +4 -4
- package/src/NativeDeviceSecurity.ts +9 -0
- package/src/api.ts +143 -0
- package/src/components/SecurityBlockedScreen.tsx +10 -0
- package/src/hooks/useDeviceSecurity.ts +14 -11
- package/src/types.ts +36 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_api","_interopRequireDefault","e","__esModule","default","useDeviceSecurity","options","
|
|
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;
|
|
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
|
}
|
package/lib/module/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","NativeDeviceSecurity","DeviceSecurity","isDeviceSecure","OS","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","deviceSecurityInstance"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":"AAAA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,QAAQ,cAAc;AACvC,OAAOC,oBAAoB,MAAM,wBAAwB;
|
|
1
|
+
{"version":3,"names":["Platform","NativeDeviceSecurity","DeviceSecurity","isDeviceSecure","OS","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","deviceSecurityInstance"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,7 +17,12 @@ const THREAT_TITLES = {
|
|
|
17
17
|
xposed_detected: 'Phát hiện Xposed Framework',
|
|
18
18
|
magisk_detected: 'Phát hiện Magisk',
|
|
19
19
|
debugger_detected: 'Phát hiện Debugger',
|
|
20
|
-
emulator_detected: 'Phát hiện Bộ giả lập'
|
|
20
|
+
emulator_detected: 'Phát hiện Bộ giả lập',
|
|
21
|
+
ssl_validation_bypass: 'SSL Validation bị bypass',
|
|
22
|
+
ssl_pinning_bypass: 'SSL Pinning bị bypass',
|
|
23
|
+
proxy_configuration: 'Phát hiện Proxy (MITM)',
|
|
24
|
+
modified_ssl_libraries: 'SSL Library đã sửa đổi',
|
|
25
|
+
certificate_tampering: 'Certificate bị can thiệp'
|
|
21
26
|
};
|
|
22
27
|
const THREAT_DESCRIPTIONS = {
|
|
23
28
|
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.',
|
|
@@ -30,7 +35,12 @@ const THREAT_DESCRIPTIONS = {
|
|
|
30
35
|
xposed_detected: 'Phát hiện Xposed Framework - có thể can thiệp vào ứng dụng.',
|
|
31
36
|
magisk_detected: 'Phát hiện Magisk - công cụ root ẩn danh.',
|
|
32
37
|
debugger_detected: 'Phát hiện debugger đang gắn vào ứng dụng.',
|
|
33
|
-
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.'
|
|
38
|
+
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.',
|
|
39
|
+
ssl_validation_bypass: 'SSL certificate validation đã bị bypass, kết nối có thể không an toàn.',
|
|
40
|
+
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.',
|
|
41
|
+
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.',
|
|
42
|
+
modified_ssl_libraries: 'SSL libraries đã bị sửa đổi - có thể dẫn đến kết nối không an toàn.',
|
|
43
|
+
certificate_tampering: 'Phát hiện certificate đã bị can thiệp - kết nối có thể bị theo dõi.'
|
|
34
44
|
};
|
|
35
45
|
|
|
36
46
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Text","StyleSheet","ScrollView","SafeAreaView","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","style","styles","container","contentContainerStyle","scrollContent","bounces","iconContainer","length","Fragment","threatsTitle","threatsList","map","threat","key","threatItem","bullet","threatContent","threatTitle","threatDescription","footer","footerText","create","flex","backgroundColor","padding","alignItems","width","height","borderRadius","justifyContent","marginBottom","fontSize","fontWeight","color","textAlign","lineHeight","alignSelf","flexDirection","borderLeftWidth","borderLeftColor","marginTop","marginRight","paddingTop","borderTopWidth","borderTopColor"],"sourceRoot":"../../../src","sources":["components/SecurityBlockedScreen.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,IAAI,EACJC,IAAI,EACJC,UAAU,EACVC,UAAU,EACVC,YAAY,QAEP,cAAc;AAcrB,MAAMC,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;
|
|
1
|
+
{"version":3,"names":["React","View","Text","StyleSheet","ScrollView","SafeAreaView","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","style","styles","container","contentContainerStyle","scrollContent","bounces","iconContainer","length","Fragment","threatsTitle","threatsList","map","threat","key","threatItem","bullet","threatContent","threatTitle","threatDescription","footer","footerText","create","flex","backgroundColor","padding","alignItems","width","height","borderRadius","justifyContent","marginBottom","fontSize","fontWeight","color","textAlign","lineHeight","alignSelf","flexDirection","borderLeftWidth","borderLeftColor","marginTop","marginRight","paddingTop","borderTopWidth","borderTopColor"],"sourceRoot":"../../../src","sources":["components/SecurityBlockedScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,20 +2,23 @@
|
|
|
2
2
|
* React hook for device security
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { useCallback, useEffect, useState } from 'react';
|
|
5
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
6
6
|
import { Platform } from 'react-native';
|
|
7
7
|
import deviceSecurity from '../api';
|
|
8
8
|
export function useDeviceSecurity(options = {}) {
|
|
9
9
|
const {
|
|
10
|
-
onSecurityThreat,
|
|
11
|
-
blockOnThreat = false,
|
|
12
|
-
blockOptions,
|
|
13
10
|
checkInterval = 0
|
|
14
11
|
} = options;
|
|
15
12
|
const [isSecure, setIsSecure] = useState(null);
|
|
16
13
|
const [isLoading, setIsLoading] = useState(true);
|
|
17
14
|
const [securityStatus, setSecurityStatus] = useState(null);
|
|
18
15
|
const [error, setError] = useState(null);
|
|
16
|
+
|
|
17
|
+
// Use refs for options to avoid infinite loops when inline objects/functions are passed
|
|
18
|
+
const optionsRef = useRef(options);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
optionsRef.current = options;
|
|
21
|
+
}, [options]);
|
|
19
22
|
const checkSecurity = useCallback(async () => {
|
|
20
23
|
if (Platform.OS !== 'android') {
|
|
21
24
|
setIsSecure(true);
|
|
@@ -31,14 +34,17 @@ export function useDeviceSecurity(options = {}) {
|
|
|
31
34
|
|
|
32
35
|
// Handle security threats
|
|
33
36
|
if (!status.isSecure) {
|
|
37
|
+
const currentOptions = optionsRef.current;
|
|
38
|
+
|
|
34
39
|
// Call callback for each threat
|
|
35
40
|
for (const threat of status.threats) {
|
|
36
|
-
|
|
41
|
+
var _currentOptions$onSec;
|
|
42
|
+
(_currentOptions$onSec = currentOptions.onSecurityThreat) === null || _currentOptions$onSec === void 0 || _currentOptions$onSec.call(currentOptions, threat, status);
|
|
37
43
|
}
|
|
38
44
|
|
|
39
45
|
// Block if requested
|
|
40
|
-
if (blockOnThreat) {
|
|
41
|
-
deviceSecurity.blockOnSecurityThreat(blockOptions);
|
|
46
|
+
if (currentOptions.blockOnThreat) {
|
|
47
|
+
deviceSecurity.blockOnSecurityThreat(currentOptions.blockOptions);
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
50
|
} catch (err) {
|
|
@@ -48,7 +54,7 @@ export function useDeviceSecurity(options = {}) {
|
|
|
48
54
|
} finally {
|
|
49
55
|
setIsLoading(false);
|
|
50
56
|
}
|
|
51
|
-
}, [
|
|
57
|
+
}, []);
|
|
52
58
|
const recheck = useCallback(async () => {
|
|
53
59
|
await checkSecurity();
|
|
54
60
|
}, [checkSecurity]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useState","Platform","deviceSecurity","useDeviceSecurity","options","
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","Platform","deviceSecurity","useDeviceSecurity","options","checkInterval","isSecure","setIsSecure","isLoading","setIsLoading","securityStatus","setSecurityStatus","error","setError","optionsRef","current","checkSecurity","OS","status","getSecurityStatus","currentOptions","threat","threats","_currentOptions$onSec","onSecurityThreat","call","blockOnThreat","blockOnSecurityThreat","blockOptions","err","errorObj","Error","recheck","intervalId","setInterval","clearInterval"],"sourceRoot":"../../../src","sources":["hooks/useDeviceSecurity.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,13 @@ export interface Spec extends TurboModule {
|
|
|
7
7
|
hasMagisk(): boolean;
|
|
8
8
|
isDebuggable(): boolean;
|
|
9
9
|
isEmulator(): boolean;
|
|
10
|
+
hasSSLValidationBypass(): boolean;
|
|
11
|
+
hasSSLPinningBypass(): boolean;
|
|
12
|
+
hasProxyConfiguration(): boolean;
|
|
13
|
+
hasModifiedSSLLibraries(): boolean;
|
|
14
|
+
hasCertificateTampering(): boolean;
|
|
15
|
+
hasSSLSecurityIssue(): boolean;
|
|
16
|
+
getSSLSecurityStatus(): Promise<string>;
|
|
10
17
|
getSecurityStatus(): Promise<string>;
|
|
11
18
|
isDeviceSecure(): Promise<boolean>;
|
|
12
19
|
blockOnSecurityThreat(showAlert: boolean, alertTitle: string, alertMessage: string, alertButtonText: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeDeviceSecurity.d.ts","sourceRoot":"","sources":["../../src/NativeDeviceSecurity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,QAAQ,IAAI,OAAO,CAAC;IACpB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAGvC,QAAQ,IAAI,OAAO,CAAC;IACpB,SAAS,IAAI,OAAO,CAAC;IACrB,SAAS,IAAI,OAAO,CAAC;IAGrB,YAAY,IAAI,OAAO,CAAC;IAGxB,UAAU,IAAI,OAAO,CAAC;IAGtB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAGnC,qBAAqB,CACnB,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,IAAI,CAAC;CACT;;AAED,wBAAwE"}
|
|
1
|
+
{"version":3,"file":"NativeDeviceSecurity.d.ts","sourceRoot":"","sources":["../../src/NativeDeviceSecurity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,QAAQ,IAAI,OAAO,CAAC;IACpB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAGvC,QAAQ,IAAI,OAAO,CAAC;IACpB,SAAS,IAAI,OAAO,CAAC;IACrB,SAAS,IAAI,OAAO,CAAC;IAGrB,YAAY,IAAI,OAAO,CAAC;IAGxB,UAAU,IAAI,OAAO,CAAC;IAGtB,sBAAsB,IAAI,OAAO,CAAC;IAClC,mBAAmB,IAAI,OAAO,CAAC;IAC/B,qBAAqB,IAAI,OAAO,CAAC;IACjC,uBAAuB,IAAI,OAAO,CAAC;IACnC,uBAAuB,IAAI,OAAO,CAAC;IACnC,mBAAmB,IAAI,OAAO,CAAC;IAC/B,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAGxC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAGnC,qBAAqB,CACnB,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,IAAI,CAAC;CACT;;AAED,wBAAwE"}
|
package/lib/typescript/api.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* DeviceSecurity API
|
|
3
3
|
* Main singleton class for device security checks
|
|
4
4
|
*/
|
|
5
|
-
import type { BlockOnSecurityThreatOptions, SecurityStatus } from './types';
|
|
5
|
+
import type { BlockOnSecurityThreatOptions, SecurityStatus, SSLSecurityStatus } from './types';
|
|
6
6
|
/**
|
|
7
7
|
* Main DeviceSecurity API class
|
|
8
8
|
*/
|
|
@@ -15,6 +15,10 @@ declare class DeviceSecurity {
|
|
|
15
15
|
* Get detailed security status
|
|
16
16
|
*/
|
|
17
17
|
getSecurityStatus(): Promise<SecurityStatus>;
|
|
18
|
+
/**
|
|
19
|
+
* Get detailed SSL security status
|
|
20
|
+
*/
|
|
21
|
+
getSSLSecurityStatus(): Promise<SSLSecurityStatus>;
|
|
18
22
|
/**
|
|
19
23
|
* Check if device is rooted (synchronous, Android only)
|
|
20
24
|
*/
|
|
@@ -39,6 +43,30 @@ declare class DeviceSecurity {
|
|
|
39
43
|
* Check if running on emulator
|
|
40
44
|
*/
|
|
41
45
|
isEmulator(): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Check if SSL validation has been bypassed
|
|
48
|
+
*/
|
|
49
|
+
hasSSLValidationBypass(): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Check if SSL pinning bypass tools are present
|
|
52
|
+
*/
|
|
53
|
+
hasSSLPinningBypass(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Check if proxy is configured (potential MITM)
|
|
56
|
+
*/
|
|
57
|
+
hasProxyConfiguration(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Check if SSL libraries have been modified
|
|
60
|
+
*/
|
|
61
|
+
hasModifiedSSLLibraries(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Check if certificates have been tampered with
|
|
64
|
+
*/
|
|
65
|
+
hasCertificateTampering(): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Comprehensive SSL security check
|
|
68
|
+
*/
|
|
69
|
+
hasSSLSecurityIssue(): boolean;
|
|
42
70
|
/**
|
|
43
71
|
* Block app when security threat detected
|
|
44
72
|
* This will show an alert and potentially exit the app
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACV,4BAA4B,EAC5B,cAAc,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACV,4BAA4B,EAC5B,cAAc,EAEd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,cAAM,cAAc;IAClB;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAcxC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAmClD;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA6BxD;;OAEG;IACH,QAAQ,IAAI,OAAO;IAanB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAanB;;OAEG;IACH,SAAS,IAAI,OAAO;IAapB;;OAEG;IACH,SAAS,IAAI,OAAO;IAapB;;OAEG;IACH,YAAY,IAAI,OAAO;IAavB;;OAEG;IACH,UAAU,IAAI,OAAO;IAerB;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAajC;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAa9B;;OAEG;IACH,qBAAqB,IAAI,OAAO;IAahC;;OAEG;IACH,uBAAuB,IAAI,OAAO;IAalC;;OAEG;IACH,uBAAuB,IAAI,OAAO;IAalC;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAa9B;;;OAGG;IACH,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,IAAI;IAiCvE;;OAEG;IACH,OAAO,CAAC,wBAAwB;CAuBjC;AAGD,QAAA,MAAM,sBAAsB,gBAAuB,CAAC;AACpD,eAAe,sBAAsB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecurityBlockedScreen.d.ts","sourceRoot":"","sources":["../../../src/components/SecurityBlockedScreen.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAAkB,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/D,UAAU,0BAA0B;IAClC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"SecurityBlockedScreen.d.ts","sourceRoot":"","sources":["../../../src/components/SecurityBlockedScreen.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAAkB,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/D,UAAU,0BAA0B;IAClC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAwCD;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAoDtE,CAAC;AA4FF,eAAe,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDeviceSecurity.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDeviceSecurity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAEV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAElB,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"useDeviceSecurity.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDeviceSecurity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAEV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAElB,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CA4EzB;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Security threat types
|
|
3
3
|
*/
|
|
4
|
-
export type SecurityThreat = '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';
|
|
4
|
+
export type SecurityThreat = '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';
|
|
5
|
+
/**
|
|
6
|
+
* SSL Security Status
|
|
7
|
+
*/
|
|
8
|
+
export interface SSLSecurityStatus {
|
|
9
|
+
/** SSL validation has been bypassed */
|
|
10
|
+
hasSSLValidationBypass: boolean;
|
|
11
|
+
/** SSL pinning bypass tools detected */
|
|
12
|
+
hasSSLPinningBypass: boolean;
|
|
13
|
+
/** Proxy configuration detected (potential MITM) */
|
|
14
|
+
hasProxyConfiguration: boolean;
|
|
15
|
+
/** SSL libraries have been modified */
|
|
16
|
+
hasModifiedSSLLibraries: boolean;
|
|
17
|
+
/** Certificate tampering detected */
|
|
18
|
+
hasCertificateTampering: boolean;
|
|
19
|
+
/** Any SSL security issue detected */
|
|
20
|
+
hasSSLSecurityIssue: boolean;
|
|
21
|
+
}
|
|
5
22
|
/**
|
|
6
23
|
* Detailed security status
|
|
7
24
|
*/
|
|
@@ -32,6 +49,18 @@ export interface SecurityStatus {
|
|
|
32
49
|
isDebuggable: boolean;
|
|
33
50
|
/** Running on emulator */
|
|
34
51
|
isEmulator: boolean;
|
|
52
|
+
/** SSL validation has been bypassed */
|
|
53
|
+
hasSSLValidationBypass: boolean;
|
|
54
|
+
/** SSL pinning bypass tools detected */
|
|
55
|
+
hasSSLPinningBypass: boolean;
|
|
56
|
+
/** Proxy configuration detected */
|
|
57
|
+
hasProxyConfiguration: boolean;
|
|
58
|
+
/** SSL libraries have been modified */
|
|
59
|
+
hasModifiedSSLLibraries: boolean;
|
|
60
|
+
/** Certificate tampering detected */
|
|
61
|
+
hasCertificateTampering: boolean;
|
|
62
|
+
/** Any SSL security issue detected */
|
|
63
|
+
hasSSLSecurityIssue: boolean;
|
|
35
64
|
/** Additional details about detection */
|
|
36
65
|
details?: Record<string, boolean | string | number>;
|
|
37
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,eAAe,GACf,oBAAoB,GACpB,sBAAsB,GACtB,yBAAyB,GACzB,oBAAoB,GACpB,uBAAuB,GACvB,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-device-defense",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Multi-layer device security detection for React Native (root, hook, debugger, emulator detection)",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"type": "git",
|
|
31
31
|
"url": "git+https://github.com/BuiHung1612/react-native-device-security.git"
|
|
32
32
|
},
|
|
33
|
-
"author": "
|
|
33
|
+
"author": "Hung Bui <https://github.com/BuiHung1612>",
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"bugs": {
|
|
36
36
|
"url": "https://github.com/BuiHung1612/react-native-device-security/issues"
|
|
@@ -52,6 +52,8 @@
|
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@types/react": "^18.0.0",
|
|
54
54
|
"@types/react-native": "^0.72.0",
|
|
55
|
+
"@typescript-eslint/parser": "^8.59.2",
|
|
56
|
+
"eslint": "^8.57.1",
|
|
55
57
|
"react-native-builder-bob": "^0.20.0",
|
|
56
58
|
"typescript": "^5.0.0"
|
|
57
59
|
},
|
|
@@ -69,4 +71,4 @@
|
|
|
69
71
|
]
|
|
70
72
|
]
|
|
71
73
|
}
|
|
72
|
-
}
|
|
74
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
Pod::Spec.new do |s|
|
|
2
|
-
s.name = 'react-native-device-
|
|
2
|
+
s.name = 'react-native-device-defense'
|
|
3
3
|
s.version = '1.0.0'
|
|
4
4
|
s.summary = 'Multi-layer device security detection for React Native'
|
|
5
5
|
s.description = <<-DESC
|
|
6
6
|
React Native library for detecting device security threats including root detection,
|
|
7
7
|
hook detection (Frida, Xposed, Magisk), debugger detection, and emulator detection.
|
|
8
8
|
DESC
|
|
9
|
-
s.homepage = 'https://github.com/
|
|
9
|
+
s.homepage = 'https://github.com/BuiHung1612/react-native-device-security'
|
|
10
10
|
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
|
11
|
-
s.author = { '
|
|
11
|
+
s.author = { 'Hung Bui' => 'https://github.com/BuiHung1612' }
|
|
12
12
|
s.platforms = { :ios => '12.0' }
|
|
13
|
-
s.source = { :git => 'https://github.com/
|
|
13
|
+
s.source = { :git => 'https://github.com/BuiHung1612/react-native-device-security.git', :tag => "v#{s.version}" }
|
|
14
14
|
s.source_files = 'ios/**/*.{h,m,mm,swift}'
|
|
15
15
|
s.requires_arc = true
|
|
16
16
|
|
|
@@ -17,6 +17,15 @@ export interface Spec extends TurboModule {
|
|
|
17
17
|
// Emulator detection
|
|
18
18
|
isEmulator(): boolean;
|
|
19
19
|
|
|
20
|
+
// SSL security methods
|
|
21
|
+
hasSSLValidationBypass(): boolean;
|
|
22
|
+
hasSSLPinningBypass(): boolean;
|
|
23
|
+
hasProxyConfiguration(): boolean;
|
|
24
|
+
hasModifiedSSLLibraries(): boolean;
|
|
25
|
+
hasCertificateTampering(): boolean;
|
|
26
|
+
hasSSLSecurityIssue(): boolean;
|
|
27
|
+
getSSLSecurityStatus(): Promise<string>;
|
|
28
|
+
|
|
20
29
|
// Comprehensive security check
|
|
21
30
|
getSecurityStatus(): Promise<string>;
|
|
22
31
|
isDeviceSecure(): Promise<boolean>;
|