freerasp-react-native 3.10.0 → 3.12.0
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/CHANGELOG.md +32 -0
- package/README.md +7 -9
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/freeraspreactnative/FreeraspReactNativeModule.kt +59 -12
- package/android/src/main/java/com/freeraspreactnative/FreeraspThreatHandler.kt +4 -0
- package/android/src/main/java/com/freeraspreactnative/Threat.kt +3 -1
- package/android/src/main/java/com/freeraspreactnative/utils/Extensions.kt +1 -1
- package/android/src/main/java/com/freeraspreactnative/utils/Utils.kt +4 -1
- package/example/src/App.tsx +10 -2
- package/example/src/MalwareItem.tsx +14 -15
- package/example/src/checks.ts +1 -0
- package/lib/commonjs/index.js +24 -7
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/threat.js +2 -1
- package/lib/commonjs/threat.js.map +1 -1
- package/lib/module/index.js +20 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/threat.js +2 -1
- package/lib/module/threat.js.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/threat.d.ts +1 -0
- package/lib/typescript/src/threat.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +1 -0
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.tsx +24 -4
- package/src/threat.ts +2 -0
- package/src/types.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,38 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.12.0] - 2024-12-06
|
|
9
|
+
|
|
10
|
+
- iOS SDK version: 6.6.3
|
|
11
|
+
- Android SDK version: 13.0.0
|
|
12
|
+
|
|
13
|
+
### React Native
|
|
14
|
+
|
|
15
|
+
#### Changed
|
|
16
|
+
|
|
17
|
+
- App icons for detected malware are not fetched automatically anymore, which reduces computation required to retrieve malware data. From now on, app icons have to be retrieved using the `getAppIcon` method
|
|
18
|
+
- Parsing of malware data is now async
|
|
19
|
+
|
|
20
|
+
### Android
|
|
21
|
+
|
|
22
|
+
#### Changed
|
|
23
|
+
|
|
24
|
+
- Malware data is now parsed on background thread to improve responsiveness
|
|
25
|
+
|
|
26
|
+
## [3.11.0] - 2024-11-19
|
|
27
|
+
|
|
28
|
+
### React Native
|
|
29
|
+
|
|
30
|
+
#### Added
|
|
31
|
+
|
|
32
|
+
- Added `adbEnabled` callback, which allows you to detect USB debugging option enabled in the developer settings on the device
|
|
33
|
+
|
|
34
|
+
### Android
|
|
35
|
+
|
|
36
|
+
#### Added
|
|
37
|
+
|
|
38
|
+
- ADB detection feature
|
|
39
|
+
|
|
8
40
|
## [3.10.0] - 2024-11-15
|
|
9
41
|
|
|
10
42
|
- Android SDK version: 12.0.0
|
package/README.md
CHANGED
|
@@ -10,7 +10,6 @@ freeRASP for React Native is a mobile in-app protection and security monitoring
|
|
|
10
10
|
|
|
11
11
|
:loudspeaker: The official documentation has been moved to a new location. You can now find it [here](https://docs.talsec.app/docs-and-articles-portal). :loudspeaker:
|
|
12
12
|
|
|
13
|
-
|
|
14
13
|
# Overview
|
|
15
14
|
|
|
16
15
|
The freeRASP is available for Flutter, Cordova, React Native, Android, and iOS developers. We encourage community contributions, investigations of attack cases, joint data research, and other activities aiming to make better app security and app safety for end-users.
|
|
@@ -29,7 +28,7 @@ Key features are the detection and prevention of
|
|
|
29
28
|
- Untrusted installation method
|
|
30
29
|
- App/Device (un)binding
|
|
31
30
|
|
|
32
|
-
Additional freeRASP features include low latency, easy integration and a weekly [Security Report](https://docs.talsec.app/freerasp/security-report
|
|
31
|
+
Additional freeRASP features include low latency, easy integration and a weekly [Security Report](https://docs.talsec.app/freerasp/security-report) containing detailed information about detected incidents and potential threats, summarizing the state of your app security.
|
|
33
32
|
|
|
34
33
|
The commercial version provides a top-notch protection level, extra features, support and maintenance. One of the most valued commercial features is AppiCrypt® - App Integrity Cryptogram.
|
|
35
34
|
|
|
@@ -46,6 +45,11 @@ Learn more about commercial features at [https://talsec.app](https://talsec.app)
|
|
|
46
45
|
|
|
47
46
|
Learn more about freemium freeRASP features at [GitHub main repository](https://github.com/talsec/Free-RASP-Community).
|
|
48
47
|
|
|
48
|
+
## :radioactive: freeMalwareDetection
|
|
49
|
+
**freeMalwareDetection** is a powerful feature designed to enhance the security of your Android application by quickly and efficiently scanning for malicious or suspicious applications (e.g. Android malware) based on various blacklists and security policies. It helps to detect apps with suspicious package names, hashes, or potentially dangerous permissions.
|
|
50
|
+
|
|
51
|
+
After the integration of freeRASP, make sure you visit the [freeMalwareDetection](https://docs.talsec.app/freemalwaredetection) repository to learn more about this feature!
|
|
52
|
+
|
|
49
53
|
# :book: Discover the Official freeRASP Documentation
|
|
50
54
|
|
|
51
55
|
Visit the [GitBook page](https://docs.talsec.app/freerasp) for comprehensive and up-to-date guides, tutorials, and technical documentation specifically for freeRASP. It serves as your go-to resource, offering everything from basic instructions to advanced tips and tricks to help you get the most out of the project.
|
|
@@ -56,12 +60,6 @@ For integrating freeRASP on the React Native platform, be sure to follow all the
|
|
|
56
60
|
|
|
57
61
|
Be sure to bookmark it and stay informed! :books: :sparkles:.
|
|
58
62
|
|
|
59
|
-
## :scroll: Reference to Legacy Documentation
|
|
60
|
-
|
|
61
|
-
If you have any suggestions for improvement or notice anything that could be clarified in the new GitBook documentation, please open an issue. Your feedback helps us maintain high-quality resources for all users.
|
|
62
|
-
|
|
63
|
-
For information on older integration methods, you can refer to the [freeRASP wiki](https://github.com/talsec/Free-RASP-ReactNative/wiki), which includes comprehensive legacy details and guidance. Additionally, the old integration can be found when you checkout to a specific tag. Your input is invaluable in helping us improve our resources and provide even better support for your needs.
|
|
64
|
-
|
|
65
63
|
# :rocket: What's New and Changelog
|
|
66
64
|
|
|
67
65
|
Stay informed and make the most of freeRASP by checking out [What's New and Changelog](https://docs.talsec.app/freerasp/whats-new-and-changelog)! Here, you’ll discover the latest features, enhancements, and bug fixes we’ve implemented to improve your experience across all platforms, including Android, iOS, Flutter, React Native, Capacitor, and Cordova.
|
|
@@ -75,4 +73,4 @@ If you have any ideas for improvements, feel free to [raise an issue](https://gi
|
|
|
75
73
|
You can check out the project board [here](https://github.com/orgs/talsec/projects/2).
|
|
76
74
|
|
|
77
75
|
# :page_facing_up: License
|
|
78
|
-
This project is provided as freemium software, i.e. there is a fair usage policy that imposes some limitations on the free usage. The SDK software consists of open-source and binary parts, which is the property of Talsec. The open-source part is licensed under the MIT License - see the LICENSE file for details.
|
|
76
|
+
This project is provided as freemium software, i.e. there is a fair usage policy that imposes some limitations on the free usage. The SDK software consists of open-source and binary parts, which is the property of Talsec. The open-source part is licensed under the MIT License - see the LICENSE file for details.
|
package/android/build.gradle
CHANGED
|
@@ -90,7 +90,7 @@ dependencies {
|
|
|
90
90
|
implementation "com.facebook.react:react-native:$react_native_version"
|
|
91
91
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
92
92
|
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1"
|
|
93
|
-
implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-ReactNative:
|
|
93
|
+
implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-ReactNative:13.0.0"
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
if (isNewArchitectureEnabled()) {
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
package com.freeraspreactnative
|
|
2
2
|
|
|
3
|
+
import android.os.Handler
|
|
4
|
+
import android.os.HandlerThread
|
|
5
|
+
import android.os.Looper
|
|
3
6
|
import com.aheaditec.talsec_security.security.api.SuspiciousAppInfo
|
|
4
7
|
import com.aheaditec.talsec_security.security.api.Talsec
|
|
5
8
|
import com.aheaditec.talsec_security.security.api.TalsecConfig
|
|
6
9
|
import com.aheaditec.talsec_security.security.api.ThreatListener
|
|
7
10
|
import com.facebook.react.bridge.Arguments
|
|
11
|
+
import com.facebook.react.bridge.LifecycleEventListener
|
|
8
12
|
import com.facebook.react.bridge.Promise
|
|
9
13
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
10
14
|
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
@@ -13,6 +17,7 @@ import com.facebook.react.bridge.ReadableMap
|
|
|
13
17
|
import com.facebook.react.bridge.UiThreadUtil.runOnUiThread
|
|
14
18
|
import com.facebook.react.bridge.WritableArray
|
|
15
19
|
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
20
|
+
import com.freeraspreactnative.utils.Utils
|
|
16
21
|
import com.freeraspreactnative.utils.getArraySafe
|
|
17
22
|
import com.freeraspreactnative.utils.getBooleanSafe
|
|
18
23
|
import com.freeraspreactnative.utils.getMapThrowing
|
|
@@ -24,6 +29,19 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
|
|
|
24
29
|
ReactContextBaseJavaModule(reactContext) {
|
|
25
30
|
|
|
26
31
|
private val listener = ThreatListener(FreeraspThreatHandler, FreeraspThreatHandler)
|
|
32
|
+
private val lifecycleListener = object : LifecycleEventListener {
|
|
33
|
+
override fun onHostResume() {
|
|
34
|
+
// do nothing
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
override fun onHostPause() {
|
|
38
|
+
// do nothing
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
override fun onHostDestroy() {
|
|
42
|
+
backgroundHandlerThread.quitSafely()
|
|
43
|
+
}
|
|
44
|
+
}
|
|
27
45
|
|
|
28
46
|
override fun getName(): String {
|
|
29
47
|
return NAME
|
|
@@ -31,6 +49,7 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
|
|
|
31
49
|
|
|
32
50
|
init {
|
|
33
51
|
appReactContext = reactContext
|
|
52
|
+
reactContext.addLifecycleEventListener(lifecycleListener)
|
|
34
53
|
}
|
|
35
54
|
|
|
36
55
|
@ReactMethod
|
|
@@ -103,6 +122,20 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
|
|
|
103
122
|
promise.resolve(true)
|
|
104
123
|
}
|
|
105
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Method retrieves app icon for the given parameter
|
|
127
|
+
* @param packageName package name of the app we want to retrieve icon for
|
|
128
|
+
* @return PNG with app icon encoded as a base64 string
|
|
129
|
+
*/
|
|
130
|
+
@ReactMethod
|
|
131
|
+
fun getAppIcon(packageName: String, promise: Promise) {
|
|
132
|
+
// Perform the app icon encoding on a background thread
|
|
133
|
+
backgroundHandler.post {
|
|
134
|
+
val encodedData = Utils.getAppIconAsBase64String(reactContext, packageName)
|
|
135
|
+
mainHandler.post { promise.resolve(encodedData) }
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
106
139
|
private fun buildTalsecConfig(config: ReadableMap): TalsecConfig {
|
|
107
140
|
val androidConfig = config.getMapThrowing("androidConfig")
|
|
108
141
|
val packageName = androidConfig.getStringThrowing("packageName")
|
|
@@ -126,13 +159,19 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
|
|
|
126
159
|
|
|
127
160
|
companion object {
|
|
128
161
|
const val NAME = "FreeraspReactNative"
|
|
129
|
-
val THREAT_CHANNEL_NAME = (10000..999999999).random()
|
|
162
|
+
private val THREAT_CHANNEL_NAME = (10000..999999999).random()
|
|
130
163
|
.toString() // name of the channel over which threat callbacks are sent
|
|
131
|
-
val THREAT_CHANNEL_KEY = (10000..999999999).random()
|
|
164
|
+
private val THREAT_CHANNEL_KEY = (10000..999999999).random()
|
|
132
165
|
.toString() // key of the argument map under which threats are expected
|
|
133
|
-
val MALWARE_CHANNEL_KEY = (10000..999999999).random()
|
|
166
|
+
private val MALWARE_CHANNEL_KEY = (10000..999999999).random()
|
|
134
167
|
.toString() // key of the argument map under which malware data is expected
|
|
168
|
+
|
|
169
|
+
private val backgroundHandlerThread = HandlerThread("BackgroundThread").apply { start() }
|
|
170
|
+
private val backgroundHandler = Handler(backgroundHandlerThread.looper)
|
|
171
|
+
private val mainHandler = Handler(Looper.getMainLooper())
|
|
172
|
+
|
|
135
173
|
private lateinit var appReactContext: ReactApplicationContext
|
|
174
|
+
|
|
136
175
|
private fun notifyListeners(threat: Threat) {
|
|
137
176
|
val params = Arguments.createMap()
|
|
138
177
|
params.putInt(THREAT_CHANNEL_KEY, threat.value)
|
|
@@ -145,15 +184,23 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
|
|
|
145
184
|
* Sends malware detected event to React Native
|
|
146
185
|
*/
|
|
147
186
|
private fun notifyMalware(suspiciousApps: MutableList<SuspiciousAppInfo>) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
187
|
+
// Perform the malware encoding on a background thread
|
|
188
|
+
backgroundHandler.post {
|
|
189
|
+
|
|
190
|
+
val encodedSuspiciousApps = suspiciousApps.toEncodedWritableArray(appReactContext)
|
|
191
|
+
|
|
192
|
+
mainHandler.post {
|
|
193
|
+
val params = Arguments.createMap()
|
|
194
|
+
params.putInt(THREAT_CHANNEL_KEY, Threat.Malware.value)
|
|
195
|
+
params.putArray(
|
|
196
|
+
MALWARE_CHANNEL_KEY, encodedSuspiciousApps
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
appReactContext
|
|
200
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
201
|
+
.emit(THREAT_CHANNEL_NAME, params)
|
|
202
|
+
}
|
|
203
|
+
}
|
|
157
204
|
}
|
|
158
205
|
}
|
|
159
206
|
|
|
@@ -55,6 +55,10 @@ internal object FreeraspThreatHandler : ThreatListener.ThreatDetected, ThreatLis
|
|
|
55
55
|
listener?.threatDetected(Threat.DevMode)
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
override fun onADBEnabledDetected() {
|
|
59
|
+
listener?.threatDetected(Threat.ADBEnabled)
|
|
60
|
+
}
|
|
61
|
+
|
|
58
62
|
override fun onSystemVPNDetected() {
|
|
59
63
|
listener?.threatDetected(Threat.SystemVPN)
|
|
60
64
|
}
|
|
@@ -24,6 +24,7 @@ internal sealed class Threat(val value: Int) {
|
|
|
24
24
|
object SystemVPN : Threat((10000..999999999).random())
|
|
25
25
|
object DevMode : Threat((10000..999999999).random())
|
|
26
26
|
object Malware : Threat((10000..999999999).random())
|
|
27
|
+
object ADBEnabled : Threat((10000..999999999).random())
|
|
27
28
|
|
|
28
29
|
companion object {
|
|
29
30
|
internal fun getThreatValues(): WritableArray {
|
|
@@ -41,7 +42,8 @@ internal sealed class Threat(val value: Int) {
|
|
|
41
42
|
UnofficialStore.value,
|
|
42
43
|
ObfuscationIssues.value,
|
|
43
44
|
DevMode.value,
|
|
44
|
-
Malware.value
|
|
45
|
+
Malware.value,
|
|
46
|
+
ADBEnabled.value
|
|
45
47
|
)
|
|
46
48
|
)
|
|
47
49
|
}
|
|
@@ -86,7 +86,7 @@ internal fun PackageInfo.toRNPackageInfo(context: ReactContext): RNPackageInfo {
|
|
|
86
86
|
packageName = this.packageName,
|
|
87
87
|
appName = Utils.getAppName(context, this.applicationInfo),
|
|
88
88
|
version = this.versionName,
|
|
89
|
-
appIcon =
|
|
89
|
+
appIcon = null, // this requires heavier computations, so appIcon has to be retrieved separately
|
|
90
90
|
installerStore = Utils.getInstallationSource(context, this.packageName)
|
|
91
91
|
)
|
|
92
92
|
}
|
|
@@ -75,7 +75,10 @@ internal object Utils {
|
|
|
75
75
|
context.packageManager.getInstallerPackageName(packageName)
|
|
76
76
|
}
|
|
77
77
|
} catch (e: Exception) {
|
|
78
|
-
Log.e(
|
|
78
|
+
Log.e(
|
|
79
|
+
"Talsec",
|
|
80
|
+
"Could not retrieve app installation source for ${packageName}: ${e.message}",
|
|
81
|
+
)
|
|
79
82
|
null
|
|
80
83
|
}
|
|
81
84
|
}
|
package/example/src/App.tsx
CHANGED
|
@@ -32,7 +32,7 @@ const App = () => {
|
|
|
32
32
|
// supportedAlternativeStores: ['storeOne', 'storeTwo'],
|
|
33
33
|
malwareConfig: {
|
|
34
34
|
blacklistedHashes: ['FgvSehLMM91E7lX/Zqp3u4jMmd0A7hH/Iqozu0TMVd0u'],
|
|
35
|
-
blacklistedPackageNames: ['com.
|
|
35
|
+
blacklistedPackageNames: ['com.freeraspreactnativeexample'],
|
|
36
36
|
suspiciousPermissions: [
|
|
37
37
|
[
|
|
38
38
|
'android.permission.INTERNET',
|
|
@@ -45,7 +45,7 @@ const App = () => {
|
|
|
45
45
|
},
|
|
46
46
|
},
|
|
47
47
|
iosConfig: {
|
|
48
|
-
appBundleId: '
|
|
48
|
+
appBundleId: 'org.reactjs.native.example.FreeraspReactNativeExample',
|
|
49
49
|
appTeamId: 'your_team_ID',
|
|
50
50
|
},
|
|
51
51
|
watcherMail: 'your_email_address@example.com',
|
|
@@ -180,6 +180,14 @@ const App = () => {
|
|
|
180
180
|
)
|
|
181
181
|
);
|
|
182
182
|
},
|
|
183
|
+
// Android only
|
|
184
|
+
adbEnabled: () => {
|
|
185
|
+
setAppChecks((currentState) =>
|
|
186
|
+
currentState.map((threat) =>
|
|
187
|
+
threat.name === 'ADB Enabled' ? { ...threat, status: 'nok' } : threat
|
|
188
|
+
)
|
|
189
|
+
);
|
|
190
|
+
},
|
|
183
191
|
};
|
|
184
192
|
|
|
185
193
|
const addItemsToMalwareWhitelist = async () => {
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { Button, HStack } from '@react-native-material/core';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
addToWhitelist,
|
|
4
|
+
getAppIcon,
|
|
5
|
+
type SuspiciousAppInfo,
|
|
6
|
+
} from 'freerasp-react-native';
|
|
3
7
|
import ArrowUp from '../assets/arrow-up.png';
|
|
4
8
|
import ArrowDown from '../assets/arrow-down.png';
|
|
5
|
-
import React from 'react';
|
|
9
|
+
import React, { useEffect } from 'react';
|
|
6
10
|
import { useState } from 'react';
|
|
7
11
|
import { TouchableOpacity, View, Text, Image, StyleSheet } from 'react-native';
|
|
8
12
|
import { Colors } from './styles';
|
|
@@ -10,6 +14,14 @@ import { Colors } from './styles';
|
|
|
10
14
|
export const MalwareItem: React.FC<{ app: SuspiciousAppInfo }> = ({ app }) => {
|
|
11
15
|
const [expanded, setExpanded] = useState(false);
|
|
12
16
|
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
(async () => {
|
|
19
|
+
// retrieve app icons for detected malware
|
|
20
|
+
const appIcon = await getAppIcon(app.packageInfo.packageName);
|
|
21
|
+
app.packageInfo.appIcon = appIcon;
|
|
22
|
+
})();
|
|
23
|
+
}, [app.packageInfo]);
|
|
24
|
+
|
|
13
25
|
const appUninstall = async () => {
|
|
14
26
|
alert('Implement yourself!');
|
|
15
27
|
};
|
|
@@ -94,19 +106,6 @@ export const MalwareItem: React.FC<{ app: SuspiciousAppInfo }> = ({ app }) => {
|
|
|
94
106
|
};
|
|
95
107
|
|
|
96
108
|
const styles = StyleSheet.create({
|
|
97
|
-
button: {
|
|
98
|
-
borderRadius: 20,
|
|
99
|
-
paddingHorizontal: 30,
|
|
100
|
-
paddingVertical: 10,
|
|
101
|
-
marginTop: 15,
|
|
102
|
-
elevation: 2,
|
|
103
|
-
},
|
|
104
|
-
buttonOpen: {
|
|
105
|
-
backgroundColor: '#F194FF',
|
|
106
|
-
},
|
|
107
|
-
buttonClose: {
|
|
108
|
-
backgroundColor: '#2196F3',
|
|
109
|
-
},
|
|
110
109
|
item: {
|
|
111
110
|
backgroundColor: '#d4e4ff',
|
|
112
111
|
borderRadius: 20,
|
package/example/src/checks.ts
CHANGED
package/lib/commonjs/index.js
CHANGED
|
@@ -8,9 +8,10 @@ var _exportNames = {
|
|
|
8
8
|
removeThreatListeners: true,
|
|
9
9
|
talsecStart: true,
|
|
10
10
|
useFreeRasp: true,
|
|
11
|
-
addToWhitelist: true
|
|
11
|
+
addToWhitelist: true,
|
|
12
|
+
getAppIcon: true
|
|
12
13
|
};
|
|
13
|
-
exports.useFreeRasp = exports.talsecStart = exports.setThreatListeners = exports.removeThreatListeners = exports.default = exports.addToWhitelist = void 0;
|
|
14
|
+
exports.useFreeRasp = exports.talsecStart = exports.setThreatListeners = exports.removeThreatListeners = exports.getAppIcon = exports.default = exports.addToWhitelist = void 0;
|
|
14
15
|
var _react = require("react");
|
|
15
16
|
var _reactNative = require("react-native");
|
|
16
17
|
var _utils = require("./utils");
|
|
@@ -60,8 +61,14 @@ const prepareMapping = async () => {
|
|
|
60
61
|
};
|
|
61
62
|
|
|
62
63
|
// parses base64-encoded malware data to SuspiciousAppInfo[]
|
|
63
|
-
const parseMalwareData = data => {
|
|
64
|
-
return
|
|
64
|
+
const parseMalwareData = async data => {
|
|
65
|
+
return new Promise((resolve, reject) => {
|
|
66
|
+
try {
|
|
67
|
+
resolve(data.map(entry => toSuspiciousAppInfo(entry)));
|
|
68
|
+
} catch (error) {
|
|
69
|
+
reject(`Error while parsing app data: ${error}`);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
65
72
|
};
|
|
66
73
|
const toSuspiciousAppInfo = base64Value => {
|
|
67
74
|
const data = JSON.parse(_buffer.Buffer.from(base64Value, 'base64').toString('utf8'));
|
|
@@ -74,8 +81,8 @@ const toSuspiciousAppInfo = base64Value => {
|
|
|
74
81
|
const setThreatListeners = async config => {
|
|
75
82
|
const [channel, key, malwareKey] = await getThreatChannelData();
|
|
76
83
|
await prepareMapping();
|
|
77
|
-
eventsListener = eventEmitter.addListener(channel, event => {
|
|
78
|
-
var _config$privilegedAcc, _config$debug, _config$simulator, _config$appIntegrity, _config$unofficialSto, _config$hooks, _config$deviceBinding, _config$passcode, _config$secureHardwar, _config$obfuscationIs, _config$deviceID, _config$devMode, _config$systemVPN, _config$malware;
|
|
84
|
+
eventsListener = eventEmitter.addListener(channel, async event => {
|
|
85
|
+
var _config$privilegedAcc, _config$debug, _config$simulator, _config$appIntegrity, _config$unofficialSto, _config$hooks, _config$deviceBinding, _config$passcode, _config$secureHardwar, _config$obfuscationIs, _config$deviceID, _config$devMode, _config$systemVPN, _config$malware, _config$adbEnabled;
|
|
79
86
|
if (event[key] === undefined) {
|
|
80
87
|
onInvalidCallback();
|
|
81
88
|
}
|
|
@@ -120,7 +127,10 @@ const setThreatListeners = async config => {
|
|
|
120
127
|
(_config$systemVPN = config.systemVPN) === null || _config$systemVPN === void 0 || _config$systemVPN.call(config);
|
|
121
128
|
break;
|
|
122
129
|
case _threat.Threat.Malware.value:
|
|
123
|
-
(_config$malware = config.malware) === null || _config$malware === void 0 || _config$malware.call(config, parseMalwareData(event[malwareKey]));
|
|
130
|
+
(_config$malware = config.malware) === null || _config$malware === void 0 || _config$malware.call(config, await parseMalwareData(event[malwareKey]));
|
|
131
|
+
break;
|
|
132
|
+
case _threat.Threat.ADBEnabled.value:
|
|
133
|
+
(_config$adbEnabled = config.adbEnabled) === null || _config$adbEnabled === void 0 || _config$adbEnabled.call(config);
|
|
124
134
|
break;
|
|
125
135
|
default:
|
|
126
136
|
onInvalidCallback();
|
|
@@ -165,5 +175,12 @@ const addToWhitelist = async packageName => {
|
|
|
165
175
|
return FreeraspReactNative.addToWhitelist(packageName);
|
|
166
176
|
};
|
|
167
177
|
exports.addToWhitelist = addToWhitelist;
|
|
178
|
+
const getAppIcon = packageName => {
|
|
179
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
180
|
+
return Promise.reject('App icon retrieval for Malware detection not available on iOS');
|
|
181
|
+
}
|
|
182
|
+
return FreeraspReactNative.getAppIcon(packageName);
|
|
183
|
+
};
|
|
184
|
+
exports.getAppIcon = getAppIcon;
|
|
168
185
|
var _default = exports.default = FreeraspReactNative;
|
|
169
186
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_utils","_buffer","_threat","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","FreeraspReactNative","NativeModules","eventEmitter","NativeEventEmitter","eventsListener","onInvalidCallback","getThreatIdentifiers","identifiers","length","getThreatCount","itemsHaveType","getThreatChannelData","dataLength","Platform","OS","data","prepareMapping","newValues","threats","Threat","getValues","map","threat","index","value","parseMalwareData","entry","toSuspiciousAppInfo","base64Value","JSON","parse","Buffer","from","toString","packageInfo","reason","setThreatListeners","config","channel","malwareKey","addListener","event","_config$privilegedAcc","_config$debug","_config$simulator","_config$appIntegrity","_config$unofficialSto","_config$hooks","_config$deviceBinding","_config$passcode","_config$secureHardwar","_config$obfuscationIs","_config$deviceID","_config$devMode","_config$systemVPN","_config$malware","undefined","PrivilegedAccess","privilegedAccess","Debug","debug","Simulator","simulator","AppIntegrity","appIntegrity","UnofficialStore","unofficialStore","Hooks","hooks","DeviceBinding","deviceBinding","Passcode","passcode","SecureHardwareNotAvailable","secureHardwareNotAvailable","ObfuscationIssues","obfuscationIssues","DeviceID","deviceID","DevMode","devMode","SystemVPN","systemVPN","Malware","malware","removeThreatListeners","remove","talsecStart","options","useFreeRasp","actions","useEffect","response","console","log","e","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_utils","_buffer","_threat","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","FreeraspReactNative","NativeModules","eventEmitter","NativeEventEmitter","eventsListener","onInvalidCallback","getThreatIdentifiers","identifiers","length","getThreatCount","itemsHaveType","getThreatChannelData","dataLength","Platform","OS","data","prepareMapping","newValues","threats","Threat","getValues","map","threat","index","value","parseMalwareData","Promise","resolve","reject","entry","toSuspiciousAppInfo","error","base64Value","JSON","parse","Buffer","from","toString","packageInfo","reason","setThreatListeners","config","channel","malwareKey","addListener","event","_config$privilegedAcc","_config$debug","_config$simulator","_config$appIntegrity","_config$unofficialSto","_config$hooks","_config$deviceBinding","_config$passcode","_config$secureHardwar","_config$obfuscationIs","_config$deviceID","_config$devMode","_config$systemVPN","_config$malware","_config$adbEnabled","undefined","PrivilegedAccess","privilegedAccess","Debug","debug","Simulator","simulator","AppIntegrity","appIntegrity","UnofficialStore","unofficialStore","Hooks","hooks","DeviceBinding","deviceBinding","Passcode","passcode","SecureHardwareNotAvailable","secureHardwareNotAvailable","ObfuscationIssues","obfuscationIssues","DeviceID","deviceID","DevMode","devMode","SystemVPN","systemVPN","Malware","malware","ADBEnabled","adbEnabled","removeThreatListeners","remove","talsecStart","options","useFreeRasp","actions","useEffect","response","console","log","e","code","message","addToWhitelist","packageName","getAppIcon","_default","default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/threat.js
CHANGED
|
@@ -20,11 +20,12 @@ class Threat {
|
|
|
20
20
|
static ObfuscationIssues = new Threat(0);
|
|
21
21
|
static DevMode = new Threat(0);
|
|
22
22
|
static Malware = new Threat(0);
|
|
23
|
+
static ADBEnabled = new Threat(0);
|
|
23
24
|
constructor(value) {
|
|
24
25
|
this.value = value;
|
|
25
26
|
}
|
|
26
27
|
static getValues() {
|
|
27
|
-
return _reactNative.Platform.OS === 'android' ? [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.UnofficialStore, this.ObfuscationIssues, this.DevMode, this.Malware] : [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.DeviceID, this.UnofficialStore];
|
|
28
|
+
return _reactNative.Platform.OS === 'android' ? [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.UnofficialStore, this.ObfuscationIssues, this.DevMode, this.Malware, this.ADBEnabled] : [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.DeviceID, this.UnofficialStore];
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
exports.Threat = Threat;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","Threat","AppIntegrity","PrivilegedAccess","Debug","Hooks","Passcode","Simulator","SecureHardwareNotAvailable","SystemVPN","DeviceBinding","DeviceID","UnofficialStore","ObfuscationIssues","DevMode","Malware","constructor","value","getValues","Platform","OS","exports"],"sourceRoot":"../../src","sources":["threat.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,MAAM,CAAC;EAGlB,OAAOC,YAAY,GAAG,IAAID,MAAM,CAAC,CAAC,CAAC;EACnC,OAAOE,gBAAgB,GAAG,IAAIF,MAAM,CAAC,CAAC,CAAC;EACvC,OAAOG,KAAK,GAAG,IAAIH,MAAM,CAAC,CAAC,CAAC;EAC5B,OAAOI,KAAK,GAAG,IAAIJ,MAAM,CAAC,CAAC,CAAC;EAC5B,OAAOK,QAAQ,GAAG,IAAIL,MAAM,CAAC,CAAC,CAAC;EAC/B,OAAOM,SAAS,GAAG,IAAIN,MAAM,CAAC,CAAC,CAAC;EAChC,OAAOO,0BAA0B,GAAG,IAAIP,MAAM,CAAC,CAAC,CAAC;EACjD,OAAOQ,SAAS,GAAG,IAAIR,MAAM,CAAC,CAAC,CAAC;EAChC,OAAOS,aAAa,GAAG,IAAIT,MAAM,CAAC,CAAC,CAAC;EACpC,OAAOU,QAAQ,GAAG,IAAIV,MAAM,CAAC,CAAC,CAAC;EAC/B,OAAOW,eAAe,GAAG,IAAIX,MAAM,CAAC,CAAC,CAAC;EACtC,OAAOY,iBAAiB,GAAG,IAAIZ,MAAM,CAAC,CAAC,CAAC;EACxC,OAAOa,OAAO,GAAG,IAAIb,MAAM,CAAC,CAAC,CAAC;EAC9B,OAAOc,OAAO,GAAG,IAAId,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","Threat","AppIntegrity","PrivilegedAccess","Debug","Hooks","Passcode","Simulator","SecureHardwareNotAvailable","SystemVPN","DeviceBinding","DeviceID","UnofficialStore","ObfuscationIssues","DevMode","Malware","ADBEnabled","constructor","value","getValues","Platform","OS","exports"],"sourceRoot":"../../src","sources":["threat.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,MAAM,CAAC;EAGlB,OAAOC,YAAY,GAAG,IAAID,MAAM,CAAC,CAAC,CAAC;EACnC,OAAOE,gBAAgB,GAAG,IAAIF,MAAM,CAAC,CAAC,CAAC;EACvC,OAAOG,KAAK,GAAG,IAAIH,MAAM,CAAC,CAAC,CAAC;EAC5B,OAAOI,KAAK,GAAG,IAAIJ,MAAM,CAAC,CAAC,CAAC;EAC5B,OAAOK,QAAQ,GAAG,IAAIL,MAAM,CAAC,CAAC,CAAC;EAC/B,OAAOM,SAAS,GAAG,IAAIN,MAAM,CAAC,CAAC,CAAC;EAChC,OAAOO,0BAA0B,GAAG,IAAIP,MAAM,CAAC,CAAC,CAAC;EACjD,OAAOQ,SAAS,GAAG,IAAIR,MAAM,CAAC,CAAC,CAAC;EAChC,OAAOS,aAAa,GAAG,IAAIT,MAAM,CAAC,CAAC,CAAC;EACpC,OAAOU,QAAQ,GAAG,IAAIV,MAAM,CAAC,CAAC,CAAC;EAC/B,OAAOW,eAAe,GAAG,IAAIX,MAAM,CAAC,CAAC,CAAC;EACtC,OAAOY,iBAAiB,GAAG,IAAIZ,MAAM,CAAC,CAAC,CAAC;EACxC,OAAOa,OAAO,GAAG,IAAIb,MAAM,CAAC,CAAC,CAAC;EAC9B,OAAOc,OAAO,GAAG,IAAId,MAAM,CAAC,CAAC,CAAC;EAC9B,OAAOe,UAAU,GAAG,IAAIf,MAAM,CAAC,CAAC,CAAC;EAEjCgB,WAAWA,CAACC,KAAa,EAAE;IACzB,IAAI,CAACA,KAAK,GAAGA,KAAK;EACpB;EAEA,OAAOC,SAASA,CAAA,EAAa;IAC3B,OAAOC,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAC5B,CACE,IAAI,CAACnB,YAAY,EACjB,IAAI,CAACC,gBAAgB,EACrB,IAAI,CAACC,KAAK,EACV,IAAI,CAACC,KAAK,EACV,IAAI,CAACC,QAAQ,EACb,IAAI,CAACC,SAAS,EACd,IAAI,CAACC,0BAA0B,EAC/B,IAAI,CAACC,SAAS,EACd,IAAI,CAACC,aAAa,EAClB,IAAI,CAACE,eAAe,EACpB,IAAI,CAACC,iBAAiB,EACtB,IAAI,CAACC,OAAO,EACZ,IAAI,CAACC,OAAO,EACZ,IAAI,CAACC,UAAU,CAChB,GACD,CACE,IAAI,CAACd,YAAY,EACjB,IAAI,CAACC,gBAAgB,EACrB,IAAI,CAACC,KAAK,EACV,IAAI,CAACC,KAAK,EACV,IAAI,CAACC,QAAQ,EACb,IAAI,CAACC,SAAS,EACd,IAAI,CAACC,0BAA0B,EAC/B,IAAI,CAACC,SAAS,EACd,IAAI,CAACC,aAAa,EAClB,IAAI,CAACC,QAAQ,EACb,IAAI,CAACC,eAAe,CACrB;EACP;AACF;AAACU,OAAA,CAAArB,MAAA,GAAAA,MAAA","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -35,8 +35,14 @@ const prepareMapping = async () => {
|
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
// parses base64-encoded malware data to SuspiciousAppInfo[]
|
|
38
|
-
const parseMalwareData = data => {
|
|
39
|
-
return
|
|
38
|
+
const parseMalwareData = async data => {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
try {
|
|
41
|
+
resolve(data.map(entry => toSuspiciousAppInfo(entry)));
|
|
42
|
+
} catch (error) {
|
|
43
|
+
reject(`Error while parsing app data: ${error}`);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
40
46
|
};
|
|
41
47
|
const toSuspiciousAppInfo = base64Value => {
|
|
42
48
|
const data = JSON.parse(Buffer.from(base64Value, 'base64').toString('utf8'));
|
|
@@ -49,8 +55,8 @@ const toSuspiciousAppInfo = base64Value => {
|
|
|
49
55
|
export const setThreatListeners = async config => {
|
|
50
56
|
const [channel, key, malwareKey] = await getThreatChannelData();
|
|
51
57
|
await prepareMapping();
|
|
52
|
-
eventsListener = eventEmitter.addListener(channel, event => {
|
|
53
|
-
var _config$privilegedAcc, _config$debug, _config$simulator, _config$appIntegrity, _config$unofficialSto, _config$hooks, _config$deviceBinding, _config$passcode, _config$secureHardwar, _config$obfuscationIs, _config$deviceID, _config$devMode, _config$systemVPN, _config$malware;
|
|
58
|
+
eventsListener = eventEmitter.addListener(channel, async event => {
|
|
59
|
+
var _config$privilegedAcc, _config$debug, _config$simulator, _config$appIntegrity, _config$unofficialSto, _config$hooks, _config$deviceBinding, _config$passcode, _config$secureHardwar, _config$obfuscationIs, _config$deviceID, _config$devMode, _config$systemVPN, _config$malware, _config$adbEnabled;
|
|
54
60
|
if (event[key] === undefined) {
|
|
55
61
|
onInvalidCallback();
|
|
56
62
|
}
|
|
@@ -95,7 +101,10 @@ export const setThreatListeners = async config => {
|
|
|
95
101
|
(_config$systemVPN = config.systemVPN) === null || _config$systemVPN === void 0 || _config$systemVPN.call(config);
|
|
96
102
|
break;
|
|
97
103
|
case Threat.Malware.value:
|
|
98
|
-
(_config$malware = config.malware) === null || _config$malware === void 0 || _config$malware.call(config, parseMalwareData(event[malwareKey]));
|
|
104
|
+
(_config$malware = config.malware) === null || _config$malware === void 0 || _config$malware.call(config, await parseMalwareData(event[malwareKey]));
|
|
105
|
+
break;
|
|
106
|
+
case Threat.ADBEnabled.value:
|
|
107
|
+
(_config$adbEnabled = config.adbEnabled) === null || _config$adbEnabled === void 0 || _config$adbEnabled.call(config);
|
|
99
108
|
break;
|
|
100
109
|
default:
|
|
101
110
|
onInvalidCallback();
|
|
@@ -135,6 +144,12 @@ export const addToWhitelist = async packageName => {
|
|
|
135
144
|
}
|
|
136
145
|
return FreeraspReactNative.addToWhitelist(packageName);
|
|
137
146
|
};
|
|
147
|
+
export const getAppIcon = packageName => {
|
|
148
|
+
if (Platform.OS === 'ios') {
|
|
149
|
+
return Promise.reject('App icon retrieval for Malware detection not available on iOS');
|
|
150
|
+
}
|
|
151
|
+
return FreeraspReactNative.getAppIcon(packageName);
|
|
152
|
+
};
|
|
138
153
|
export * from './types';
|
|
139
154
|
export default FreeraspReactNative;
|
|
140
155
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","NativeEventEmitter","NativeModules","Platform","getThreatCount","itemsHaveType","Buffer","Threat","FreeraspReactNative","eventEmitter","eventsListener","onInvalidCallback","getThreatIdentifiers","identifiers","length","getThreatChannelData","dataLength","OS","data","prepareMapping","newValues","threats","getValues","map","threat","index","value","parseMalwareData","entry","toSuspiciousAppInfo","base64Value","JSON","parse","from","toString","packageInfo","reason","setThreatListeners","config","channel","key","malwareKey","addListener","event","_config$privilegedAcc","_config$debug","_config$simulator","_config$appIntegrity","_config$unofficialSto","_config$hooks","_config$deviceBinding","_config$passcode","_config$secureHardwar","_config$obfuscationIs","_config$deviceID","_config$devMode","_config$systemVPN","_config$malware","undefined","PrivilegedAccess","privilegedAccess","call","Debug","debug","Simulator","simulator","AppIntegrity","appIntegrity","UnofficialStore","unofficialStore","Hooks","hooks","DeviceBinding","deviceBinding","Passcode","passcode","SecureHardwareNotAvailable","secureHardwareNotAvailable","ObfuscationIssues","obfuscationIssues","DeviceID","deviceID","DevMode","devMode","SystemVPN","systemVPN","Malware","malware","removeThreatListeners","remove","talsecStart","options","useFreeRasp","actions","response","console","log","e","
|
|
1
|
+
{"version":3,"names":["useEffect","NativeEventEmitter","NativeModules","Platform","getThreatCount","itemsHaveType","Buffer","Threat","FreeraspReactNative","eventEmitter","eventsListener","onInvalidCallback","getThreatIdentifiers","identifiers","length","getThreatChannelData","dataLength","OS","data","prepareMapping","newValues","threats","getValues","map","threat","index","value","parseMalwareData","Promise","resolve","reject","entry","toSuspiciousAppInfo","error","base64Value","JSON","parse","from","toString","packageInfo","reason","setThreatListeners","config","channel","key","malwareKey","addListener","event","_config$privilegedAcc","_config$debug","_config$simulator","_config$appIntegrity","_config$unofficialSto","_config$hooks","_config$deviceBinding","_config$passcode","_config$secureHardwar","_config$obfuscationIs","_config$deviceID","_config$devMode","_config$systemVPN","_config$malware","_config$adbEnabled","undefined","PrivilegedAccess","privilegedAccess","call","Debug","debug","Simulator","simulator","AppIntegrity","appIntegrity","UnofficialStore","unofficialStore","Hooks","hooks","DeviceBinding","deviceBinding","Passcode","passcode","SecureHardwareNotAvailable","secureHardwareNotAvailable","ObfuscationIssues","obfuscationIssues","DeviceID","deviceID","DevMode","devMode","SystemVPN","systemVPN","Malware","malware","ADBEnabled","adbEnabled","removeThreatListeners","remove","talsecStart","options","useFreeRasp","actions","response","console","log","e","code","message","addToWhitelist","packageName","getAppIcon"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/threat.js
CHANGED
|
@@ -14,11 +14,12 @@ export class Threat {
|
|
|
14
14
|
static ObfuscationIssues = new Threat(0);
|
|
15
15
|
static DevMode = new Threat(0);
|
|
16
16
|
static Malware = new Threat(0);
|
|
17
|
+
static ADBEnabled = new Threat(0);
|
|
17
18
|
constructor(value) {
|
|
18
19
|
this.value = value;
|
|
19
20
|
}
|
|
20
21
|
static getValues() {
|
|
21
|
-
return Platform.OS === 'android' ? [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.UnofficialStore, this.ObfuscationIssues, this.DevMode, this.Malware] : [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.DeviceID, this.UnofficialStore];
|
|
22
|
+
return Platform.OS === 'android' ? [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.UnofficialStore, this.ObfuscationIssues, this.DevMode, this.Malware, this.ADBEnabled] : [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.DeviceID, this.UnofficialStore];
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
//# sourceMappingURL=threat.js.map
|
package/lib/module/threat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","Threat","AppIntegrity","PrivilegedAccess","Debug","Hooks","Passcode","Simulator","SecureHardwareNotAvailable","SystemVPN","DeviceBinding","DeviceID","UnofficialStore","ObfuscationIssues","DevMode","Malware","constructor","value","getValues","OS"],"sourceRoot":"../../src","sources":["threat.ts"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,cAAc;AAEvC,OAAO,MAAMC,MAAM,CAAC;EAGlB,OAAOC,YAAY,GAAG,IAAID,MAAM,CAAC,CAAC,CAAC;EACnC,OAAOE,gBAAgB,GAAG,IAAIF,MAAM,CAAC,CAAC,CAAC;EACvC,OAAOG,KAAK,GAAG,IAAIH,MAAM,CAAC,CAAC,CAAC;EAC5B,OAAOI,KAAK,GAAG,IAAIJ,MAAM,CAAC,CAAC,CAAC;EAC5B,OAAOK,QAAQ,GAAG,IAAIL,MAAM,CAAC,CAAC,CAAC;EAC/B,OAAOM,SAAS,GAAG,IAAIN,MAAM,CAAC,CAAC,CAAC;EAChC,OAAOO,0BAA0B,GAAG,IAAIP,MAAM,CAAC,CAAC,CAAC;EACjD,OAAOQ,SAAS,GAAG,IAAIR,MAAM,CAAC,CAAC,CAAC;EAChC,OAAOS,aAAa,GAAG,IAAIT,MAAM,CAAC,CAAC,CAAC;EACpC,OAAOU,QAAQ,GAAG,IAAIV,MAAM,CAAC,CAAC,CAAC;EAC/B,OAAOW,eAAe,GAAG,IAAIX,MAAM,CAAC,CAAC,CAAC;EACtC,OAAOY,iBAAiB,GAAG,IAAIZ,MAAM,CAAC,CAAC,CAAC;EACxC,OAAOa,OAAO,GAAG,IAAIb,MAAM,CAAC,CAAC,CAAC;EAC9B,OAAOc,OAAO,GAAG,IAAId,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["Platform","Threat","AppIntegrity","PrivilegedAccess","Debug","Hooks","Passcode","Simulator","SecureHardwareNotAvailable","SystemVPN","DeviceBinding","DeviceID","UnofficialStore","ObfuscationIssues","DevMode","Malware","ADBEnabled","constructor","value","getValues","OS"],"sourceRoot":"../../src","sources":["threat.ts"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,cAAc;AAEvC,OAAO,MAAMC,MAAM,CAAC;EAGlB,OAAOC,YAAY,GAAG,IAAID,MAAM,CAAC,CAAC,CAAC;EACnC,OAAOE,gBAAgB,GAAG,IAAIF,MAAM,CAAC,CAAC,CAAC;EACvC,OAAOG,KAAK,GAAG,IAAIH,MAAM,CAAC,CAAC,CAAC;EAC5B,OAAOI,KAAK,GAAG,IAAIJ,MAAM,CAAC,CAAC,CAAC;EAC5B,OAAOK,QAAQ,GAAG,IAAIL,MAAM,CAAC,CAAC,CAAC;EAC/B,OAAOM,SAAS,GAAG,IAAIN,MAAM,CAAC,CAAC,CAAC;EAChC,OAAOO,0BAA0B,GAAG,IAAIP,MAAM,CAAC,CAAC,CAAC;EACjD,OAAOQ,SAAS,GAAG,IAAIR,MAAM,CAAC,CAAC,CAAC;EAChC,OAAOS,aAAa,GAAG,IAAIT,MAAM,CAAC,CAAC,CAAC;EACpC,OAAOU,QAAQ,GAAG,IAAIV,MAAM,CAAC,CAAC,CAAC;EAC/B,OAAOW,eAAe,GAAG,IAAIX,MAAM,CAAC,CAAC,CAAC;EACtC,OAAOY,iBAAiB,GAAG,IAAIZ,MAAM,CAAC,CAAC,CAAC;EACxC,OAAOa,OAAO,GAAG,IAAIb,MAAM,CAAC,CAAC,CAAC;EAC9B,OAAOc,OAAO,GAAG,IAAId,MAAM,CAAC,CAAC,CAAC;EAC9B,OAAOe,UAAU,GAAG,IAAIf,MAAM,CAAC,CAAC,CAAC;EAEjCgB,WAAWA,CAACC,KAAa,EAAE;IACzB,IAAI,CAACA,KAAK,GAAGA,KAAK;EACpB;EAEA,OAAOC,SAASA,CAAA,EAAa;IAC3B,OAAOnB,QAAQ,CAACoB,EAAE,KAAK,SAAS,GAC5B,CACE,IAAI,CAAClB,YAAY,EACjB,IAAI,CAACC,gBAAgB,EACrB,IAAI,CAACC,KAAK,EACV,IAAI,CAACC,KAAK,EACV,IAAI,CAACC,QAAQ,EACb,IAAI,CAACC,SAAS,EACd,IAAI,CAACC,0BAA0B,EAC/B,IAAI,CAACC,SAAS,EACd,IAAI,CAACC,aAAa,EAClB,IAAI,CAACE,eAAe,EACpB,IAAI,CAACC,iBAAiB,EACtB,IAAI,CAACC,OAAO,EACZ,IAAI,CAACC,OAAO,EACZ,IAAI,CAACC,UAAU,CAChB,GACD,CACE,IAAI,CAACd,YAAY,EACjB,IAAI,CAACC,gBAAgB,EACrB,IAAI,CAACC,KAAK,EACV,IAAI,CAACC,KAAK,EACV,IAAI,CAACC,QAAQ,EACb,IAAI,CAACC,SAAS,EACd,IAAI,CAACC,0BAA0B,EAC/B,IAAI,CAACC,SAAS,EACd,IAAI,CAACC,aAAa,EAClB,IAAI,CAACC,QAAQ,EACb,IAAI,CAACC,eAAe,CACrB;EACP;AACF","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ export declare const removeThreatListeners: () => void;
|
|
|
5
5
|
export declare const talsecStart: (options: TalsecConfig) => Promise<string>;
|
|
6
6
|
export declare const useFreeRasp: <T extends NativeEventEmitterActions>(config: TalsecConfig, actions: T & Record<Exclude<keyof T, keyof NativeEventEmitterActions>, []>) => void;
|
|
7
7
|
export declare const addToWhitelist: (packageName: string) => Promise<boolean>;
|
|
8
|
+
export declare const getAppIcon: (packageName: string) => Promise<string>;
|
|
8
9
|
export * from './types';
|
|
9
10
|
export default FreeraspReactNative;
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,yBAAyB,EAGzB,YAAY,EACb,MAAM,SAAS,CAAC;AAKjB,QAAA,MAAQ,mBAAmB,KAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,yBAAyB,EAGzB,YAAY,EACb,MAAM,SAAS,CAAC;AAKjB,QAAA,MAAQ,mBAAmB,KAAkB,CAAC;AAyD9C,eAAO,MAAM,kBAAkB,gDACrB,CAAC,GAAG,OAAO,QAAQ,MAAM,CAAC,EAAE,MAAM,yBAAyB,CAAC,EAAE,EAAE,CAAC,kBA4D1E,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAO,IAExC,CAAC;AAEF,eAAO,MAAM,WAAW,YAAmB,YAAY,KAAG,QAAQ,MAAM,CAEvE,CAAC;AAEF,eAAO,MAAM,WAAW,gDACd,YAAY,WACX,CAAC,GAAG,OAAO,QAAQ,MAAM,CAAC,EAAE,MAAM,yBAAyB,CAAC,EAAE,EAAE,CAAC,SAqB3E,CAAC;AAEF,eAAO,MAAM,cAAc,gBAAuB,MAAM,KAAG,QAAQ,OAAO,CAKzE,CAAC;AAEF,eAAO,MAAM,UAAU,gBAAiB,MAAM,KAAG,QAAQ,MAAM,CAO9D,CAAC;AAEF,cAAc,SAAS,CAAC;AACxB,eAAe,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threat.d.ts","sourceRoot":"","sources":["../../../src/threat.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,YAAY,SAAiB;IACpC,MAAM,CAAC,gBAAgB,SAAiB;IACxC,MAAM,CAAC,KAAK,SAAiB;IAC7B,MAAM,CAAC,KAAK,SAAiB;IAC7B,MAAM,CAAC,QAAQ,SAAiB;IAChC,MAAM,CAAC,SAAS,SAAiB;IACjC,MAAM,CAAC,0BAA0B,SAAiB;IAClD,MAAM,CAAC,SAAS,SAAiB;IACjC,MAAM,CAAC,aAAa,SAAiB;IACrC,MAAM,CAAC,QAAQ,SAAiB;IAChC,MAAM,CAAC,eAAe,SAAiB;IACvC,MAAM,CAAC,iBAAiB,SAAiB;IACzC,MAAM,CAAC,OAAO,SAAiB;IAC/B,MAAM,CAAC,OAAO,SAAiB;
|
|
1
|
+
{"version":3,"file":"threat.d.ts","sourceRoot":"","sources":["../../../src/threat.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,YAAY,SAAiB;IACpC,MAAM,CAAC,gBAAgB,SAAiB;IACxC,MAAM,CAAC,KAAK,SAAiB;IAC7B,MAAM,CAAC,KAAK,SAAiB;IAC7B,MAAM,CAAC,QAAQ,SAAiB;IAChC,MAAM,CAAC,SAAS,SAAiB;IACjC,MAAM,CAAC,0BAA0B,SAAiB;IAClD,MAAM,CAAC,SAAS,SAAiB;IACjC,MAAM,CAAC,aAAa,SAAiB;IACrC,MAAM,CAAC,QAAQ,SAAiB;IAChC,MAAM,CAAC,eAAe,SAAiB;IACvC,MAAM,CAAC,iBAAiB,SAAiB;IACzC,MAAM,CAAC,OAAO,SAAiB;IAC/B,MAAM,CAAC,OAAO,SAAiB;IAC/B,MAAM,CAAC,UAAU,SAAiB;gBAEtB,KAAK,EAAE,MAAM;IAIzB,MAAM,CAAC,SAAS,IAAI,MAAM,EAAE;CAgC7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;IACtC,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACnC,8BAA8B,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC;IACrB,0BAA0B,CAAC,EAAE,MAAM,GAAG,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,GAAG,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,KAAK,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;IACtC,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACnC,8BAA8B,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC;IACrB,0BAA0B,CAAC,EAAE,MAAM,GAAG,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,GAAG,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,KAAK,GAAG,CAAC;IACvD,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC;CACxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "freerasp-react-native",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.12.0",
|
|
4
4
|
"description": "React Native plugin for improving app security and threat monitoring on Android and iOS mobile devices.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/src/index.tsx
CHANGED
|
@@ -54,8 +54,16 @@ const prepareMapping = async (): Promise<void> => {
|
|
|
54
54
|
};
|
|
55
55
|
|
|
56
56
|
// parses base64-encoded malware data to SuspiciousAppInfo[]
|
|
57
|
-
const parseMalwareData = (
|
|
58
|
-
|
|
57
|
+
const parseMalwareData = async (
|
|
58
|
+
data: string[]
|
|
59
|
+
): Promise<SuspiciousAppInfo[]> => {
|
|
60
|
+
return new Promise((resolve, reject) => {
|
|
61
|
+
try {
|
|
62
|
+
resolve(data.map((entry) => toSuspiciousAppInfo(entry)));
|
|
63
|
+
} catch (error: any) {
|
|
64
|
+
reject(`Error while parsing app data: ${error}`);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
59
67
|
};
|
|
60
68
|
|
|
61
69
|
const toSuspiciousAppInfo = (base64Value: string): SuspiciousAppInfo => {
|
|
@@ -70,7 +78,7 @@ export const setThreatListeners = async <T extends NativeEventEmitterActions>(
|
|
|
70
78
|
const [channel, key, malwareKey] = await getThreatChannelData();
|
|
71
79
|
await prepareMapping();
|
|
72
80
|
|
|
73
|
-
eventsListener = eventEmitter.addListener(channel, (event) => {
|
|
81
|
+
eventsListener = eventEmitter.addListener(channel, async (event) => {
|
|
74
82
|
if (event[key] === undefined) {
|
|
75
83
|
onInvalidCallback();
|
|
76
84
|
}
|
|
@@ -115,7 +123,10 @@ export const setThreatListeners = async <T extends NativeEventEmitterActions>(
|
|
|
115
123
|
config.systemVPN?.();
|
|
116
124
|
break;
|
|
117
125
|
case Threat.Malware.value:
|
|
118
|
-
config.malware?.(parseMalwareData(event[malwareKey]));
|
|
126
|
+
config.malware?.(await parseMalwareData(event[malwareKey]));
|
|
127
|
+
break;
|
|
128
|
+
case Threat.ADBEnabled.value:
|
|
129
|
+
config.adbEnabled?.();
|
|
119
130
|
break;
|
|
120
131
|
default:
|
|
121
132
|
onInvalidCallback();
|
|
@@ -164,5 +175,14 @@ export const addToWhitelist = async (packageName: string): Promise<boolean> => {
|
|
|
164
175
|
return FreeraspReactNative.addToWhitelist(packageName);
|
|
165
176
|
};
|
|
166
177
|
|
|
178
|
+
export const getAppIcon = (packageName: string): Promise<string> => {
|
|
179
|
+
if (Platform.OS === 'ios') {
|
|
180
|
+
return Promise.reject(
|
|
181
|
+
'App icon retrieval for Malware detection not available on iOS'
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
return FreeraspReactNative.getAppIcon(packageName);
|
|
185
|
+
};
|
|
186
|
+
|
|
167
187
|
export * from './types';
|
|
168
188
|
export default FreeraspReactNative;
|
package/src/threat.ts
CHANGED
|
@@ -17,6 +17,7 @@ export class Threat {
|
|
|
17
17
|
static ObfuscationIssues = new Threat(0);
|
|
18
18
|
static DevMode = new Threat(0);
|
|
19
19
|
static Malware = new Threat(0);
|
|
20
|
+
static ADBEnabled = new Threat(0);
|
|
20
21
|
|
|
21
22
|
constructor(value: number) {
|
|
22
23
|
this.value = value;
|
|
@@ -38,6 +39,7 @@ export class Threat {
|
|
|
38
39
|
this.ObfuscationIssues,
|
|
39
40
|
this.DevMode,
|
|
40
41
|
this.Malware,
|
|
42
|
+
this.ADBEnabled,
|
|
41
43
|
]
|
|
42
44
|
: [
|
|
43
45
|
this.AppIntegrity,
|