For the complete documentation index, see llms.txt. This page is also available as Markdown.

🎤What's New and Changelog

Browse the latest freeRASP release notes, breaking changes, and new security features across Android, iOS, and cross‑platform SDKs to keep your mobile app protection up to date.

Stay up-to-date with the latest features, improvements and bug fixes for freeRASP. Here you'll find detailed information about each update we've rolled out, organized by platform. Whether you're using the Android, iOS, Flutter, React Native, Capacitor, or Cordova version, all platforms are supported.

Explore the tabs below to see what's new and how the experience has been improved for you. If you're looking for specific changes or features, each update is documented for your convenience.

Latest from Articles

Learn more: https://docs.talsec.app/appsec-articles

Changelog

Github Changelog: https://github.com/talsec/Free-RASP-Android/releases

Latest version 19.2.3

Fixed

  • Fixed the reporting issue in root detection

  • Fixed the reporting issue in hook detection

  • Fixed ANR during SDK initialization caused by blocking I/O operations

  • Fixed background SDK initialization stalling when the shared thread pool is saturated

Version 19.2.1

Breaking Change

  • ❗️Breaking: Renamed ThreatListener.ThreatDetected and ThreatListener.DeviceState callback methods

  • ❗️Breaking: Changed package namespace from com.aheaditec.talsec_security to app.talsec.rasp

Added

Fixed

  • Fixed native crash caused by std::terminate() race condition

  • Fixed periodic hook and root check overwriting

  • Fixed root detection crash in obfuscated release builds

  • Fixed hardware-backed keystore detection failing with NoSuchMethodError on some Android 12+ devices

Changed

  • Improved KernelSU detection

  • Improved hook detection

  • Improved Frida detection

  • Improved root detection capabilities

Version 18.3.0

Breaking Change

  • ❗️Breaking: Modified property reason (of type String) in SuspiciousAppInfo to reasons (to type Set<String>)

  • ❗️Breaking: One of the reasons in SuspiciousAppInfo renamed from blacklist to blocklist

Version 18.0.4

Added

  • Added new detection check for KernelSU

Fixed

  • Fixed memory management issues in the native code

  • Patched possibility of getInstalledPackages throwing DeadSystemException

  • Patched possibility of getNetworkCapabilities throwing SecurityException

  • Fixed well-known issue of Cipher.init throwing KeyStoreConnectException

Removed

  • Removed deprecated monitoring feature

Version 18.0.2

Fixed

  • Fixed method storeExternalId to return ExternalIdResult for error handling

Version 18.0.1

Fixed

  • Fixed ScreenProtector crash during activity start and permissions request

  • Fixed screen recording detection callback

Version 18.0.0

Breaking Change

  • ❗️Breaking: Changed ThreatListener API interfaces (ThreatDetected, DeviceState) to abstract classes

  • ❗️Breaking: Added onAutomationDetected() callback to ThreatDetected interface

    • We are introducing a new capability, detecting whether the device is being automated using tools like Appium

  • ❗️Breaking: Added value restrictions to externalId

    • Method storeExternalId() now returns ExternalIdResult, which indicates Success or Error when externalId violates restrictions

Changed

  • Improved HMA detection to the existing root detection capability

  • Updated compile and target API to 36

  • Improved root detection capabilities

  • Detection of wireless ADB added to ADB detections

Fixed

  • Fixed bug related to key storing in keystore type detection (hw-backed keystore check)

  • Fixed manifest queries merge

Version 17.0.0

Breaking Change

  • ❗️Breaking: Added killOnBypass method to the TalsecConfig.Builder that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker Issue 65

  • ❗️Breaking: Added onTimeSpoofingDetected() callback to ThreatDetected interface

    • We are introducing a new capability, detecting whether the device time has been tampered with

  • ❗️Breaking: Added onLocationSpoofing() callback

    • We are introducing a new capability, detecting whether the location is being spoofed on the device.

  • ❗️Breaking: Added onUnsecureWifi() callback to ThreatDetected interface

  • ❗️Breaking: Changed onMalwareDetected() method parameter packageInfo to non-nullable

  • ❗️Breaking: Updated dispatchKeyEvent() parameter nullability from @Nullable to @NonNull

  • ❗️Breaking: Changed parameter type of Activity instead of Context in the blockScreenCapture() method

  • ❗️Breaking: Removed deprecated functionality Pbkdf2Native and both related native libraries (libpbkdf2_native.so and libpolarssl.so)

Added

  • Added ScreenProtector feature wrapper object that helps with registration/unregistration of screen protection features

  • A new constructor parameter of type RaspExecutionState in class ThreatListenerrepresenting changes in state in our library. RaspExecutionState contains onAllChecksFinished() method, which is triggered after all checks are completed.

  • Added matched permissions to SuspiciousAppInfo object when malware detection reason is suspiciousPermission

  • New option to start Talsec, Talsec.start() takes new parameter TalsecMode that determines the dispatcher thread of initialization and sync checks

  • Capability to check if another app has an option REQUEST_INSTALL_PACKAGES enabled in the system settings to malware detection

Fixed

  • ANR issue caused by registerScreenCaptureCallback() method on the main thread

  • NullPointerException when checking key alias in Keystore on Android 7

  • JaCoCo issue causing MethodTooLargeException during instrumentation

  • DeadApplicationException when calling Settings.Global.getInt or Settings.Secure.getInt on invalid context

  • AndroidKeyStore crashes causing java.util.concurrent.TimeoutException when calling finalize() method on Cipher (GC issues)

Changed

  • Shortened the value of threat detection interval

  • Refactoring of internal architecture of SDK that newly uses Coroutines to manage threading

  • Update of internal dependencies and security libraries

Version 16.0.1

Breaking Change, new feature

  • ❗️Added onMultiInstanceDetected() callback - detection whether the application is installed/running in various multi-instancing environments (e.g. Parallel Space).

Improvement

  • Added support for 16 KB memory page sizes.

  • The ADB service running as "root" is a signal for root detection.

  • Improved emulator detection.

  • Internal security improvements.

Fixed

  • Removed malware report duplicates.

Version 15.1.0

Improvement

  • Added new root detection checks.

  • Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.

  • Added externalId to put an integrator-specified custom identifier into the logs. This feature will be presented later.

Fixed

  • Resolved SecurityException caused by getNetworkCapabilities() - Android 11 specific bug (GH Android issue #56).

Version 15.0.0

Changed

  • Compile API increased to 35, dependencies updated

  • Internal library obfuscation reworked

  • Root detection divided into 2 parts (quick initial checks, and time-demanding asynchronous post checks)

Fixed

  • ANR issues bug-fixing

Version 14.0.1

Breaking Change, new feature

Improvement

  • Added blockScreenCapture(Activity activity, boolean enable) for FLAG_SECURE control, an active protection against screen capturing.

  • isScreenCaptureBlocked() - to receive whether the screen capture is blocked

  • Rate limiting for both screenshot and screenRecording incidents

  • Improved root detection capabilities

Bug Fix

  • Updated proguard rules to fix warnings from okhttp dependency.

Version 13.2.0

Improvement

  • Added request integrity information to data collection headers.

  • Enhanced and accelerated the data collection logic.

Version 13.0.0

New features

  • BREAKING CHANGE: Added onADBEnabledDetected detection feature, which allows you to detect USB debugging option enabled in the developer settings on the device. App needs to implement this new callback.

Version 12.0.0

Improvement

  • Refactored Magisk checks in the root detection

  • Internal refactoring of Malware detection feature

Bug Fix

  • Resolved IllegalArgumentException caused by unregistering not registered receiver in TalsecMonitoringReceiver

Version 11.1.3

Bug Fix

  • Reported ANR issues present on some devices were resolved (GH issue #138).

  • Reported crashes caused by ConcurrentModificationException and NullPointerException were resolved (GH Flutter #140).

  • Reported crashes caused by the UnsupportedOperationException were resolved.

Version 11.1.1

Bug Fix

  • False positives in Hook detection (runtimeManipulation).

Version 11.1.0

New Feature

  • Added onMalwareDetected to ThreatListener.ThreatDetected interface, this is a breaking change and the onMalwareDetected has to be implemented by the integrating application.

    • Important Information

      • Further details for this feature will be provided shortly with the new repositories.

      • For now, do not react to the callback, you can implement it simply by just using println().

  • Added the auditing of the internal execution for the future check optimization and overall security improvements.

Improvement

  • Changed the way TalsecConfig is created, we introduced a Builder pattern to make the process more streamlined and readable.

  • Updated CURL to 8.8.0 and OpenSSL to 3.0.14 (Github issue #114).

  • Refactored fetching the list of installed applications for root and hook detection.

Bug Fix

  • Fixed native crashes (SEGFAULT errors) in ifpip method.

  • Fixed collision for command line tools (like ping) invoked without absolute path (Github issue #41).

Version 9.6.0

New Feature

  • Two new threat callbacks, onDeveloperModeDetected and onSystemVPNDetected, have been added for detecting Developer mode and System VPN.

Improvement

  • Updated GMS dependency to a newer version for improved performance and compatibility.

  • Updated CA bundle to enhance security for secure connections.

Bug Fix

  • Resolved a problem with displaying the Arabic alphabet in logs caused by the device’s default system locale.

Version 9.1.0

Improvement

  • Updated freeRASP SDK artifact hosting ensuring better stability and availability.

Version 9.0.2

Improvement

  • Shortened duration of threat evaluation.

  • Improved appIntegrity check and its logging.

  • Updated CURL to 8.5.0 and OpenSSL to 1.1.1w.

Bug Fix

  • Fixed a native crash bug during one of the native root checks (detected after NDK upgrade).

Version 9.0.0

Improvement

  • Increased the compileSdk and targetSdk in the demo application.

  • Updated dependencies in the demo application.

Bug Fix

  • Fixed issue with ProviderException (#26).

Curious about more in-depth changes for Android? Head over to our GitHub Changelog for the complete history of updates!

Github Changelog: https://github.com/talsec/Free-RASP-iOS/releases

Latest Version: 7.1.2

Added

  • Improved jailbreak detection

Version 7.1.1

Added

  • Added support for postponed checks, therefore, due to slower execution, some subchecks are run after initial startup checks.

  • Improved hook detection.

Version 6.14.5

Fixed

  • Fixed issue with app's color scheme initialization.

  • Fixed bad memory access in jaibreak check.

Version 6.14.4

Fixed

  • Fixed retrigger jailbreak issue on iOS 15 and 16.

Version 6.14.3

Fixed

  • Fixed false positives with jailbreak on iOS 15 and 16.

  • Fixed issue with app crashing on screenshot/screen recording.

Version 6.14.2

Fixed

  • Fixed new jailbreak checks false positives on iOS 14 and 13.

Version 6.14.1

Changed

  • Improved timeSpoofing detection methods.

Version 6.14.0

New Feature

  • Added time spoofing detection, detecting an inaccurate device clock. It is a new threat timeSpoofing.

Improvement

  • Improved jailbreak detection methods.

Version 6.13.0

New Feature

  • A new extension of SecurityThreatCenter: RaspExecutionState contains onAllChecksFinished() method, which is triggered after all checks are completed.

Improvement

  • Updated internal dependencies.

Version 6.12.1

Improvement

  • Added palera1n jailbreak detection.

  • Improved Dopamine jailbreak detection.

Fixed

  • Resolved memory-related stability issues.

Version 6.11.0

New Feature

Improvement

  • Added externalId to put an integrator-specified custom identifier into the logs. This feature will be presented later.

  • Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.

Bug Fix

  • Resolved an issue that prevented Xcode tests from running correctly.

  • Resolved an issue with the screen recording detection.

Version 6.9.0

Improvement

  • Improvement of the obfuscation of the SDK

Changed

  • Deep signing of the OpenSSL binaries

Version 6.8.0

New feature

  • Enhanced security with our new Screen Capture Threat Detection, now capable of identifying screen recording, AirPlay mirroring, and screenshots to guard against unauthorized viewing. Check out the new screenshot and screenRecording callbacks.

Version 6.6.3

Maintenance

  • Updated SDK code signing; it will now be signed with:

    • Team ID: PBDDS45LQS

    • Team Name: Lynx SFT s.r.o.

Version 6.6.2

New feature

Version 6.6.1

Improvement

  • Renewed the signing certificate.

Version 6.6.0

New feature

Version 6.5.3

Improvement

Version 6.5.0

New Feature

  • Added request integrity information to data collection.

  • Significantly improved the response time from data collection service.

Version 6.4.0

New Feature

  • Added new threat callback systemVPN for System VPN detection.

Improvement

  • Passcode check is now performed periodically.

  • Updated the CA bundle to enhance security for secure connections.

Bug Fix

  • Resolved a problem with displaying the Arabic alphabet in logs caused by the device’s default system locale.

Version 6.1.2

New Feature

  • Added Privacy Manifest.

  • Added codesigning for the SDK, it is signed by:

    • Team ID: ASQC376HCN,

    • Team Name: AHEAD iTec, s.r.o..

Improvement

  • Updated CURL to 8.5.0 and OpenSSL to 1.1.1w.

  • Improved obfuscation of Swift and C strings.

Bug Fix

  • Fixed memory leak (#13).

Curious about more in-depth changes for iOS? Head over to our GitHub Changelog for the complete history of updates!

Github Changelog: https://github.com/talsec/Free-RASP-Flutter/releases

Latest version: 8.2.2

Fixed

  • [Android] Fixed the reporting issue in root detection

  • [Android] Fixed the reporting issue in hook detection

  • [Android] Fixed ANR during SDK initialization caused by blocking I/O operations

  • [Android] Fixed background SDK initialization stalling when the shared thread pool is saturated

Version: 8.2.1

Fixed

  • Fixed published package contents so required iOS framework artifacts are included

  • Included the example entrypoint for pub.dev; the full demo app remains in the repository only

  • Excluded non-essential development files (tests, codegen inputs, build outputs) from the published package

  • [Android] Moved -flattenpackagehierarchy out of consumer ProGuard rules to restore AGP 8+ compatibility

Version 8.2.0

Added

  • Added onBootloader callback for detecting an unlocked or compromised bootloader (Android only).

  • [Android] Added bootloader detection (unlocked/compromised) with onBootloader() callback

  • [Android] Added option to fetch JitPack dependencies from our own Talsec repository

Changed

  • [Android] Improved KernelSU detection

  • [Android] Improved hook detection

  • [Android] Improved Frida detection

  • [Android] Improved root detection capabilities

  • [iOS] Improved jailbreak detection

Fixed

  • [Android] Fixed native crash caused by std::terminate() race condition

  • [Android] Fixed periodic hook and root check overwriting

  • [Android] Fixed crash inside AppZygotePreload during root detection

  • [Android] Fixed root detection crash in obfuscated release builds

  • [Android] Fixed hardware-backed keystore detection failing with NoSuchMethodError on some Android 12+ devices

Version 8.1.0

Added

  • Swift Package Manager (SPM) support for iOS. Requires Flutter 3.41.0 or newer; CocoaPods remains supported on older versions.

  • [iOS] Added support for postponed checks, therefore, due to slower execution, some subchecks are run after initial startup checks.

  • [iOS] Improved hook detection.

Fixed

  • [iOS] Fixed issue with app's color scheme initialization.

  • [iOS] Fixed bad memory access in jailbreak check.

Changed

  • [iOS] Raised the minimum iOS deployment target to 13.0, as required by the iOS SDK.

Version 8.0.0

Breaking

  • RaspExecutionStateCallback.onAllChecksDone renamed to onAllChecksFinished

  • PackageInfo.installationSource renamed to installerStore

  • SuspiciousAppInfo.reason (String) renamed to reasons (List<String>)

  • Value "blacklist" in reasons renamed to "blocklist"

  • Removed MalwareConfig and AndroidConfig.malwareConfig — use SuspiciousAppDetectionConfig instead

Added

  • SuspiciousAppInfo.permissions field (List<String>?) — list of suspicious permissions detected on the app

  • [Android] New API class SuspiciousAppDetectionConfig that can be used to configure malware detection

  • [Android] New API for malware detection configuration in TalsecConfig, see TalsecConfig.Builder#suspiciousAppDetection

Fixed

  • [Android] Fixed VerifyError caused by JaCoCo bytecode instrumentation

  • [Android] Fixed a potential cause of crash in the multi-instance detector

  • [Android] Fixed Java interoperability of ScreenProtector methods

  • [Android] Fixed Kotlin classpath conflicts in SDK dependency resolution (Kotlin 2.0.0)

Changed

  • [Android] Fine-tuned location spoofing detection

  • [Android] Modified malware incident log structure for better aggregation

Version 7.5.1

Changed

  • [Android] Made dispatchers singletons

Fixed

  • [iOS] Fixed new jailbreak checks false positives on iOS 14 and 13.

  • [iOS] Fixed false positives with jailbreak on iOS 15 and 16.

  • [iOS] Fixed issue with app crashing on screenshot/screen recording.

  • [iOS] Fixed retrigger jailbreak issue on iOS 15 and 16.

Version 7.5.0

Added

  • [Android] Added support for KernelSU to the existing root detection capabilities

  • [Android] Added support for HMA to the existing root detection capabilities

  • [Android] Added new malware detection capabilities

  • [Android] Added onAutomationDetected() callback to ThreatDetected interface

    • We are introducing a new capability, detecting whether the device is being automated using tools like Appium

  • [Android] Added value restrictions to externalId

    • Method storeExternalId() now returns ExternalIdResult, which indicates Success or Error when externalId violates restrictions

  • [iOS] Added time spoofing detection, detecting an inaccurate device clock. It is a new threat timeSpoofing.

Changed

  • Updated the internal handling of ExternalIdResult on Android (for storeExternalId() method)

  • [Android] Removed unused library tmlib

  • [Android] Refactoring of signature verification code

  • [Android] Updated compile and target API to 36

  • [Android] Improved root detection capabilities

  • [Android] Detection of wireless ADB added to ADB detections

  • [iOS] Improved jailbreak detection methods.

Fixed

  • [Android] Fixed exception handling for the KeyStore getEntry operation

  • [Android] Fixed issue in ScreenProtector concerning the onScreenRecordingDetected invocations

  • [Android] Merged internal shared libraries into a single one, reducing the final APK size

  • [Android] Fixed bug related to key storing in keystore type detection (hw-backed keystore check)

  • [Android] Fixed manifest queries merge

Version 7.4.0

Added

  • Added onAutomation callback to ThreatCallback for handling Threat.automation threat

Version 7.3.0

Added

  • Added killOnBypass to TalsecConfig that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Android only) (Issue 65)

  • Added onTimeSpoofing callback to ThreatCallback for handling Threat.timeSpoofing threat (Android only)

    • We are introducing a new capability, detecting whether the device time has been tampered with

  • Added onLocationSpoofing callback to ThreatCallback for handling Threat.locationSpoofing threat (Android only)

    • We are introducing a new capability, detecting whether the location is being spoofed on the device.

  • Added onUnsecureWifi callback to ThreatCallback for handling Threat.unsecureWifi threat (Android only)

    • We are introducing a new capability, detecting whether the device is connected to an unsecured Wi-Fi network.

  • Added onAllChecksDone callback to new RaspExecutionStateCallback

    • We are introducing a new callback that notifies when all security checks have been completed.

Removed

  • Removed deprecated functionality Pbkdf2Native and both related native libraries (libpbkdf2_native.so and libpolarssl.so)

Changed

  • Updated internal dependencies

Version 7.2.2

Fixed

  • [Android] Fixed an issue with crashing screen protector

Version 7.2.1

Fixed

  • [iOS] Fixed an issue with native framework

Version: 7.2.0

New Feature

  • Added interface for multi-instance detection

Improvement

  • [iOS] Added palera1n jailbreak detection

  • [iOS] Improved Dopamine jailbreak detection

  • [Android] Improved emulator detection

  • [Android] Added support for 16 KB pages

Fixed

  • [iOS] Resolved memory-related stability issues

  • [Android] Removed malware report duplicates

Version: 7.1.0

New feature

  • Added interface for screenshot / screen recording blocking on iOS.

Improvements

  • Added interface for external ID storage.

  • Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.

  • [Android] New root detection checks added.

Fixed

  • Issue that caused compilation errors due to unknown references.

  • [iOS] Resolved an issue with the screen recording detection.

  • [iOS] Resolved an issue that prevented Xcode tests from running correctly.

Version 7.0.0

Added

  • fvm support for Flutter version management

Changed

  • Updated versions for example app

  • [Android] Breaking: Raised Kotlin version to 2.1.0

  • [Android] Compile API increased to 35, dependencies updated

  • [Android] Internal library obfuscation reworked

  • [Android] Root detection divided into 2 parts (quick initial checks, and time-demanding asynchronous post checks)

  • [iOS] Improvement of the obfuscation of the SDK

  • [iOS] Deep signing of the OpenSSL binaries

Fixed

  • [Android] ANR issues bug-fixing

Version 6.12.0

New feature

  • Added screenshot - detection of screenshots, refer to the freeRASP integration documentation.

  • Added screenRecording - detection of screen recording, refer to the freeRASP integration documentation.

  • Added blockScreenCapture for FLAG_SECURE control, an active protection against screen capturing.

  • Added isScreenCaptureBlocked - to receive whether the screen capture is blocked

Changed

  • [Android] Raised Android CompileSDK level to 35

  • [Android] Monitoring is now disabled by default

Improvement

  • [Android] Improved root detection

Bug Fix

  • [Android] Proguard rules to address warnings from okhttp dependency

Version 6.11.0

Improvement

  • [Android] Added request integrity information to data collection headers.

  • [Android] Enhanced and accelerated the data collection logic.

Version 6.10.0

Improvement

  • 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

  • [Android] Malware data is now parsed on background thread to improve responsiveness.

Version 6.9.0

New features

  • [Android] onADBEnabled callback, allowing you to detect USB debugging option enabled in the developer settings on the device.

Version 6.8.0

New features and improvements

  • [Android] Malware detection as a new callback for enhanced app security.

  • [Android] Internal refactoring of Malware detection feature.

  • [Android] Refactoring Magisk checks in the root detection.

  • [iOS] Enhanced security with Serotonin Jailbreak Detection to identify compromised devices.

Maintenance

  • [iOS] Updated SDK code signing; it will now be signed with:

    • Team ID: PBDDS45LQS

    • Team Name: Lynx SFT s.r.o.

Bug Fix

  • [Android] Resolved IllegalArgumentException caused by unregistering not registered receiver in TalsecMonitoringReceiver

Version 6.7.3

Improvement

  • [iOS] Renewed the signing certificate.

Version 6.7.2

Bug Fix

  • [Android] Reported ANR issues present on some devices were resolved (GH Flutter issue #138).

  • [Android] Reported crashes caused by ConcurrentModificationException and NullPointerException were resolved (GH Flutter issue #140).

  • [Android] Reported crashes caused by the UnsupportedOperationException were resolved.

Version 6.7.1

Bug Fix

  • [Android] False positives for hook detection.

Version 6.7.0

New Feature

  • [Android] Added the auditing of the internal execution for the future check optimization and overall security improvements.

  • [iOS] Dopamine jailbreak detection.

Improvement

  • Updated CURL to 8.8.0 and OpenSSL to 3.0.14 (Github issue #114).

  • [Android] TalsecConfig creation was migrated to a Builder pattern.

  • [Android] Refactored fetching the list of installed applications for root and hook detection.

  • [iOS] Enhanced and accelerated the data collection logic.

Bug Fix

  • [Android] Native crashes (SEGFAULT) in ifpip method.

  • [Android] Fixed collision for command line tools (like ping) invoked without absolute path (Github issue #41).

Version 6.6.0

New Feature

  • Added new threat Threat.systemVPN for VPN detection.

  • Added new callback onSystemVPN in ThreatCallback for handling Threat.systemVPN threat.

  • [Android] Added a new threat detection feature, Threat.devMode, to identify Developer mode.

  • [Android] Added a new callback onDevMode in ThreatCallback for handling Threat.devMode threat.

Improvement

  • Increased minimal Dart SDK version to 2.18.0 and minimal Flutter version to 3.3.0

  • Updated the CA bundle to enhance security for secure connections.

  • [Android] Increased the version of the GMS dependency

  • [iOS] Passcode check is now performed periodically.

Bug Fix

  • Resolved a problem in logging caused by the device’s default system locale

Version 6.5.1

Improvement

  • [Android] New Talsec SDK artifact hosting - better stability and availibility.

Version 6.5.0

New Feature

  • [iOS] Added Privacy Manifest.

  • [iOS] Added codesigning for the SDK, it is signed by:

    • Team ID: ASQC376HCN,

    • Team Name: AHEAD iTec, s.r.o..

Improvement

  • Updated CURL to 8.5.0 and OpenSSL to 1.1.1w.

  • [Android] Improved appIntegrity check and its logging.

  • [iOS] Improved obfuscation of Swift and C strings.

Bug Fix

  • [Android] Fixed issue with disappearing threats when the app is quickly put into the background and then back to the foreground (resolves issue #91).

  • [Android] Fixed a native crash bug during one of the native root checks (detected after NDK upgrade).

Version 6.4.0

Improvement

  • Improved reaction obfuscation.

  • [iOS] Improved obfuscation of the iOS SDK.

  • [iOS] Raised supported Xcode version to 14.3.1 .

Bug Fix

  • [Android] Fixed ProviderException.

  • Fixed typo in namespace which caused incompatibility with AGP 8.0 .

Curious about more in-depth changes for Flutter? Head over to our GitHub Changelog for the complete history of updates!

Github Changelog: https://github.com/talsec/Free-RASP-ReactNative/releases

Latest Version: 5.2.1

Fixed

  • [Android] Fixed the reporting issue in root detection

  • [Android] Fixed the reporting issue in hook detection

  • [Android] Fixed ANR during SDK initialization caused by blocking I/O operations

  • [Android] Fixed background SDK initialization stalling when the shared thread pool is saturated

Version: 5.2.0

Added

  • Added bootloader callback for detecting an unlocked or compromised bootloader (Android only)

  • [Android] Added bootloader detection (unlocked/compromised) with onBootloader() callback

  • [Android] Added option to fetch JitPack dependencies from our own Talsec repository

Changed

  • [Android] Improved KernelSU detection

  • [Android] Improved hook detection

  • [Android] Improved Frida detection

  • [Android] Improved root detection capabilities

  • [iOS] Improved jailbreak detection

Fixed

  • [Android] Fixed native crash caused by std::terminate() race condition

  • [Android] Fixed periodic hook and root check overwriting

  • [Android] Fixed crash inside AppZygotePreload during root detection

  • [Android] Fixed root detection crash in obfuscated release builds

  • [Android] Fixed hardware-backed keystore detection failing with NoSuchMethodError on some Android 12+ devices

Version: 5.1.1

Fixed

  • Fixed missing files in the published npm package

Version: 5.1.0

Added

  • Added Swift Package Manager delivery of TalsecRuntime, enabled by default for Expo projects and available as an opt-in for bare React Native 0.75 or newer projects

  • Added the Expo config plugin option ios.useSpm; set it to false to use the vendored XCFramework fallback

  • [iOS] Added support for postponed checks, therefore, due to slower execution, some subchecks are run after initial startup checks

  • [iOS] Improved hook detection

Fixed

  • Fixed identifier retrieval after React Native context reinitialization (#152)

  • [iOS] Fixed issue with app's color scheme initialization

  • [iOS] Fixed bad memory access in jailbreak check

Version: 5.0.0

Breaking

  • ❗️Breaking: SuspiciousAppInfo.reason (string) renamed to reasons (string[])

  • ❗️Breaking: Value "blacklist" in reasons renamed to "blocklist"

  • ❗️Breaking: Removed MalwareConfig and AndroidConfig.malwareConfig

Added

  • [Android] New API class SuspiciousAppDetectionConfig that can be used to configure malware detection

  • [Android] New API for malware detection configuration in TalsecConfig, see TalsecConfig.Builder#suspiciousAppDetection

Removed

  • Removed TalsecMalwareConfig type and TalsecAndroidConfig.malwareConfig field

Changed

  • [Android] Fine-tuned location spoofing detection

  • [Android] Modified malware incident log structure for better aggregation

Fixed

  • [Android] Fixed VerifyError caused by JaCoCo bytecode instrumentation

  • [Android] Fixed a potential cause of crash in the multi-instance detector

  • [Android] Fixed Java interoperability of ScreenProtector methods

  • [Android] Fixed Kotlin classpath conflicts in SDK dependency resolution (Kotlin 2.0.0)

Version: 4.5.2

Changed

  • Enhanced event dispatchers logic

Fixed

  • [iOS] Fixed new jailbreak checks false positives on iOS 14 and 13

  • [iOS] Fixed false positives with jailbreak on iOS 15 and 16

  • [iOS] Fixed issue with app crashing on screenshot/screen recording

  • [iOS] Fixed retrigger jailbreak issue on iOS 15 and 16

Version: 4.5.1

Fixed

  • Fixed case where event dispatchers on Android were not initialized before calling onResume at the app launch

Version: 4.5.0

Added

  • [Android] Added support for KernelSU to the existing root detection capabilities

  • [Android] Added support for HMA to the existing root detection capabilities

  • [Android] Added new malware detection capabilities

  • [Android] Added onAutomationDetected() callback to ThreatDetected interface — introducing a new capability, detecting whether the device is being automated using tools like Appium

  • [Android] Added value restrictions to externalId — storeExternalId() now returns ExternalIdResult, indicating Success or Error when externalId violates restrictions

  • [iOS] Added time spoofing detection, detecting an inaccurate device clock. It is a new threat timeSpoofing

Changed

  • Updated the internal handling of ExternalIdResult on Android (for storeExternalId() method)

  • [Android] Removed unused library tmlib

  • [Android] Refactoring of signature verification code

  • [Android] Updated compile and target API to 36

  • [Android] Improved root detection capabilities

  • [Android] Detection of wireless ADB added to ADB detections

  • [iOS] Improved jailbreak detection methods

Fixed

  • [Android] Fixed exception handling for the KeyStore getEntry operation

  • [Android] Fixed issue in ScreenProtector concerning the onScreenRecordingDetected invocations

  • [Android] Merged internal shared libraries into a single one, reducing the final APK size

  • [Android] Fixed bug related to key storing in keystore type detection (hw-backed keystore check)

  • [Android] Fixed manifest queries merge

Version: 4.4.0

Added

  • Added cache for freeRASP callbacks when listener is not registered with the app

  • Added API for automation callback into ThreatEventActions (Android only)

Changed

  • Updated compile and target SDK versions to 36 on Android

  • Higher compileSdk from [rootProject, plugin] is now used in build.gradle on Android

Fixed

  • Prevent multiple registration of the freeRASP listeners on the native side

Version: 4.3.2

React Native

Fixed

  • Resolved potential NullPointerException when execution state events are being sent

Version: 4.3.1

React Native

Fixed

Version: 4.3.0

React Native

Added

  • Added killOnBypass to TalsecConfig that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Android only) (Issue 65)

  • Added API for timeSpoofing callback into ThreatEventActions (Android only)

  • Added API for unsecureWifi callback into ThreatEventActions (Android only)

  • Added API for allChecksFinished callback into new RaspExecutionStateEventActions object

  • Added matched permissions to SuspiciousAppInfo object when malware detection reason is suspiciousPermission

Fixed

  • Resolved potential collision in threat identifiers

Android

Added

  • Added killOnBypass method to the TalsecConfig.Builder that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker Issue 65

  • We are introducing a new capability, detecting whether the device time has been tampered with (timeSpoofing)

  • We are introducing a new capability, detecting whether the location is being spoofed on the device (locationSpoofing)

  • We are introducing a new capability, detection of unsecure WiFi (unecureWifi)

  • Removed deprecated functionality Pbkdf2Native and both related native libraries (libpbkdf2_native.so and libpolarssl.so)

  • Added new RaspExecutionState which contains onAllChecksFinished() method, which is triggered after all checks are completed.

  • Added matched permissions to SuspiciousAppInfo object when malware detection reason is suspiciousPermission

  • New option to start Talsec, Talsec.start() takes new parameter TalsecMode that determines the dispatcher thread of initialization and sync checks (uses background thread by default)

  • Capability to check if another app has an option REQUEST_INSTALL_PACKAGES enabled in the system settings to malware detection

Fixed

  • ANR issue caused by registerScreenCaptureCallback() method on the main thread

  • NullPointerException when checking key alias in Keystore on Android 7

  • JaCoCo issue causing MethodTooLargeException during instrumentation

  • DeadApplicationException when calling Settings.Global.getInt or Settings.Secure.getInt on invalid context

  • AndroidKeyStore crashes causing java.util.concurrent.TimeoutException when calling finalize() method on Cipher (GC issues)

  • Fixed issue with late initializers and TalsecMode coroutines scopes

Changed

  • Shortened the value of threat detection interval

  • Refactoring of internal architecture of SDK that newly uses Coroutines to manage threading

  • Update of internal dependencies and security libraries

iOS

Changed

  • Updated internal dependencies

Version: 4.2.4

React Native

Fixed

  • iOS dependencies are now installed via install_modules_dependencies by default

Version: 4.2.3

Android

Fixed

  • Root detection related bugs causing false positives

Changed

  • Deprecated Nexus repository removed (GCP artifact registry is the main supported distribution repository)

Version: 4.2.2

Changed

  • Replaced deprecated getCurrentActivity() call on Android (compatibility with RN 0.81+)

Version: 4.2.1

Fixed

  • Possible conflict with other packages during proguard code minification

Android

Fixed

  • Issue with empty SharedPreferences files

Changed

  • Decreased version of Kotlin to 2.0.0

Version: 4.2.0

New Feature

  • Added interface for multi-instance detection

Improvement

  • [iOS] Added palera1n jailbreak detection

  • [iOS] Improved Dopamine jailbreak detection

  • [Android] Improved emulator detection

  • [Android] Added support for 16 KB pages

Fixed

  • [iOS] Resolved memory-related stability issues

  • [Android] Removed malware report duplicates

Version: 4.1.0

New feature

  • Added interface for screenshot / screen recording blocking on iOS.

Improvements

  • Added interface for external ID storage.

  • Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.

  • [Android] New root detection checks added.

Fixed

  • [iOS] Resolved an issue with the screen recording detection.

  • [iOS] Resolved an issue that prevented Xcode tests from running correctly.

Version 4.0.0

Changed

  • Android SDK requires kotlin_version >= 2.0.0

  • Set Java version to 17

  • [Android] Compile API increased to 35, dependencies updated

  • [Android] Internal library obfuscation reworked

  • [Android] Root detection divided into 2 parts (quick initial checks, and time-demanding asynchronous post checks)

  • [iOS] Improvement of the obfuscation of the SDK

  • [iOS] Deep signing of the OpenSSL binaries

Fixed

  • [Android] ANR issues bug-fixing

Version 3.14.0

New feature

  • Added screenshot - detection of screenshots, refer to the freeRASP integration documentation.

  • Added screenRecording - detection of screen recording, refer to the freeRASP integration documentation.

  • Added blockScreenCapture for FLAG_SECURE control, an active protection against screen capturing.

  • Added isScreenCaptureBlocked - to receive whether the screen capture is blocked

Changed

  • [Android] Raised Android compileSDK level to 35

Improvement

  • [Android] Improved root detection

Fixed

  • Compatibility issues with RN New Architecture

  • [Android] Added proguard rules for malware data serialization in release mode on Android

  • [Android] Proguard rules to address warnings from okhttp dependency

Version 3.13.0

Improvement

  • [Android] Added request integrity information to data collection headers.

  • [Android] Enhanced and accelerated the data collection logic.

Version 3.12.0

Improvement

  • 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.

  • Parsing of malware data is now async.

  • [Android] Malware data is now parsed on background thread to improve responsiveness.

Version 3.11.0

New features

  • [Android] adbEnabled callback, allowing you to detect USB debugging option enabled in the developer settings on the device.

Version 3.10.0

New features and improvements

  • Added configuration fields for malware detection.

  • [Android] Malware detection as a new callback for enhanced app security.

  • [Android] Refactoring Magisk checks in the root detection.

  • [iOS] Enhanced security with Serotonin Jailbreak Detection to identify compromised devices.

Maintenance

  • [iOS] Updated SDK code signing; it will now be signed with:

    • Team ID: PBDDS45LQS

    • Team Name: Lynx SFT s.r.o.

Version 3.9.3

Improvement

  • [iOS] Renewed the signing certificate.

Version 3.9.2

Bug Fix

  • [Android] Reported ANR issues present on some devices were resolved (GH Flutter issue #138).

  • [Android] Reported crashes caused by ConcurrentModificationException and NullPointerException were resolved (GH Flutter issue #140).

  • [Android] Reported crashes caused by the UnsupportedOperationException were resolved.

Version 3.9.1

Bug Fix

  • [Android] False positives for hook detection.

Version 3.9.0

New Feature

  • [Android] Added the auditing of the internal execution for the future check optimization and overall security improvements.

  • [iOS] Dopamine jailbreak detection.

Improvement

  • Improved error messages when validation of the freeRASP configuration fails.

  • Updated CURL to 8.8.0 and OpenSSL to 3.0.14 (Github issue #114).

  • [Android] Changed the way TalsecConfig is created, we introduced a Builder pattern to make the process more streamlined and readable.

  • [Android] Refactored fetching the list of installed applications for root and hook detection.

Bug Fix

  • Fixed incorrect path to types in package.json.

  • [Android] Fixed native crashes (SEGFAULT errors) in ifpip method.

  • [Android] Fixed collision for command line tools (like ping) invoked without absolute path (Github issue #41).

Version 3.8.2

Improvement

  • Updated proguard rules to resolve build issues in RN 0.75.x.

Version 3.8.0

New Feature

  • Added a new threat systemVPN for VPN detection.

  • [Android] Added a new threat devMode for Developer mode detection.

Improvement

  • Updated the CA bundle to enhance security for secure connections.

  • [Android] Updated the GMS dependency to a newer version for improved performance and compatibility.

  • [iOS] Enhanced and accelerated the data collection logic.

  • [iOS] Passcode check is now performed periodically.

Bug Fix

  • Resolved a problem with displaying the Arabic alphabet in logs caused by the device’s default system locale.

  • [Android] Fixed proguard warning in specific versions of RN.

Version 3.7.2

Improvement

  • Updated expo config plugin to fix release build issue in RN 0.73.

Version 3.7.1

Improvement

  • [Android] Updated freeRASP SDK artifact hosting ensuring better stability and availibility.

Bug Fix

  • [Android] Fixed compatibility issues with RN < 0.63.

Version 3.7.0

New Feature

  • Added support for apps built with Expo SDK.

  • [iOS] Added Privacy Manifest.

  • [iOS] Added codesigning for the SDK, it is signed by:

    • Team ID: ASQC376HCN,

    • Team Name: AHEAD iTec, s.r.o..

Improvement

  • Updated CURL to 8.5.0 and OpenSSL to 1.1.1w.

  • [Android] Shortened duration of threat evaluation.

  • [Android] Improved appIntegrity check and its logging.

  • [iOS] Improved obfuscation of Swift and C strings.

Bug Fix

  • [Android] Fixed a native crash bug during one of the native root checks (detected after NDK upgrade).

  • [iOS] Fixed memory leak (freeRASP iOS issue #13).

Curious about more in-depth changes for React Native? Head over to our GitHub Changelog for the complete history of updates!

Github Changelog: https://github.com/talsec/Free-RASP-Cordova/releases

Latest Version: 9.1.1

Fixed

  • [Android] Fixed the reporting issue in root detection

  • [Android] Fixed the reporting issue in hook detection

  • [Android] Fixed ANR during SDK initialization caused by blocking I/O operations

  • [Android] Fixed background SDK initialization stalling when the shared thread pool is saturated

Version: 9.1.0

Added

  • bootloader threat callback, reporting an unlocked or compromised bootloader — Android only

  • [Android] Added bootloader detection (unlocked/compromised) with onBootloader() callback

  • [Android] Added option to fetch JitPack dependencies from our own Talsec repository (https://europe-west3-maven.pkg.dev/talsec-artifact-repository/common)

  • [iOS] Added support for postponed checks, therefore, due to slower execution, some subchecks are run after initial startup checks

Changed

  • [Android] Improved KernelSU detection

  • [Android] Improved hook detection

  • [Android] Improved Frida detection

  • [Android] Improved root detection capabilities

  • [iOS] Improved jailbreak detection

  • [iOS] Improved hook detection

Fixed

  • [Android] Fixed native crash caused by std::terminate() race condition

  • [Android] Fixed periodic hook and root check overwriting

  • [Android] Fixed root detection crash in obfuscated release builds

  • [Android] Fixed hardware-backed keystore detection failing with NoSuchMethodError on some Android 12+ devices

  • [iOS] Fixed issue with app's color scheme initialization

  • [iOS] Fixed bad memory access in jailbreak check

Version: 9.0.0

Breaking

  • ❗️Breaking: SuspiciousAppInfo.reason (string) renamed to reasons (string[])

  • ❗️Breaking: Value "blacklist" in reasons renamed to "blocklist"

  • ❗️Breaking: Removed TalsecMalwareConfig type and TalsecAndroidConfig.malwareConfig field

  • ❗️Breaking: SuspiciousAppDetectionConfig.malwareScanScope and reasonMode are now required

Removed

  • Removed TalsecMalwareConfig type and TalsecAndroidConfig.malwareConfig field

Added

  • [Android] New API class SuspiciousAppDetectionConfig that can be used to configure malware detection

  • [Android] New API for malware detection configuration in TalsecConfig, see TalsecConfig.Builder#suspiciousAppDetection

Changed

  • [Android] Fine-tuned location spoofing detection

  • [Android] Modified malware incident log structure for better aggregation

Fixed

  • [Android] Fixed VerifyError caused by JaCoCo bytecode instrumentation

  • [Android] Fixed a potential cause of crash in the multi-instance detector

  • [Android] Fixed Java interoperability of ScreenProtector methods

  • [Android] Fixed Kotlin classpath conflicts in SDK dependency resolution (Kotlin 2.0.0)

Version: 8.3.1

Fixed

  • Fixed case where event dispatchers on Android were not initialized before calling onResume at the app launch

  • [iOS] Fixed new jailbreak checks false positives on iOS 14 and 13

  • [iOS] Fixed false positives with jailbreak on iOS 15 and 16

  • [iOS] Fixed issue with app crashing on screenshot/screen recording

  • [iOS] Fixed retrigger jailbreak issue on iOS 15 and 16

Version: 8.3.0

Added

  • Added cache for freeRASP callbacks when listener is not registered with the app

  • Added API for automation callback into ThreatEventActions (Android only)

  • [Android] Added new detection check for KernelSU

  • [Android] Added support for KernelSU to the existing root detection capabilities

  • [Android] Added support for HMA to the existing root detection capabilities

  • [Android] Added new malware detection capabilities

  • [Android] Added onAutomationDetected() callback to ThreatDetected interface — introducing a new capability, detecting whether the device is being automated using tools like Appium

  • [Android] Added value restrictions to externalId — storeExternalId() now returns ExternalIdResult, indicating Success or Error when externalId violates restrictions

  • [iOS] Added time spoofing detection, detecting an inaccurate device clock. It is a new threat timeSpoofing

Changed

  • Updated compile and target SDK versions to 36 on Android

  • Higher compileSdk from [rootProject, plugin] is now used in build.gradle on Android

  • [Android] Removed unused library tmlib

  • [Android] Refactoring of signature verification code

  • [Android] Updated compile and target API to 36

  • [Android] Improved root detection capabilities

  • [Android] Detection of wireless ADB added to ADB detections

  • [iOS] Improved jailbreak detection methods

Removed

  • [Android] Removed deprecated monitoring feature

Fixed

  • Prevent multiple registration of the freeRASP listeners on the native side

  • [Android] Fixed memory management issues in the native code

  • [Android] Patched possibility of getInstalledPackages throwing DeadSystemException

  • [Android] Patched possibility of getNetworkCapabilities throwing SecurityException

  • [Android] Fixed well-known issue of Cipher.init throwing KeyStoreConnectException

  • [Android] Fixed exception handling for the KeyStore getEntry operation

  • [Android] Fixed issue in ScreenProtector concerning the onScreenRecordingDetected invocations

  • [Android] Merged internal shared libraries into a single one, reducing the final APK size

  • [Android] Fixed bug related to key storing in keystore type detection (hw-backed keystore check)

  • [Android] Fixed manifest queries merge

Version: 8.2.0

Added

  • Added killOnBypass to TalsecConfig that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Android only) (Issue 65)

  • Added API for timeSpoofing callback into ThreatEventActions (Android only)

  • Added API for unsecureWifi callback into ThreatEventActions (Android only)

  • Added API for allChecksFinished callback into new RaspExecutionStateEventActions object

  • Added matched permissions to SuspiciousAppInfo object when malware detection reason is suspiciousPermission

  • [Android] Added killOnBypass method to the TalsecConfig.Builder that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Issue 65)

  • [Android] We are introducing a new capability, detecting whether the device time has been tampered with (timeSpoofing)

  • [Android] We are introducing a new capability, detecting whether the location is being spoofed on the device (locationSpoofing)

  • [Android] We are introducing a new capability, detection of unsecure WiFi (unecureWifi)

  • [Android] Added new RaspExecutionState which contains onAllChecksFinished() method, which is triggered after all checks are completed

  • [Android] Added matched permissions to SuspiciousAppInfo object when malware detection reason is suspiciousPermission

  • [Android] New option to start Talsec, Talsec.start() takes new parameter TalsecMode that determines the dispatcher thread of initialization and sync checks (uses background thread by default)

  • [Android] Capability to check if another app has an option REQUEST_INSTALL_PACKAGES enabled in the system settings to malware detection

Changed

  • Changed deprecated initialize for pluginInitialize on Android

  • Improved the RASP listener registration

  • [Android] Shortened the value of threat detection interval

  • [Android] Refactoring of internal architecture of SDK that newly uses Coroutines to manage threading

  • [Android] Update of internal dependencies and security libraries

  • [iOS] Updated internal dependencies

Removed

  • [Android] Removed deprecated functionality Pbkdf2Native and both related native libraries (libpbkdf2_native.so and libpolarssl.so)

Fixed

  • Resolved potential collision in threat identifiers

  • [Android] ANR issue caused by registerScreenCaptureCallback() method on the main thread

  • [Android] NullPointerException when checking key alias in Keystore on Android 7

  • [Android] JaCoCo issue causing MethodTooLargeException during instrumentation

  • [Android] DeadApplicationException when calling Settings.Global.getInt or Settings.Secure.getInt on invalid context

  • [Android] AndroidKeyStore crashes causing java.util.concurrent.TimeoutException when calling finalize() method on Cipher (GC issues)

  • [Android] Fixed issue with late initializers and TalsecMode coroutines scopes

Version: 8.1.1

Android

Fixed

  • Issue with empty SharedPreferences files

Changed

  • Decreased version of Kotlin to 2.0.0

Version: 8.1.0

New Feature

  • Added interface for multi-instance detection

Improvement

  • [iOS] Added palera1n jailbreak detection

  • [iOS] Improved Dopamine jailbreak detection

  • [Android] Improved emulator detection

  • [Android] Added support for 16 KB pages

Fixed

  • [iOS] Resolved memory-related stability issues

  • [Android] Removed malware report duplicates

Version: 8.0.0

New feature

  • Added interface for screenshot / screen recording blocking on iOS.

Changed

  • Plugin now requires kotlin version >= 2.0.0.

Improvements

  • Added interface for external ID storage.

  • Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.

  • [Android] New root detection checks added.

Fixed

  • [iOS] Resolved an issue with the screen recording detection.

  • [iOS] Resolved an issue that prevented Xcode tests from running correctly.

Version 7.4.1

Changed

  • [Android] Compile API increased to 35, dependencies updated

  • [Android] Internal library obfuscation reworked

  • [Android] Root detection divided into 2 parts (quick initial checks, and time-demanding asynchronous post checks)

  • [iOS] Improvement of the obfuscation of the SDK

  • [iOS] Deep signing of the OpenSSL binaries

Fixed

  • [Android] ANR issues bug-fixing

Version 7.4.0

New feature

  • Added screenshot - detection of screenshots, refer to the freeRASP integration documentation.

  • Added screenRecording - detection of screen recording, refer to the freeRASP integration documentation.

  • Added blockScreenCapture for FLAG_SECURE control, an active protection against screen capturing.

  • Added isScreenCaptureBlocked - to receive whether the screen capture is blocked

Changed

  • [Android] Set following required SDK versions for Android plugin:

    • minSdkVersion 23

    • targetSdkVersion to 35

    • compileSdkVersion to 35

Improvement

  • [Android] Improved root detection

Fixed

  • [Android] Proguard rules to address warnings from okhttp dependency

Version 7.3.0

Improvement

  • [Android] Added request integrity information to data collection headers.

  • [Android] Enhanced and accelerated the data collection logic.

Version 7.2.0

Improvement

  • 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.

  • Parsing of malware data is now async.

  • [Android] Malware data is now parsed on background thread to improve responsiveness.

Version 7.1.0

New features

  • [Android] adbEnabled callback, allowing you to detect USB debugging option enabled in the developer settings on the device.

Version 7.0.0

New features and improvements

  • Added configuration fields for malware detection.

  • [Android] Malware detection as a new callback for enhanced app security.

  • [Android] Refactoring Magisk checks in the root detection.

  • [iOS] Enhanced security with Serotonin Jailbreak Detection to identify compromised devices.

Maintenance

  • BREAKING CHANGE: New dependency is required to run freeRASP; add following plugin to android/build.gradle:

  • [iOS] Updated SDK code signing; it will now be signed with:

    • Team ID: PBDDS45LQS

    • Team Name: Lynx SFT s.r.o.

Bug Fix

  • [Android] Resolved IllegalArgumentException caused by unregistering not registered receiver in TalsecMonitoringReceiver

Version 6.3.3

Improvement

  • [iOS] Renewed the signing certificate.

Version 6.3.2

Bug Fix

  • [Android] Reported ANR issues present on some devices were resolved (GH Flutter issue #138).

  • [Android] Reported crashes caused by ConcurrentModificationException and NullPointerException were resolved (GH Flutter issue #140).

  • [Android] Reported crashes caused by the UnsupportedOperationException were resolved.

Version 6.3.1

Bug Fix

  • [Android] False positives for hook detection.

Version 6.3.0

New Feature

  • [Android] Added the auditing of the internal execution for the future check optimization and overall security improvements.

  • [iOS] Dopamine jailbreak detection.

Improvement

  • Improved error messages when validation of the freeRASP configuration fails.

  • Updated CURL to 8.8.0 and OpenSSL to 3.0.14 (Github issue #114).

  • [Android] Changed the way TalsecConfig is created, we introduced a Builder pattern to make the process more streamlined and readable.

  • [Android] Refactored fetching the list of installed applications for root and hook detection.

  • [iOS] Enhanced and accelerated the data collection logic.

Bug Fix

  • [Android] Fixed native crashes (SEGFAULT errors) in ifpip method.

  • [Android] Fixed collision for command line tools (like ping) invoked without absolute path (Github issue #41).

Version 6.2.0

New Feature

  • Added a new threat systemVPN for VPN detection.

  • [Android] Added a new threat devMode for Developer mode detection.

Improvement

  • Updated the CA bundle to enhance security for secure connections.

  • [Android] Updated the GMS dependency to a newer version for improved performance and compatibility.

  • [iOS] Passcode check is now performed periodically.

Bug Fix

  • Resolved a problem with displaying the Arabic alphabet in logs caused by the device’s default system locale.

Version 6.1.3

Bug Fix

  • Fixed BAD_ACCESS error occurring in specific versions of cordova-ios plugin (#28).

Version 6.1.2

Bug Fix

  • [Android] Removed the talsec namespace that caused change of namespaces for whole app.

  • [iOS] Fixed issue causing app crash with lower versions of cordova-ios plugin.

Version 6.1.1

Improvement

  • [Android] Updated freeRASP SDK artifact hosting ensuring better stability and availibility.

Curious about more in-depth changes for Cordova? Head over to our GitHub Changelog for the complete history of updates!

Github Changelog: https://github.com/talsec/Free-RASP-Capacitor/releases

Latest Version: 3.2.1

Fixed

  • [Android] Fixed the reporting issue in root detection

  • [Android] Fixed the reporting issue in hook detection

  • [Android] Fixed ANR during SDK initialization caused by blocking I/O operations

  • [Android] Fixed background SDK initialization stalling when the shared thread pool is saturated

Version: 3.2.0

Added

  • bootloader threat callback, reporting an unlocked or compromised bootloader — Android only

  • [Android] Added bootloader detection (unlocked/compromised) with onBootloader() callback

  • [Android] Added option to fetch JitPack dependencies from our own Talsec repository (https://europe-west3-maven.pkg.dev/talsec-artifact-repository/common)

Changed

  • [Android] Improved KernelSU detection

  • [Android] Improved hook detection

  • [Android] Improved Frida detection

  • [Android] Improved root detection capabilities

  • [iOS] Improved jailbreak detection

Fixed

  • [Android] Fixed native crash caused by std::terminate() race condition

  • [Android] Fixed periodic hook and root check overwriting

  • [Android] Fixed root detection crash in obfuscated release builds

  • [Android] Fixed hardware-backed keystore detection failing with NoSuchMethodError on some Android 12+ devices

Version: 3.1.0

Added

  • Swift Package Manager support for iOS. CocoaPods remains supported as a fallback

  • [iOS] Added support for postponed checks, therefore, due to slower execution, some subchecks are run after initial startup checks

  • [iOS] Improved hook detection

Fixed

  • [iOS] Fixed issue with app's color scheme initialization

  • [iOS] Fixed bad memory access in jailbreak check

Version: 3.0.0

Breaking

  • ❗️Breaking: SuspiciousAppInfo.reason (string) renamed to reasons (string[])

  • ❗️Breaking: Value "blacklist" in reasons renamed to "blocklist"

  • ❗️Breaking: Removed TalsecMalwareConfig and TalsecAndroidConfig.malwareConfig

  • ❗️Breaking: SuspiciousAppDetectionConfig.malwareScanScope and reasonMode are now required

Added

  • Added SuspiciousAppDetectionConfig for malware detection configuration

  • [Android] New API class SuspiciousAppDetectionConfig that can be used to configure malware detection

  • [Android] New API for malware detection configuration in TalsecConfig, see TalsecConfig.Builder#suspiciousAppDetection

Removed

  • Removed TalsecMalwareConfig type and TalsecAndroidConfig.malwareConfig field

Changed

  • [Android] Fine-tuned location spoofing detection

  • [Android] Modified malware incident log structure for better aggregation

Fixed

  • [Android] Fixed VerifyError caused by JaCoCo bytecode instrumentation

  • [Android] Fixed a potential cause of crash in the multi-instance detector

  • [Android] Fixed Java interoperability of ScreenProtector methods

  • [Android] Fixed Kotlin classpath conflicts in SDK dependency resolution (Kotlin 2.0.0)

Version: 2.5.1

Fixed

  • Fixed case where event dispatchers on Android were not initialized before calling onResume at the app launch

  • [iOS] Fixed new jailbreak checks false positives on iOS 14 and 13

  • [iOS] Fixed false positives with jailbreak on iOS 15 and 16

  • [iOS] Fixed issue with app crashing on screenshot/screen recording

  • [iOS] Fixed retrigger jailbreak issue on iOS 15 and 16

Version: 2.5.0

Added

  • [Android] Added support for KernelSU to the existing root detection capabilities

  • [Android] Added support for HMA to the existing root detection capabilities

  • [Android] Added new malware detection capabilities

  • [Android] Added onAutomationDetected() callback to ThreatDetected interface — introducing a new capability, detecting whether the device is being automated using tools like Appium

  • [Android] Added value restrictions to externalId — storeExternalId() now returns ExternalIdResult, indicating Success or Error when externalId violates restrictions

  • [iOS] Added time spoofing detection, detecting an inaccurate device clock. It is a new threat timeSpoofing

Changed

  • Refactor the Android plugin to separate the logic for managing listener states

  • [Android] Removed unused library tmlib

  • [Android] Refactoring of signature verification code

  • [Android] Updated compile and target API to 36

  • [Android] Improved root detection capabilities

  • [Android] Detection of wireless ADB added to ADB detections

  • [iOS] Improved jailbreak detection methods

Fixed

  • [Android] Fixed exception handling for the KeyStore getEntry operation

  • [Android] Fixed issue in ScreenProtector concerning the onScreenRecordingDetected invocations

  • [Android] Merged internal shared libraries into a single one, reducing the final APK size

  • [Android] Fixed bug related to key storing in keystore type detection (hw-backed keystore check)

  • [Android] Fixed manifest queries merge

Version: 2.4.1

Fixed

  • Resolved potential NullPointerException when execution state events are being sent

Version: 2.4.0

Added

  • Added cache for freeRASP callbacks when listener is not registered with the app

  • Added API for automation callback into ThreatEventActions (Android only)

Changed

  • Updated compile and target SDK versions to 36 on Android

Fixed

  • Prevent multiple registration of the freeRASP listeners on the native side

Version: 2.3.0

New Feature

  • [Android] Added killOnBypass to TalsecConfig that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Android only) (Issue 65)

  • Added API for timeSpoofing callback into ThreatEventActions (Android only)

  • Added API for unsecureWifi callback into ThreatEventActions (Android only)

  • Added API for allChecksFinished callback into new RaspExecutionStateEventActions object

  • [Android] Added matched permissions to SuspiciousAppInfo object when malware detection reason is suspiciousPermission

Improvement

  • [Android] Added killOnBypass method to the TalsecConfig.Builder that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker Issue 65

  • We are introducing a new capability, detecting whether the device time has been tampered with (timeSpoofing)

  • We are introducing a new capability, detecting whether the location is being spoofed on the device (locationSpoofing)

  • We are introducing a new capability, detection of unsecure WiFi (unecureWifi)

  • Removed deprecated functionality Pbkdf2Native and both related native libraries (libpbkdf2_native.so and libpolarssl.so)

  • Added new RaspExecutionState which contains onAllChecksFinished() method, which is triggered after all checks are completed.

  • [Android] Added matched permissions to SuspiciousAppInfo object when malware detection reason is suspiciousPermission

  • [Android] New option to start Talsec, Talsec.start() takes new parameter TalsecMode that determines the dispatcher thread of initialization and sync checks (uses background thread by default)

  • [Android] Capability to check if another app has an option REQUEST_INSTALL_PACKAGES enabled in the system settings to malware detection

Changed

  • [Android] Deprecated Nexus repository removed (GCP artifact registry is the main supported distribution repository)

  • [Android] Shortened the value of threat detection interval

  • [Android] Refactoring of internal architecture of SDK that newly uses Coroutines to manage threading

  • [Android] Update of internal dependencies and security libraries

  • [iOS] Updated internal dependencies

Fixed

  • [Android] Resolved potential collision in threat identifiers

  • [Android] Root detection related bugs causing false positives

  • [Android] ANR issue caused by registerScreenCaptureCallback() method on the main thread

  • [Android] NullPointerException when checking key alias in Keystore on Android 7

  • [Android] JaCoCo issue causing MethodTooLargeException during instrumentation

  • [Android] DeadApplicationException when calling Settings.Global.getInt or Settings.Secure.getInt on invalid context

  • [Android] AndroidKeyStore crashes causing java.util.concurrent.TimeoutException when calling finalize() method on Cipher (GC issues)

  • [Android] Fixed issue with late initializers and TalsecMode coroutines scopes

Version: 2.2.2

New Feature

  • [Android] Added killOnBypass to TalsecConfig that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Android only) (Issue 65)

  • Added API for timeSpoofing callback into ThreatEventActions (Android only)

  • Added API for unsecureWifi callback into ThreatEventActions (Android only)

  • Added API for allChecksFinished callback into new RaspExecutionStateEventActions object

  • [Android] Added matched permissions to SuspiciousAppInfo object when malware detection reason is suspiciousPermission

Improvement

  • [Android] Added killOnBypass method to the TalsecConfig.Builder that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker Issue 65

  • We are introducing a new capability, detecting whether the device time has been tampered with (timeSpoofing)

  • We are introducing a new capability, detecting whether the location is being spoofed on the device (locationSpoofing)

  • We are introducing a new capability, detection of unsecure WiFi (unecureWifi)

  • Removed deprecated functionality Pbkdf2Native and both related native libraries (libpbkdf2_native.so and libpolarssl.so)

  • Added new RaspExecutionState which contains onAllChecksFinished() method, which is triggered after all checks are completed.

  • [Android] Added matched permissions to SuspiciousAppInfo object when malware detection reason is suspiciousPermission

  • [Android] New option to start Talsec, Talsec.start() takes new parameter TalsecMode that determines the dispatcher thread of initialization and sync checks (uses background thread by default)

  • [Android] Capability to check if another app has an option REQUEST_INSTALL_PACKAGES enabled in the system settings to malware detection

Changed

  • [Android] Deprecated Nexus repository removed (GCP artifact registry is the main supported distribution repository)

  • [Android] Shortened the value of threat detection interval

  • [Android] Refactoring of internal architecture of SDK that newly uses Coroutines to manage threading

  • [Android] Update of internal dependencies and security libraries

  • [iOS] Updated internal dependencies

Fixed

  • [Android] Resolved potential collision in threat identifiers

  • [Android] Root detection related bugs causing false positives

  • [Android] ANR issue caused by registerScreenCaptureCallback() method on the main thread

  • [Android] NullPointerException when checking key alias in Keystore on Android 7

  • [Android] JaCoCo issue causing MethodTooLargeException during instrumentation

  • [Android] DeadApplicationException when calling Settings.Global.getInt or Settings.Secure.getInt on invalid context

  • [Android] AndroidKeyStore crashes causing java.util.concurrent.TimeoutException when calling finalize() method on Cipher (GC issues)

  • [Android] Fixed issue with late initializers and TalsecMode coroutines scopes

Version: 2.2.1

Changed

  • [Android] Issue with empty SharedPreferences files

Fixed

  • [Android] Decreased version of Kotlin to 2.0.0

Version: 2.2.0

New Feature

  • Added interface for multi-instance detection

Improvement

  • [iOS] Added palera1n jailbreak detection

  • [iOS] Improved Dopamine jailbreak detection

  • [Android] Improved emulator detection

  • [Android] Added support for 16 KB pages

Fixed

  • [iOS] Resolved memory-related stability issues

  • [Android] Removed malware report duplicates

Version: 2.1.0

New feature

  • Added interface for screenshot / screen recording blocking on iOS.

Improvements

  • Added interface for external ID storage.

  • Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.

  • [Android] New root detection checks added.

Fixed

  • [iOS] Resolved an issue with the screen recording detection.

  • [iOS] Resolved an issue that prevented Xcode tests from running correctly.

Version 2.0.0

Changed

  • Android SDK requires kotlin_version >= 2.0.0

  • [Android] Compile API increased to 35, dependencies updated

  • [Android] Internal library obfuscation reworked

  • [Android] Root detection divided into 2 parts (quick initial checks, and time-demanding asynchronous post checks)

  • [iOS] Improvement of the obfuscation of the SDK

  • [iOS] Deep signing of the OpenSSL binaries

Fixed

  • [Android] ANR issues bug-fixing

Version 1.10.0

New feature

  • Added screenshot - detection of screenshots, refer to the freeRASP integration documentation.

  • Added screenRecording - detection of screen recording, refer to the freeRASP integration documentation.

  • Added blockScreenCapture for FLAG_SECURE control, an active protection against screen capturing.

  • Added isScreenCaptureBlocked - to receive whether the screen capture is blocked

Changed

  • [Android] Raised Android compileSDK level to 35

  • [Android] Set minifyEnabled in plugin to true implicitly

Improvement

  • [Android] Improved root detection

Fixed

  • [Android] Proguard rules to address warnings from okhttp dependency

Version 1.9.0

Improvement

  • [Android] Added request integrity information to data collection headers.

  • [Android] Enhanced and accelerated the data collection logic.

Version 1.8.0

Improvement

  • 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.

  • Parsing of malware data is now async.

  • [Android] Malware data is now parsed on background thread to improve responsiveness.

Version 1.7.0

New features

  • [Android] adbEnabled callback, allowing you to detect USB debugging option enabled in the developer settings on the device.

Version 1.6.0

New features

  • Added configuration fields for malware detection.

  • [Android] Malware detection as a new callback for enhanced app security.

  • [Android] Refactoring Magisk checks in the root detection.

  • [iOS] Enhanced security with Serotonin Jailbreak Detection to identify compromised devices.

Maintenance

  • [iOS] Updated SDK code signing; it will now be signed with:

    • Team ID: PBDDS45LQS

    • Team Name: Lynx SFT s.r.o.

Bug Fix

Version 1.5.3

Improvement

  • [iOS] Renewed the signing certificate.

Version 1.5.2

Bug Fix

  • [Android] Reported ANR issues present on some devices were resolved (GH Flutter issue #138).

  • [Android] Reported crashes caused by ConcurrentModificationException and NullPointerException were resolved (GH Flutter issue #140).

  • [Android] Reported crashes caused by the UnsupportedOperationException were resolved.

Version 1.5.1

Bug Fix

  • [Android] False positives for hook detection.

Version 1.5.0

New Feature

  • [Android] Added the auditing of the internal execution for the future check optimization and overall security improvements.

  • [iOS] Dopamine jailbreak detection.

Improvement

  • Improved error messages when validation of the freeRASP configuration fails.

  • Updated CURL to 8.8.0 and OpenSSL to 3.0.14 (Github issue #114).

  • [Android] Changed the way TalsecConfig is created, we introduced a Builder pattern to make the process more streamlined and readable.

  • [Android] Refactored fetching the list of installed applications for root and hook detection.

  • [iOS] Enhanced and accelerated the data collection logic.

Bug Fix

  • [Android] Fixed native crashes (SEGFAULT errors) in ifpip method.

  • [Android] Fixed collision for command line tools (like ping) invoked without absolute path (Github issue #41).

Version 1.4.0

New Feature

  • Added a new threat systemVPN for VPN detection.

  • [Android] Added a new threat devMode for Developer mode detection.

Improvement

  • Updated the CA bundle to enhance security for secure connections.

  • [Android] Updated the GMS dependency to a newer version for improved performance and compatibility.

  • [iOS] Passcode check is now performed periodically.

Bug Fix

  • Resolved a problem with displaying the Arabic alphabet in logs caused by the device’s default system locale.

Version 1.3.1

Improvement

  • [Android] Updated freeRASP SDK artifact hosting ensuring better stability and availibility.

Version 1.3.0

New Feature

  • [iOS] Added Privacy Manifest.

  • [iOS] Added codesigning for the SDK, it is signed by:

    • Team ID: ASQC376HCN,

    • Team Name: AHEAD iTec, s.r.o..

Improvement

  • Updated CURL to 8.5.0 and OpenSSL to 1.1.1w.

  • [Android] Shortened duration of threat evaluation.

  • [Android] Improved appIntegrity check and its logging.

  • [iOS] Improved obfuscation of Swift and C strings.

Bug Fix

  • [Android] Fixed a native crash bug during one of the native root checks (detected after NDK upgrade).

  • [iOS] Fixed memory leak (freeRASP iOS issue #13)

Version 1.2.1

  • [Android] Fixed bug that prevented firing callbacks in specific situations.

  • [iOS] Fixed bug that caused app being killed in specific situations (#42).

Curious about more in-depth changes for Capacitor? Head over to our GitHub Changelog for the complete history of updates!

Last updated