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 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 ) containing detailed information about detected incidents and potential threats, summarizing the state of your app security.
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.
@@ -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:12.0.0"
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
- val params = Arguments.createMap()
149
- params.putInt(THREAT_CHANNEL_KEY, Threat.Malware.value)
150
- params.putArray(
151
- MALWARE_CHANNEL_KEY, suspiciousApps.toEncodedWritableArray(appReactContext)
152
- )
153
-
154
- appReactContext
155
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
156
- .emit(THREAT_CHANNEL_NAME, params)
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 = Utils.getAppIconAsBase64String(context, this.packageName),
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("Talsec", "Could not retrieve app installation source for ${packageName}: ${e.message}")
78
+ Log.e(
79
+ "Talsec",
80
+ "Could not retrieve app installation source for ${packageName}: ${e.message}",
81
+ )
79
82
  null
80
83
  }
81
84
  }
@@ -32,7 +32,7 @@ const App = () => {
32
32
  // supportedAlternativeStores: ['storeOne', 'storeTwo'],
33
33
  malwareConfig: {
34
34
  blacklistedHashes: ['FgvSehLMM91E7lX/Zqp3u4jMmd0A7hH/Iqozu0TMVd0u'],
35
- blacklistedPackageNames: ['com.wultra.app.screenlogger'],
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: 'com.freeraspreactnativeexample',
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 { addToWhitelist, type SuspiciousAppInfo } from 'freerasp-react-native';
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,
@@ -17,4 +17,5 @@ export const androidChecks = [
17
17
  { name: 'Obfuscation Issues', status: 'ok' },
18
18
  { name: 'Developer Mode', status: 'ok' },
19
19
  { name: 'Malware', status: 'ok' },
20
+ { name: 'ADB Enabled', status: 'ok' },
20
21
  ];
@@ -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 data.map(entry => toSuspiciousAppInfo(entry));
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","error","code","message","addToWhitelist","packageName","Promise","reject","_default","default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
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":[]}
@@ -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;EAE9Be,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,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,CACb,GACD,CACE,IAAI,CAACb,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;AAACS,OAAA,CAAApB,MAAA,GAAAA,MAAA","ignoreList":[]}
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":[]}
@@ -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 data.map(entry => toSuspiciousAppInfo(entry));
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
@@ -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","error","code","message","addToWhitelist","packageName","Promise","reject"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
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":[]}
@@ -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
@@ -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;EAE9Be,WAAWA,CAACC,KAAa,EAAE;IACzB,IAAI,CAACA,KAAK,GAAGA,KAAK;EACpB;EAEA,OAAOC,SAASA,CAAA,EAAa;IAC3B,OAAOlB,QAAQ,CAACmB,EAAE,KAAK,SAAS,GAC5B,CACE,IAAI,CAACjB,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,CACb,GACD,CACE,IAAI,CAACb,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":[]}
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;AAiD9C,eAAO,MAAM,kBAAkB,gDACrB,CAAC,GAAG,OAAO,QAAQ,MAAM,CAAC,EAAE,MAAM,yBAAyB,CAAC,EAAE,EAAE,CAAC,kBAyD1E,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,cAAc,SAAS,CAAC;AACxB,eAAe,mBAAmB,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"}
@@ -14,6 +14,7 @@ export declare class Threat {
14
14
  static ObfuscationIssues: Threat;
15
15
  static DevMode: Threat;
16
16
  static Malware: Threat;
17
+ static ADBEnabled: Threat;
17
18
  constructor(value: number);
18
19
  static getValues(): Threat[];
19
20
  }
@@ -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;gBAEnB,KAAK,EAAE,MAAM;IAIzB,MAAM,CAAC,SAAS,IAAI,MAAM,EAAE;CA+B7B"}
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"}
@@ -46,5 +46,6 @@ export type NativeEventEmitterActions = {
46
46
  devMode?: () => any;
47
47
  systemVPN?: () => any;
48
48
  malware?: (suspiciousApps: SuspiciousAppInfo[]) => any;
49
+ adbEnabled?: () => any;
49
50
  };
50
51
  //# sourceMappingURL=types.d.ts.map
@@ -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;CACxD,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.10.0",
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 = (data: string[]): SuspiciousAppInfo[] => {
58
- return data.map((entry) => toSuspiciousAppInfo(entry));
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,
package/src/types.ts CHANGED
@@ -52,4 +52,5 @@ export type NativeEventEmitterActions = {
52
52
  devMode?: () => any;
53
53
  systemVPN?: () => any;
54
54
  malware?: (suspiciousApps: SuspiciousAppInfo[]) => any;
55
+ adbEnabled?: () => any;
55
56
  };