Skip to content

Commit 3105080

Browse files
authored
feat: add multi instance detection, release 2.2.0 (#33)
* feat: add android sdk 16.0.1 * feat: add ios sdk 6.12.0 * feat: add multi instance detection * release: freeRASP 2.2.0
1 parent fb27d46 commit 3105080

File tree

39 files changed

+622
-556
lines changed

39 files changed

+622
-556
lines changed

CHANGELOG.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,43 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [2.2.0] - 2025-07-16
9+
10+
- iOS SDK version: 6.12.1
11+
- Android SDK version: 16.0.1
12+
13+
### Android
14+
15+
#### Added
16+
17+
- Added support for 16 KB memory page sizes
18+
- Added `multiInstance` callback
19+
- We are introducing a new capability, detecting whether the application is running in various multi instancing environments
20+
21+
#### Changed
22+
23+
- The ADB service running as a root is a signal for root detection
24+
- Improved emulator detection
25+
- Internal security improvements
26+
27+
#### Fixed
28+
29+
- Removed malware report duplicates
30+
31+
### iOS
32+
33+
#### Added
34+
35+
- Added palera1n jailbreak detection
36+
37+
#### Changed
38+
39+
- Improved Dopamine jailbreak detection
40+
41+
#### Fixed
42+
43+
- Resolved memory-related stability issues.
44+
845
## [2.1.0] - 2025-05-15
946

1047
- iOS SDK version: 6.11.0

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,5 +76,5 @@ dependencies {
7676
androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
7777
androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
7878

79-
implementation 'com.aheaditec.talsec.security:TalsecSecurity-Community-Capacitor:15.1.0'
79+
implementation 'com.aheaditec.talsec.security:TalsecSecurity-Community-Capacitor:16.0.1'
8080
}

android/src/main/java/com/aheaditec/freerasp/Threat.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ internal sealed class Threat(val value: Int) {
2727
object ADBEnabled : Threat((10000..999999999).random())
2828
object Screenshot : Threat((10000..999999999).random())
2929
object ScreenRecording : Threat((10000..999999999).random())
30+
object MultiInstance : Threat((10000..999999999).random())
3031

3132
companion object {
3233
internal fun getThreatValues(): JSONArray {
@@ -48,7 +49,8 @@ internal sealed class Threat(val value: Int) {
4849
Malware.value,
4950
ADBEnabled.value,
5051
Screenshot.value,
51-
ScreenRecording.value
52+
ScreenRecording.value,
53+
MultiInstance.value
5254
))
5355
)
5456
}

android/src/main/java/com/aheaditec/freerasp/ThreatHandler.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,7 @@ internal class TalsecThreatHandler(private val instance: FreeraspPlugin) :
7070
instance.notifyListeners(Threat.ScreenRecording)
7171
}
7272

73+
override fun onMultiInstanceDetected() {
74+
instance.notifyListeners(Threat.MultiInstance)
75+
}
7376
}

dist/esm/definitions.d.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,40 +36,40 @@ export interface FreeraspPlugin {
3636
result: boolean;
3737
}>;
3838
}
39-
export type FreeraspConfig = {
39+
export declare type FreeraspConfig = {
4040
androidConfig?: AndroidConfig;
4141
iosConfig?: IOSConfig;
4242
watcherMail: string;
4343
isProd?: boolean;
4444
};
45-
export type AndroidConfig = {
45+
export declare type AndroidConfig = {
4646
packageName: string;
4747
certificateHashes: string[];
4848
supportedAlternativeStores?: string[];
4949
malwareConfig?: MalwareConfig;
5050
};
51-
export type IOSConfig = {
51+
export declare type IOSConfig = {
5252
appBundleId: string;
5353
appTeamId: string;
5454
};
55-
export type MalwareConfig = {
55+
export declare type MalwareConfig = {
5656
blacklistedHashes?: string[];
5757
blacklistedPackageNames?: string[];
5858
suspiciousPermissions?: string[][];
5959
whitelistedInstallationSources?: string[];
6060
};
61-
export type SuspiciousAppInfo = {
61+
export declare type SuspiciousAppInfo = {
6262
packageInfo: PackageInfo;
6363
reason: string;
6464
};
65-
export type PackageInfo = {
65+
export declare type PackageInfo = {
6666
packageName: string;
6767
appName?: string;
6868
version?: string;
6969
appIcon?: string;
7070
installerStore?: string;
7171
};
72-
export type NativeEventEmitterActions = {
72+
export declare type NativeEventEmitterActions = {
7373
privilegedAccess?: () => any;
7474
debug?: () => any;
7575
simulator?: () => any;
@@ -87,6 +87,7 @@ export type NativeEventEmitterActions = {
8787
adbEnabled?: () => any;
8888
screenshot?: () => any;
8989
screenRecording?: () => any;
90+
multiInstance?: () => any;
9091
};
9192
export declare class Threat {
9293
value: number;
@@ -108,6 +109,7 @@ export declare class Threat {
108109
static ADBEnabled: Threat;
109110
static Screenshot: Threat;
110111
static ScreenRecording: Threat;
112+
static MultiInstance: Threat;
111113
constructor(value: number);
112114
static getValues(): Threat[];
113115
}

dist/esm/definitions.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/esm/definitions.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/esm/index.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { FreeraspPlugin, FreeraspConfig, NativeEventEmitterActions } from './definitions';
22
declare const Freerasp: FreeraspPlugin;
3-
declare const setThreatListeners: <T extends NativeEventEmitterActions>(callbacks: T & Record<Exclude<keyof T, keyof NativeEventEmitterActions>, []>) => Promise<void>;
3+
declare const setThreatListeners: <T extends NativeEventEmitterActions>(callbacks: T & Record<Exclude<keyof T, "privilegedAccess" | "debug" | "simulator" | "appIntegrity" | "unofficialStore" | "hooks" | "deviceBinding" | "deviceID" | "passcode" | "secureHardwareNotAvailable" | "obfuscationIssues" | "devMode" | "systemVPN" | "malware" | "adbEnabled" | "screenshot" | "screenRecording" | "multiInstance">, []>) => Promise<void>;
44
declare const removeThreatListeners: () => void;
5-
declare const startFreeRASP: <T extends NativeEventEmitterActions>(config: FreeraspConfig, reactions: T & Record<Exclude<keyof T, keyof NativeEventEmitterActions>, []>) => Promise<boolean>;
5+
declare const startFreeRASP: <T extends NativeEventEmitterActions>(config: FreeraspConfig, reactions: T & Record<Exclude<keyof T, "privilegedAccess" | "debug" | "simulator" | "appIntegrity" | "unofficialStore" | "hooks" | "deviceBinding" | "deviceID" | "passcode" | "secureHardwareNotAvailable" | "obfuscationIssues" | "devMode" | "systemVPN" | "malware" | "adbEnabled" | "screenshot" | "screenRecording" | "multiInstance">, []>) => Promise<boolean>;
66
declare const addToWhitelist: (packageName: string) => Promise<boolean>;
77
declare const getAppIcon: (packageName: string) => Promise<string>;
88
declare const blockScreenCapture: (enable: boolean) => Promise<boolean>;

dist/esm/index.js

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)