capacitor-freerasp 2.2.2 → 2.4.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 +105 -0
- package/CapacitorFreerasp.podspec +5 -1
- package/README.md +8 -8
- package/android/build.gradle +3 -3
- package/android/src/main/java/com/aheaditec/freerasp/FreeraspPlugin.kt +106 -33
- package/android/src/main/java/com/aheaditec/freerasp/PluginThreatHandler.kt +121 -0
- package/android/src/main/java/com/aheaditec/freerasp/ScreenProtector.kt +24 -2
- package/android/src/main/java/com/aheaditec/freerasp/dispatchers/ExecutionStateDispatcher.kt +38 -0
- package/android/src/main/java/com/aheaditec/freerasp/dispatchers/ThreatDispatcher.kt +62 -0
- package/android/src/main/java/com/aheaditec/freerasp/events/BaseRaspEvent.kt +7 -0
- package/android/src/main/java/com/aheaditec/freerasp/events/RaspExecutionStateEvent.kt +22 -0
- package/android/src/main/java/com/aheaditec/freerasp/events/ThreatEvent.kt +71 -0
- package/android/src/main/java/com/aheaditec/freerasp/interfaces/PluginExecutionStateListener.kt +7 -0
- package/android/src/main/java/com/aheaditec/freerasp/interfaces/PluginThreatListener.kt +9 -0
- package/android/src/main/java/com/aheaditec/freerasp/models/CapSuspiciousAppInfo.kt +1 -0
- package/android/src/main/java/com/aheaditec/freerasp/utils/Extensions.kt +1 -0
- package/android/src/main/java/com/aheaditec/freerasp/utils/RandomGenerator.kt +24 -0
- package/android/src/main/java/com/aheaditec/freerasp/utils/Utils.kt +3 -5
- package/dist/esm/api/listeners/raspExecutionState.d.ts +3 -0
- package/dist/esm/api/listeners/raspExecutionState.js +40 -0
- package/dist/esm/api/listeners/raspExecutionState.js.map +1 -0
- package/dist/esm/api/listeners/threat.d.ts +3 -0
- package/dist/esm/api/listeners/threat.js +104 -0
- package/dist/esm/api/listeners/threat.js.map +1 -0
- package/dist/esm/api/methods/capacitor.d.ts +4 -0
- package/dist/esm/api/methods/capacitor.js +11 -0
- package/dist/esm/api/methods/capacitor.js.map +1 -0
- package/dist/esm/api/methods/native.d.ts +7 -0
- package/dist/esm/api/methods/native.js +36 -0
- package/dist/esm/api/methods/native.js.map +1 -0
- package/dist/esm/api/nativeModules.d.ts +2 -0
- package/dist/esm/api/nativeModules.js +3 -0
- package/dist/esm/api/nativeModules.js.map +1 -0
- package/dist/esm/channels/raspExecutionState.d.ts +3 -0
- package/dist/esm/channels/raspExecutionState.js +27 -0
- package/dist/esm/channels/raspExecutionState.js.map +1 -0
- package/dist/esm/channels/threat.d.ts +3 -0
- package/dist/esm/channels/threat.js +34 -0
- package/dist/esm/channels/threat.js.map +1 -0
- package/dist/esm/index.d.ts +7 -12
- package/dist/esm/index.js +7 -158
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/raspExecutionState.d.ts +6 -0
- package/dist/esm/models/raspExecutionState.js +10 -0
- package/dist/esm/models/raspExecutionState.js.map +1 -0
- package/dist/esm/models/threat.d.ts +27 -0
- package/dist/esm/{definitions.js → models/threat.js} +9 -3
- package/dist/esm/models/threat.js.map +1 -0
- package/dist/esm/{definitions.d.ts → types/types.d.ts} +41 -44
- package/dist/esm/types/types.js +2 -0
- package/dist/esm/types/types.js.map +1 -0
- package/dist/esm/utils/malware.d.ts +3 -0
- package/dist/esm/utils/malware.js +22 -0
- package/dist/esm/utils/malware.js.map +1 -0
- package/dist/esm/utils/utils.d.ts +3 -0
- package/dist/esm/utils/utils.js +12 -0
- package/dist/esm/utils/utils.js.map +1 -0
- package/dist/plugin.cjs.js +197 -76
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +197 -76
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/FreeraspPlugin.m +3 -0
- package/ios/Plugin/FreeraspPlugin.swift +36 -77
- package/ios/Plugin/Info.plist +1 -1
- package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeDirectory +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeResources +100 -298
- package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeSignature +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +7 -2
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/curl.h +380 -281
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/curlver.h +5 -6
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/easy.h +4 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/header.h +1 -1
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/mprintf.h +11 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/multi.h +62 -22
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/options.h +2 -2
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/system.h +76 -164
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/typecheck-gcc.h +947 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/urlapi.h +5 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/websockets.h +17 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Info.plist +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.abi.json +233 -528
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.private.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/TalsecRuntime +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +14 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/curl.h +380 -281
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/curlver.h +5 -6
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/easy.h +4 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/header.h +1 -1
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/mprintf.h +11 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/multi.h +62 -22
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/options.h +2 -2
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/system.h +76 -164
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/typecheck-gcc.h +947 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/urlapi.h +5 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/websockets.h +17 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Info.plist +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.abi.json +233 -528
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.abi.json +233 -528
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/TalsecRuntime +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/_CodeSignature/CodeResources +56 -45
- package/ios/Plugin/dispatchers/ExecutionStateDispatcher.swift +35 -0
- package/ios/Plugin/dispatchers/ThreatDispatcher.swift +36 -0
- package/ios/Plugin/models/RaspExecutionStates.swift +15 -0
- package/ios/Plugin/models/SecurityThreat.swift +40 -0
- package/ios/Plugin/utils/EventIdentifiers.swift +17 -0
- package/ios/Plugin/utils/RandomGenerator.swift +23 -0
- package/ios/Plugin/utils/Utils.swift +32 -0
- package/package.json +15 -10
- package/android/src/main/java/com/aheaditec/freerasp/Threat.kt +0 -58
- package/android/src/main/java/com/aheaditec/freerasp/ThreatHandler.kt +0 -76
- package/dist/esm/definitions.js.map +0 -1
- package/dist/esm/utils.d.ts +0 -2
- package/dist/esm/utils.js +0 -8
- package/dist/esm/utils.js.map +0 -1
- package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
package/dist/esm/index.js
CHANGED
|
@@ -1,159 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
const getThreatIdentifiers = async () => {
|
|
10
|
-
const { ids } = await Freerasp.getThreatIdentifiers();
|
|
11
|
-
if (ids.length !== getThreatCount() || !itemsHaveType(ids, 'number')) {
|
|
12
|
-
onInvalidCallback();
|
|
13
|
-
}
|
|
14
|
-
return ids;
|
|
15
|
-
};
|
|
16
|
-
const getThreatChannelData = async () => {
|
|
17
|
-
const dataLength = Capacitor.getPlatform() === 'ios' ? 2 : 3;
|
|
18
|
-
const { ids } = await Freerasp.getThreatChannelData();
|
|
19
|
-
if (ids.length !== dataLength || !itemsHaveType(ids, 'string')) {
|
|
20
|
-
onInvalidCallback();
|
|
21
|
-
}
|
|
22
|
-
return ids;
|
|
23
|
-
};
|
|
24
|
-
const prepareMapping = async () => {
|
|
25
|
-
const newValues = await getThreatIdentifiers();
|
|
26
|
-
const threats = Threat.getValues();
|
|
27
|
-
threats.map((threat, index) => {
|
|
28
|
-
threat.value = newValues[index];
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
// parses base64-encoded malware data to SuspiciousAppInfo[]
|
|
32
|
-
const parseMalwareData = async (data) => {
|
|
33
|
-
return new Promise((resolve, reject) => {
|
|
34
|
-
try {
|
|
35
|
-
const suspiciousAppData = data.map(entry => toSuspiciousAppInfo(entry));
|
|
36
|
-
resolve(suspiciousAppData);
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
reject(`Parsing app data failed: ${error}`);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
const toSuspiciousAppInfo = (base64Value) => {
|
|
44
|
-
const data = JSON.parse(atob(base64Value));
|
|
45
|
-
const packageInfo = data.packageInfo;
|
|
46
|
-
return { packageInfo, reason: data.reason };
|
|
47
|
-
};
|
|
48
|
-
const setThreatListeners = async (callbacks) => {
|
|
49
|
-
const [channel, key, malwareKey] = await getThreatChannelData();
|
|
50
|
-
await prepareMapping();
|
|
51
|
-
await Freerasp.addListener(channel, async (event) => {
|
|
52
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
53
|
-
if (event[key] === undefined) {
|
|
54
|
-
onInvalidCallback();
|
|
55
|
-
}
|
|
56
|
-
switch (event[key]) {
|
|
57
|
-
case Threat.PrivilegedAccess.value:
|
|
58
|
-
(_a = callbacks.privilegedAccess) === null || _a === void 0 ? void 0 : _a.call(callbacks);
|
|
59
|
-
break;
|
|
60
|
-
case Threat.Debug.value:
|
|
61
|
-
(_b = callbacks.debug) === null || _b === void 0 ? void 0 : _b.call(callbacks);
|
|
62
|
-
break;
|
|
63
|
-
case Threat.Simulator.value:
|
|
64
|
-
(_c = callbacks.simulator) === null || _c === void 0 ? void 0 : _c.call(callbacks);
|
|
65
|
-
break;
|
|
66
|
-
case Threat.AppIntegrity.value:
|
|
67
|
-
(_d = callbacks.appIntegrity) === null || _d === void 0 ? void 0 : _d.call(callbacks);
|
|
68
|
-
break;
|
|
69
|
-
case Threat.UnofficialStore.value:
|
|
70
|
-
(_e = callbacks.unofficialStore) === null || _e === void 0 ? void 0 : _e.call(callbacks);
|
|
71
|
-
break;
|
|
72
|
-
case Threat.Hooks.value:
|
|
73
|
-
(_f = callbacks.hooks) === null || _f === void 0 ? void 0 : _f.call(callbacks);
|
|
74
|
-
break;
|
|
75
|
-
case Threat.DeviceBinding.value:
|
|
76
|
-
(_g = callbacks.deviceBinding) === null || _g === void 0 ? void 0 : _g.call(callbacks);
|
|
77
|
-
break;
|
|
78
|
-
case Threat.Passcode.value:
|
|
79
|
-
(_h = callbacks.passcode) === null || _h === void 0 ? void 0 : _h.call(callbacks);
|
|
80
|
-
break;
|
|
81
|
-
case Threat.SecureHardwareNotAvailable.value:
|
|
82
|
-
(_j = callbacks.secureHardwareNotAvailable) === null || _j === void 0 ? void 0 : _j.call(callbacks);
|
|
83
|
-
break;
|
|
84
|
-
case Threat.ObfuscationIssues.value:
|
|
85
|
-
(_k = callbacks.obfuscationIssues) === null || _k === void 0 ? void 0 : _k.call(callbacks);
|
|
86
|
-
break;
|
|
87
|
-
case Threat.DeviceID.value:
|
|
88
|
-
(_l = callbacks.deviceID) === null || _l === void 0 ? void 0 : _l.call(callbacks);
|
|
89
|
-
break;
|
|
90
|
-
case Threat.DevMode.value:
|
|
91
|
-
(_m = callbacks.devMode) === null || _m === void 0 ? void 0 : _m.call(callbacks);
|
|
92
|
-
break;
|
|
93
|
-
case Threat.SystemVPN.value:
|
|
94
|
-
(_o = callbacks.systemVPN) === null || _o === void 0 ? void 0 : _o.call(callbacks);
|
|
95
|
-
break;
|
|
96
|
-
case Threat.Malware.value:
|
|
97
|
-
(_p = callbacks.malware) === null || _p === void 0 ? void 0 : _p.call(callbacks, await parseMalwareData(event[malwareKey]));
|
|
98
|
-
break;
|
|
99
|
-
case Threat.ADBEnabled.value:
|
|
100
|
-
(_q = callbacks.adbEnabled) === null || _q === void 0 ? void 0 : _q.call(callbacks);
|
|
101
|
-
break;
|
|
102
|
-
case Threat.Screenshot.value:
|
|
103
|
-
(_r = callbacks.screenshot) === null || _r === void 0 ? void 0 : _r.call(callbacks);
|
|
104
|
-
break;
|
|
105
|
-
case Threat.ScreenRecording.value:
|
|
106
|
-
(_s = callbacks.screenRecording) === null || _s === void 0 ? void 0 : _s.call(callbacks);
|
|
107
|
-
break;
|
|
108
|
-
case Threat.MultiInstance.value:
|
|
109
|
-
(_t = callbacks.multiInstance) === null || _t === void 0 ? void 0 : _t.call(callbacks);
|
|
110
|
-
break;
|
|
111
|
-
default:
|
|
112
|
-
onInvalidCallback();
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
};
|
|
117
|
-
const removeThreatListeners = () => {
|
|
118
|
-
activeListeners.forEach(listener => listener.remove());
|
|
119
|
-
};
|
|
120
|
-
const startFreeRASP = async (config, reactions) => {
|
|
121
|
-
await setThreatListeners(reactions);
|
|
122
|
-
try {
|
|
123
|
-
const { started } = await Freerasp.talsecStart({ config });
|
|
124
|
-
return started;
|
|
125
|
-
}
|
|
126
|
-
catch (e) {
|
|
127
|
-
console.error(`${e.code}: ${e.message}`);
|
|
128
|
-
return Promise.reject(`${e.code}: ${e.message}`);
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
const addToWhitelist = async (packageName) => {
|
|
132
|
-
if (Capacitor.getPlatform() === 'ios') {
|
|
133
|
-
return Promise.reject('Malware detection not available on iOS');
|
|
134
|
-
}
|
|
135
|
-
const { result } = await Freerasp.addToWhitelist({ packageName });
|
|
136
|
-
return result;
|
|
137
|
-
};
|
|
138
|
-
const getAppIcon = async (packageName) => {
|
|
139
|
-
if (Capacitor.getPlatform() === 'ios') {
|
|
140
|
-
return Promise.reject('App icon retrieval for Malware detection not available on iOS');
|
|
141
|
-
}
|
|
142
|
-
const { result } = await Freerasp.getAppIcon({ packageName });
|
|
143
|
-
return result;
|
|
144
|
-
};
|
|
145
|
-
const blockScreenCapture = async (enable) => {
|
|
146
|
-
const { result } = await Freerasp.blockScreenCapture({ enable });
|
|
147
|
-
return result;
|
|
148
|
-
};
|
|
149
|
-
const isScreenCaptureBlocked = async () => {
|
|
150
|
-
const { result } = await Freerasp.isScreenCaptureBlocked();
|
|
151
|
-
return result;
|
|
152
|
-
};
|
|
153
|
-
const storeExternalId = async (data) => {
|
|
154
|
-
const { result } = await Freerasp.storeExternalId({ data });
|
|
155
|
-
return result;
|
|
156
|
-
};
|
|
157
|
-
export * from './definitions';
|
|
158
|
-
export { Freerasp, startFreeRASP, setThreatListeners, removeThreatListeners, addToWhitelist, getAppIcon, blockScreenCapture, isScreenCaptureBlocked, storeExternalId, };
|
|
1
|
+
import { onInvalidCallback } from './api/methods/native';
|
|
2
|
+
export * from './types/types';
|
|
3
|
+
export * from './api/methods/native';
|
|
4
|
+
export * from './api/listeners/threat';
|
|
5
|
+
export * from './api/listeners/raspExecutionState';
|
|
6
|
+
export * from './api/methods/capacitor';
|
|
7
|
+
export { onInvalidCallback as abortApp };
|
|
159
8
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Capacitor, registerPlugin } from '@capacitor/core';\n\nimport type {\n FreeraspPlugin,\n FreeraspConfig,\n NativeEventEmitterActions,\n SuspiciousAppInfo,\n PackageInfo,\n} from './definitions';\nimport { Threat } from './definitions';\nimport { getThreatCount, itemsHaveType } from './utils';\n\nconst activeListeners: any[] = [];\n\nconst Freerasp = registerPlugin<FreeraspPlugin>('Freerasp', {});\n\nconst onInvalidCallback = (): void => {\n Freerasp.onInvalidCallback();\n};\n\nconst getThreatIdentifiers = async (): Promise<number[]> => {\n const { ids } = await Freerasp.getThreatIdentifiers();\n if (ids.length !== getThreatCount() || !itemsHaveType(ids, 'number')) {\n onInvalidCallback();\n }\n return ids;\n};\n\nconst getThreatChannelData = async (): Promise<[string, string, string]> => {\n const dataLength = Capacitor.getPlatform() === 'ios' ? 2 : 3;\n const { ids } = await Freerasp.getThreatChannelData();\n if (ids.length !== dataLength || !itemsHaveType(ids, 'string')) {\n onInvalidCallback();\n }\n return ids;\n};\n\nconst prepareMapping = async (): Promise<void> => {\n const newValues = await getThreatIdentifiers();\n const threats = Threat.getValues();\n\n threats.map((threat, index) => {\n threat.value = newValues[index];\n });\n};\n\n// parses base64-encoded malware data to SuspiciousAppInfo[]\nconst parseMalwareData = async (\n data: string[],\n): Promise<SuspiciousAppInfo[]> => {\n return new Promise((resolve, reject) => {\n try {\n const suspiciousAppData = data.map(entry => toSuspiciousAppInfo(entry));\n resolve(suspiciousAppData);\n } catch (error: any) {\n reject(`Parsing app data failed: ${error}`);\n }\n });\n};\n\nconst toSuspiciousAppInfo = (base64Value: string): SuspiciousAppInfo => {\n const data = JSON.parse(atob(base64Value));\n const packageInfo = data.packageInfo as PackageInfo;\n return { packageInfo, reason: data.reason } as SuspiciousAppInfo;\n};\n\nconst setThreatListeners = async <T extends NativeEventEmitterActions>(\n callbacks: T & Record<Exclude<keyof T, keyof NativeEventEmitterActions>, []>,\n): Promise<void> => {\n const [channel, key, malwareKey] = await getThreatChannelData();\n await prepareMapping();\n\n await Freerasp.addListener(channel, async (event: any) => {\n if (event[key] === undefined) {\n onInvalidCallback();\n }\n switch (event[key]) {\n case Threat.PrivilegedAccess.value:\n callbacks.privilegedAccess?.();\n break;\n case Threat.Debug.value:\n callbacks.debug?.();\n break;\n case Threat.Simulator.value:\n callbacks.simulator?.();\n break;\n case Threat.AppIntegrity.value:\n callbacks.appIntegrity?.();\n break;\n case Threat.UnofficialStore.value:\n callbacks.unofficialStore?.();\n break;\n case Threat.Hooks.value:\n callbacks.hooks?.();\n break;\n case Threat.DeviceBinding.value:\n callbacks.deviceBinding?.();\n break;\n case Threat.Passcode.value:\n callbacks.passcode?.();\n break;\n case Threat.SecureHardwareNotAvailable.value:\n callbacks.secureHardwareNotAvailable?.();\n break;\n case Threat.ObfuscationIssues.value:\n callbacks.obfuscationIssues?.();\n break;\n case Threat.DeviceID.value:\n callbacks.deviceID?.();\n break;\n case Threat.DevMode.value:\n callbacks.devMode?.();\n break;\n case Threat.SystemVPN.value:\n callbacks.systemVPN?.();\n break;\n case Threat.Malware.value:\n callbacks.malware?.(await parseMalwareData(event[malwareKey]));\n break;\n case Threat.ADBEnabled.value:\n callbacks.adbEnabled?.();\n break;\n case Threat.Screenshot.value:\n callbacks.screenshot?.();\n break;\n case Threat.ScreenRecording.value:\n callbacks.screenRecording?.();\n break;\n case Threat.MultiInstance.value:\n callbacks.multiInstance?.();\n break;\n default:\n onInvalidCallback();\n break;\n }\n });\n};\n\nconst removeThreatListeners = (): void => {\n activeListeners.forEach(listener => listener.remove());\n};\n\nconst startFreeRASP = async <T extends NativeEventEmitterActions>(\n config: FreeraspConfig,\n reactions: T & Record<Exclude<keyof T, keyof NativeEventEmitterActions>, []>,\n): Promise<boolean> => {\n await setThreatListeners(reactions);\n try {\n const { started } = await Freerasp.talsecStart({ config });\n return started;\n } catch (e: any) {\n console.error(`${e.code}: ${e.message}`);\n return Promise.reject(`${e.code}: ${e.message}`);\n }\n};\n\nconst addToWhitelist = async (packageName: string): Promise<boolean> => {\n if (Capacitor.getPlatform() === 'ios') {\n return Promise.reject('Malware detection not available on iOS');\n }\n const { result } = await Freerasp.addToWhitelist({ packageName });\n return result;\n};\n\nconst getAppIcon = async (packageName: string): Promise<string> => {\n if (Capacitor.getPlatform() === 'ios') {\n return Promise.reject(\n 'App icon retrieval for Malware detection not available on iOS',\n );\n }\n const { result } = await Freerasp.getAppIcon({ packageName });\n return result;\n};\n\nconst blockScreenCapture = async (enable: boolean): Promise<boolean> => {\n const { result } = await Freerasp.blockScreenCapture({ enable });\n return result;\n};\n\nconst isScreenCaptureBlocked = async (): Promise<boolean> => {\n const { result } = await Freerasp.isScreenCaptureBlocked();\n return result;\n};\n\nconst storeExternalId = async (data: string): Promise<boolean> => {\n const { result } = await Freerasp.storeExternalId({ data });\n return result;\n};\n\nexport * from './definitions';\nexport {\n Freerasp,\n startFreeRASP,\n setThreatListeners,\n removeThreatListeners,\n addToWhitelist,\n getAppIcon,\n blockScreenCapture,\n isScreenCaptureBlocked,\n storeExternalId,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,iBAAiB,IAAI,QAAQ,EAAE,CAAC","sourcesContent":["import { onInvalidCallback } from './api/methods/native';\n\nexport * from './types/types';\nexport * from './api/methods/native';\nexport * from './api/listeners/threat';\nexport * from './api/listeners/raspExecutionState';\nexport * from './api/methods/capacitor';\nexport { onInvalidCallback as abortApp };\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export class RaspExecutionState {
|
|
2
|
+
constructor(value) {
|
|
3
|
+
this.value = value;
|
|
4
|
+
}
|
|
5
|
+
static getValues() {
|
|
6
|
+
return [this.AllChecksFinished];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
RaspExecutionState.AllChecksFinished = new RaspExecutionState(0);
|
|
10
|
+
//# sourceMappingURL=raspExecutionState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raspExecutionState.js","sourceRoot":"","sources":["../../../src/models/raspExecutionState.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAkB;IAK7B,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC;;AARM,oCAAiB,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC","sourcesContent":["export class RaspExecutionState {\n value: number;\n\n static AllChecksFinished = new RaspExecutionState(0);\n\n constructor(value: number) {\n this.value = value;\n }\n\n static getValues(): RaspExecutionState[] {\n return [this.AllChecksFinished];\n }\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare class Threat {
|
|
2
|
+
value: number;
|
|
3
|
+
static AppIntegrity: Threat;
|
|
4
|
+
static PrivilegedAccess: Threat;
|
|
5
|
+
static Debug: Threat;
|
|
6
|
+
static Hooks: Threat;
|
|
7
|
+
static Passcode: Threat;
|
|
8
|
+
static Simulator: Threat;
|
|
9
|
+
static SecureHardwareNotAvailable: Threat;
|
|
10
|
+
static SystemVPN: Threat;
|
|
11
|
+
static DeviceBinding: Threat;
|
|
12
|
+
static DeviceID: Threat;
|
|
13
|
+
static UnofficialStore: Threat;
|
|
14
|
+
static ObfuscationIssues: Threat;
|
|
15
|
+
static DevMode: Threat;
|
|
16
|
+
static Malware: Threat;
|
|
17
|
+
static ADBEnabled: Threat;
|
|
18
|
+
static Screenshot: Threat;
|
|
19
|
+
static ScreenRecording: Threat;
|
|
20
|
+
static MultiInstance: Threat;
|
|
21
|
+
static TimeSpoofing: Threat;
|
|
22
|
+
static LocationSpoofing: Threat;
|
|
23
|
+
static UnsecureWifi: Threat;
|
|
24
|
+
static Automation: Threat;
|
|
25
|
+
constructor(value: number);
|
|
26
|
+
static getValues(): Threat[];
|
|
27
|
+
}
|
|
@@ -16,7 +16,6 @@ export class Threat {
|
|
|
16
16
|
this.SystemVPN,
|
|
17
17
|
this.DeviceBinding,
|
|
18
18
|
this.UnofficialStore,
|
|
19
|
-
this.Overlay,
|
|
20
19
|
this.ObfuscationIssues,
|
|
21
20
|
this.DevMode,
|
|
22
21
|
this.Malware,
|
|
@@ -24,6 +23,10 @@ export class Threat {
|
|
|
24
23
|
this.Screenshot,
|
|
25
24
|
this.ScreenRecording,
|
|
26
25
|
this.MultiInstance,
|
|
26
|
+
this.TimeSpoofing,
|
|
27
|
+
this.LocationSpoofing,
|
|
28
|
+
this.UnsecureWifi,
|
|
29
|
+
this.Automation,
|
|
27
30
|
]
|
|
28
31
|
: [
|
|
29
32
|
this.AppIntegrity,
|
|
@@ -53,7 +56,6 @@ Threat.SystemVPN = new Threat(0);
|
|
|
53
56
|
Threat.DeviceBinding = new Threat(0);
|
|
54
57
|
Threat.DeviceID = new Threat(0);
|
|
55
58
|
Threat.UnofficialStore = new Threat(0);
|
|
56
|
-
Threat.Overlay = new Threat(0);
|
|
57
59
|
Threat.ObfuscationIssues = new Threat(0);
|
|
58
60
|
Threat.DevMode = new Threat(0);
|
|
59
61
|
Threat.Malware = new Threat(0);
|
|
@@ -61,4 +63,8 @@ Threat.ADBEnabled = new Threat(0);
|
|
|
61
63
|
Threat.Screenshot = new Threat(0);
|
|
62
64
|
Threat.ScreenRecording = new Threat(0);
|
|
63
65
|
Threat.MultiInstance = new Threat(0);
|
|
64
|
-
|
|
66
|
+
Threat.TimeSpoofing = new Threat(0);
|
|
67
|
+
Threat.LocationSpoofing = new Threat(0);
|
|
68
|
+
Threat.UnsecureWifi = new Threat(0);
|
|
69
|
+
Threat.Automation = new Threat(0);
|
|
70
|
+
//# sourceMappingURL=threat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threat.js","sourceRoot":"","sources":["../../../src/models/threat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAO,MAAM;IA0BjB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,OAAO,SAAS,CAAC,WAAW,EAAE,KAAK,SAAS;YAC1C,CAAC,CAAC;gBACE,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,gBAAgB;gBACrB,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,0BAA0B;gBAC/B,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,iBAAiB;gBACtB,IAAI,CAAC,OAAO;gBACZ,IAAI,CAAC,OAAO;gBACZ,IAAI,CAAC,UAAU;gBACf,IAAI,CAAC,UAAU;gBACf,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,gBAAgB;gBACrB,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,UAAU;aAChB;YACH,CAAC,CAAC;gBACE,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,gBAAgB;gBACrB,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,0BAA0B;gBAC/B,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,UAAU;gBACf,IAAI,CAAC,eAAe;aACrB,CAAC;IACR,CAAC;;AAnEM,mBAAY,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B,uBAAgB,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,YAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,YAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,eAAQ,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,gBAAS,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,iCAA0B,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAS,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,oBAAa,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,eAAQ,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,sBAAe,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAChC,wBAAiB,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAClC,cAAO,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,cAAO,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,iBAAU,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,iBAAU,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,sBAAe,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAChC,oBAAa,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,mBAAY,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B,uBAAgB,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,mBAAY,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B,iBAAU,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC","sourcesContent":["import { Capacitor } from '@capacitor/core';\n\nexport class Threat {\n value: number;\n\n static AppIntegrity = new Threat(0);\n static PrivilegedAccess = new Threat(0);\n static Debug = new Threat(0);\n static Hooks = new Threat(0);\n static Passcode = new Threat(0);\n static Simulator = new Threat(0);\n static SecureHardwareNotAvailable = new Threat(0);\n static SystemVPN = new Threat(0);\n static DeviceBinding = new Threat(0);\n static DeviceID = new Threat(0);\n static UnofficialStore = new Threat(0);\n static ObfuscationIssues = new Threat(0);\n static DevMode = new Threat(0);\n static Malware = new Threat(0);\n static ADBEnabled = new Threat(0);\n static Screenshot = new Threat(0);\n static ScreenRecording = new Threat(0);\n static MultiInstance = new Threat(0);\n static TimeSpoofing = new Threat(0);\n static LocationSpoofing = new Threat(0);\n static UnsecureWifi = new Threat(0);\n static Automation = new Threat(0);\n\n constructor(value: number) {\n this.value = value;\n }\n\n static getValues(): Threat[] {\n return Capacitor.getPlatform() === 'android'\n ? [\n this.AppIntegrity,\n this.PrivilegedAccess,\n this.Debug,\n this.Hooks,\n this.Passcode,\n this.Simulator,\n this.SecureHardwareNotAvailable,\n this.SystemVPN,\n this.DeviceBinding,\n this.UnofficialStore,\n this.ObfuscationIssues,\n this.DevMode,\n this.Malware,\n this.ADBEnabled,\n this.Screenshot,\n this.ScreenRecording,\n this.MultiInstance,\n this.TimeSpoofing,\n this.LocationSpoofing,\n this.UnsecureWifi,\n this.Automation,\n ]\n : [\n this.AppIntegrity,\n this.PrivilegedAccess,\n this.Debug,\n this.Hooks,\n this.Passcode,\n this.Simulator,\n this.SecureHardwareNotAvailable,\n this.SystemVPN,\n this.DeviceBinding,\n this.DeviceID,\n this.UnofficialStore,\n this.Screenshot,\n this.ScreenRecording,\n ];\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export interface
|
|
2
|
-
addListener(listener: string, callback: (event: any) => void): any;
|
|
1
|
+
export interface TalsecPlugin {
|
|
3
2
|
talsecStart(options: {
|
|
4
|
-
config:
|
|
3
|
+
config: TalsecConfig;
|
|
5
4
|
}): Promise<{
|
|
6
5
|
started: boolean;
|
|
7
6
|
}>;
|
|
7
|
+
addListener(listner: string, callback: any): any;
|
|
8
8
|
onInvalidCallback(): void;
|
|
9
9
|
getThreatIdentifiers(): Promise<{
|
|
10
10
|
ids: number[];
|
|
@@ -12,15 +12,24 @@ export interface FreeraspPlugin {
|
|
|
12
12
|
getThreatChannelData(): Promise<{
|
|
13
13
|
ids: [string, string, string];
|
|
14
14
|
}>;
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
getRaspExecutionStateIdentifiers(): Promise<{
|
|
16
|
+
ids: number[];
|
|
17
|
+
}>;
|
|
18
|
+
getRaspExecutionStateChannelData(): Promise<{
|
|
19
|
+
ids: [string, string];
|
|
20
|
+
}>;
|
|
21
|
+
storeExternalId(options: {
|
|
22
|
+
data: string;
|
|
17
23
|
}): Promise<{
|
|
18
24
|
result: boolean;
|
|
19
25
|
}>;
|
|
20
|
-
|
|
26
|
+
removeExternalId(): Promise<{
|
|
27
|
+
result: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
addToWhitelist(options: {
|
|
21
30
|
packageName: string;
|
|
22
31
|
}): Promise<{
|
|
23
|
-
result:
|
|
32
|
+
result: boolean;
|
|
24
33
|
}>;
|
|
25
34
|
blockScreenCapture(options: {
|
|
26
35
|
enable: boolean;
|
|
@@ -30,46 +39,48 @@ export interface FreeraspPlugin {
|
|
|
30
39
|
isScreenCaptureBlocked(): Promise<{
|
|
31
40
|
result: boolean;
|
|
32
41
|
}>;
|
|
33
|
-
|
|
34
|
-
|
|
42
|
+
getAppIcon(options: {
|
|
43
|
+
packageName: string;
|
|
35
44
|
}): Promise<{
|
|
36
|
-
result:
|
|
45
|
+
result: string;
|
|
37
46
|
}>;
|
|
38
47
|
}
|
|
39
|
-
export
|
|
40
|
-
androidConfig?:
|
|
41
|
-
iosConfig?:
|
|
48
|
+
export type TalsecConfig = {
|
|
49
|
+
androidConfig?: TalsecAndroidConfig;
|
|
50
|
+
iosConfig?: TalsecIosConfig;
|
|
42
51
|
watcherMail: string;
|
|
43
52
|
isProd?: boolean;
|
|
53
|
+
killOnBypass?: boolean;
|
|
44
54
|
};
|
|
45
|
-
export
|
|
55
|
+
export type TalsecAndroidConfig = {
|
|
46
56
|
packageName: string;
|
|
47
57
|
certificateHashes: string[];
|
|
48
58
|
supportedAlternativeStores?: string[];
|
|
49
|
-
malwareConfig?:
|
|
59
|
+
malwareConfig?: TalsecMalwareConfig;
|
|
50
60
|
};
|
|
51
|
-
export
|
|
61
|
+
export type TalsecIosConfig = {
|
|
52
62
|
appBundleId: string;
|
|
53
63
|
appTeamId: string;
|
|
54
64
|
};
|
|
55
|
-
export
|
|
65
|
+
export type TalsecMalwareConfig = {
|
|
56
66
|
blacklistedHashes?: string[];
|
|
57
67
|
blacklistedPackageNames?: string[];
|
|
58
68
|
suspiciousPermissions?: string[][];
|
|
59
69
|
whitelistedInstallationSources?: string[];
|
|
60
70
|
};
|
|
61
|
-
export
|
|
71
|
+
export type SuspiciousAppInfo = {
|
|
62
72
|
packageInfo: PackageInfo;
|
|
63
73
|
reason: string;
|
|
74
|
+
permissions?: string[];
|
|
64
75
|
};
|
|
65
|
-
export
|
|
76
|
+
export type PackageInfo = {
|
|
66
77
|
packageName: string;
|
|
67
78
|
appName?: string;
|
|
68
79
|
version?: string;
|
|
69
80
|
appIcon?: string;
|
|
70
81
|
installerStore?: string;
|
|
71
82
|
};
|
|
72
|
-
export
|
|
83
|
+
export type ThreatEventActions = {
|
|
73
84
|
privilegedAccess?: () => any;
|
|
74
85
|
debug?: () => any;
|
|
75
86
|
simulator?: () => any;
|
|
@@ -88,28 +99,14 @@ export declare type NativeEventEmitterActions = {
|
|
|
88
99
|
screenshot?: () => any;
|
|
89
100
|
screenRecording?: () => any;
|
|
90
101
|
multiInstance?: () => any;
|
|
102
|
+
timeSpoofing?: () => any;
|
|
103
|
+
locationSpoofing?: () => any;
|
|
104
|
+
unsecureWifi?: () => any;
|
|
105
|
+
automation?: () => any;
|
|
106
|
+
};
|
|
107
|
+
export type NativeEvent = {
|
|
108
|
+
[key: string]: number | string[] | undefined;
|
|
109
|
+
};
|
|
110
|
+
export type RaspExecutionStateEventActions = {
|
|
111
|
+
allChecksFinished?: () => any;
|
|
91
112
|
};
|
|
92
|
-
export declare class Threat {
|
|
93
|
-
value: number;
|
|
94
|
-
static AppIntegrity: Threat;
|
|
95
|
-
static PrivilegedAccess: Threat;
|
|
96
|
-
static Debug: Threat;
|
|
97
|
-
static Hooks: Threat;
|
|
98
|
-
static Passcode: Threat;
|
|
99
|
-
static Simulator: Threat;
|
|
100
|
-
static SecureHardwareNotAvailable: Threat;
|
|
101
|
-
static SystemVPN: Threat;
|
|
102
|
-
static DeviceBinding: Threat;
|
|
103
|
-
static DeviceID: Threat;
|
|
104
|
-
static UnofficialStore: Threat;
|
|
105
|
-
static Overlay: Threat;
|
|
106
|
-
static ObfuscationIssues: Threat;
|
|
107
|
-
static DevMode: Threat;
|
|
108
|
-
static Malware: Threat;
|
|
109
|
-
static ADBEnabled: Threat;
|
|
110
|
-
static Screenshot: Threat;
|
|
111
|
-
static ScreenRecording: Threat;
|
|
112
|
-
static MultiInstance: Threat;
|
|
113
|
-
constructor(value: number);
|
|
114
|
-
static getValues(): Threat[];
|
|
115
|
-
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface TalsecPlugin {\n talsecStart(options: { config: TalsecConfig }): Promise<{ started: boolean }>;\n addListener(listner: string, callback: any): any;\n onInvalidCallback(): void;\n getThreatIdentifiers(): Promise<{ ids: number[] }>;\n getThreatChannelData(): Promise<{ ids: [string, string, string] }>;\n getRaspExecutionStateIdentifiers(): Promise<{ ids: number[] }>;\n getRaspExecutionStateChannelData(): Promise<{ ids: [string, string] }>;\n storeExternalId(options: { data: string }): Promise<{ result: boolean }>;\n removeExternalId(): Promise<{ result: boolean }>;\n addToWhitelist(options: { packageName: string }): Promise<{ result: boolean }>;\n blockScreenCapture(options: { enable: boolean }): Promise<{ result: boolean }>;\n isScreenCaptureBlocked(): Promise<{ result: boolean }>;\n getAppIcon(options: { packageName: string }): Promise<{ result: string }>;\n}\n\nexport type TalsecConfig = {\n androidConfig?: TalsecAndroidConfig;\n iosConfig?: TalsecIosConfig;\n watcherMail: string;\n isProd?: boolean;\n killOnBypass?: boolean;\n};\n\nexport type TalsecAndroidConfig = {\n packageName: string;\n certificateHashes: string[];\n supportedAlternativeStores?: string[];\n malwareConfig?: TalsecMalwareConfig;\n};\n\nexport type TalsecIosConfig = {\n appBundleId: string;\n appTeamId: string;\n};\n\nexport type TalsecMalwareConfig = {\n blacklistedHashes?: string[];\n blacklistedPackageNames?: string[];\n suspiciousPermissions?: string[][];\n whitelistedInstallationSources?: string[];\n};\n\nexport type SuspiciousAppInfo = {\n packageInfo: PackageInfo;\n reason: string;\n permissions?: string[];\n};\n\nexport type PackageInfo = {\n packageName: string;\n appName?: string;\n version?: string;\n appIcon?: string;\n installerStore?: string;\n};\n\nexport type ThreatEventActions = {\n privilegedAccess?: () => any;\n debug?: () => any;\n simulator?: () => any;\n appIntegrity?: () => any;\n unofficialStore?: () => any;\n hooks?: () => any;\n deviceBinding?: () => any;\n deviceID?: () => any;\n passcode?: () => any;\n secureHardwareNotAvailable?: () => any;\n obfuscationIssues?: () => any;\n devMode?: () => any;\n systemVPN?: () => any;\n malware?: (suspiciousApps: SuspiciousAppInfo[]) => any;\n adbEnabled?: () => any;\n screenshot?: () => any;\n screenRecording?: () => any;\n multiInstance?: () => any;\n timeSpoofing?: () => any;\n locationSpoofing?: () => any;\n unsecureWifi?: () => any;\n automation?: () => any;\n};\n\nexport type NativeEvent = { [key: string]: number | string[] | undefined };\n\nexport type RaspExecutionStateEventActions = {\n allChecksFinished?: () => any;\n};\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// parses base64-encoded malware data to SuspiciousAppInfo[]
|
|
2
|
+
export const parseMalwareData = async (data) => {
|
|
3
|
+
return new Promise((resolve, reject) => {
|
|
4
|
+
try {
|
|
5
|
+
const suspiciousAppData = data.map((entry) => toSuspiciousAppInfo(entry));
|
|
6
|
+
resolve(suspiciousAppData);
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
reject(`Parsing app data failed: ${error}`);
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
export const toSuspiciousAppInfo = (base64Value) => {
|
|
14
|
+
const data = JSON.parse(atob(base64Value));
|
|
15
|
+
const packageInfo = data.packageInfo;
|
|
16
|
+
return {
|
|
17
|
+
packageInfo,
|
|
18
|
+
reason: data.reason,
|
|
19
|
+
permissions: data.permissions,
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=malware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"malware.js","sourceRoot":"","sources":["../../../src/utils/malware.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAc,EAAgC,EAAE;IACrF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAmB,EAAqB,EAAE;IAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,WAA0B,CAAC;IACpD,OAAO;QACL,WAAW;QACX,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;KACT,CAAC;AACzB,CAAC,CAAC","sourcesContent":["import type { PackageInfo, SuspiciousAppInfo } from '../types/types';\n\n// parses base64-encoded malware data to SuspiciousAppInfo[]\nexport const parseMalwareData = async (data: string[]): Promise<SuspiciousAppInfo[]> => {\n return new Promise((resolve, reject) => {\n try {\n const suspiciousAppData = data.map((entry) => toSuspiciousAppInfo(entry));\n resolve(suspiciousAppData);\n } catch (error: any) {\n reject(`Parsing app data failed: ${error}`);\n }\n });\n};\n\nexport const toSuspiciousAppInfo = (base64Value: string): SuspiciousAppInfo => {\n const data = JSON.parse(atob(base64Value));\n const packageInfo = data.packageInfo as PackageInfo;\n return {\n packageInfo,\n reason: data.reason,\n permissions: data.permissions,\n } as SuspiciousAppInfo;\n};\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RaspExecutionState } from '../models/raspExecutionState';
|
|
2
|
+
import { Threat } from '../models/threat';
|
|
3
|
+
export const getThreatCount = () => {
|
|
4
|
+
return Threat.getValues().length;
|
|
5
|
+
};
|
|
6
|
+
export const getRaspExecutionStateCount = () => {
|
|
7
|
+
return RaspExecutionState.getValues().length;
|
|
8
|
+
};
|
|
9
|
+
export const itemsHaveType = (data, expectedType) => {
|
|
10
|
+
return data.every((item) => typeof item === expectedType);
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAW,EAAE;IACzC,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAW,EAAE;IACrD,OAAO,kBAAkB,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAW,EAAE,YAAoB,EAAW,EAAE;IAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,YAAY,CAAC,CAAC;AAC5D,CAAC,CAAC","sourcesContent":["import { RaspExecutionState } from '../models/raspExecutionState';\nimport { Threat } from '../models/threat';\n\nexport const getThreatCount = (): number => {\n return Threat.getValues().length;\n};\n\nexport const getRaspExecutionStateCount = (): number => {\n return RaspExecutionState.getValues().length;\n};\n\nexport const itemsHaveType = (data: any[], expectedType: string): boolean => {\n return data.every((item) => typeof item === expectedType);\n};\n"]}
|