All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Android SDK version: 18.0.4
- iOS SDK version: 6.14.4
- Enhanced event dispatchers logic
- Fixed new jailbreak checks false positives on iOS 14 and 13.
- Fixed false positives with jailbreak on iOS 15 and 16.
- Fixed issue with app crashing on screenshot/screen recording.
- Fixed retrigger jailbreak issue on iOS 15 and 16.
- Android SDK version: 18.0.4
- iOS SDK version: 6.14.1
- Fixed case where event dispatchers on Android were not initialized before calling onResume at the app launch
- Android SDK version: 18.0.4
- iOS SDK version: 6.14.1
- Updated the internal handling of ExternalIdResult on Android (for
storeExternalId()method)
- Added support for
KernelSUto the existing root detection capabilities - Added support for
HMAto the existing root detection capabilities - Added new malware detection capabilities
- Added
onAutomationDetected()callback toThreatDetectedinterface- We are introducing a new capability, detecting whether the device is being automated using tools like Appium
- Added value restrictions to
externalId- Method
storeExternalId()now returnsExternalIdResult, which indicatesSuccessorErrorwhenexternalIdviolates restrictions
- Method
- Fixed exception handling for the KeyStore
getEntryoperation - Fixed issue in
ScreenProtectorconcerning theonScreenRecordingDetectedinvocations - Merged internal shared libraries into a single one, reducing the final APK size
- Fixed bug related to key storing in keystore type detection (hw-backed keystore check)
- Fixed manifest queries merge
- Removed unused library
tmlib - Refactoring of signature verification code
- Updated compile and target API to 36
- Improved root detection capabilities
- Detection of wireless ADB added to ADB detections
- Added time spoofing detection, detecting an inaccurate device clock. It is a new threat
timeSpoofing.
- Improved jailbreak detection methods.
- Android SDK version: 18.0.1
- iOS SDK version: 6.13.0
- Added cache for freeRASP callbacks when listener is not registered with the app
- Added API for
automationcallback intoThreatEventActions(Android only)
- Prevent multiple registration of the freeRASP listeners on the native side
- Updated compile and target SDK versions to 36 on Android
- Higher compileSdk from [rootProject, plugin] is now used in build.gradle on Android
- Added support for
KernelSUto the existing root detection capabilities - Added support for
HMAto the existing root detection capabilities - Added new malware detection capabilities
- Added
onAutomationDetected()callback toThreatDetectedinterface- We are introducing a new capability, detecting whether the device is being automated using tools like Appium
- Added value restrictions to
externalId- Method
storeExternalId()now returnsExternalIdResult, which indicatesSuccessorErrorwhenexternalIdviolates restrictions
- Method
- Fixed exception handling for the KeyStore
getEntryoperation - Fixed issue in
ScreenProtectorconcerning theonScreenRecordingDetectedinvocations - Merged internal shared libraries into a single one, reducing the final APK size
- Fixed bug related to key storing in keystore type detection (hw-backed keystore check)
- Fixed manifest queries merge
- Removed unused library
tmlib - Refactoring of signature verification code
- Updated compile and target API to 36
- Improved root detection capabilities
- Detection of wireless ADB added to ADB detections
- Android SDK version: 17.0.1
- iOS SDK version: 6.13.0
- Resolved potential NullPointerException when execution state events are being sent
- Android SDK version: 17.0.1
- iOS SDK version: 6.13.0
- Resolved duplicate classes error on iOS (issue #128)
- Android SDK version: 17.0.1
- iOS SDK version: 6.13.0
- Added
killOnBypasstoTalsecConfigthat configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Android only) (Issue 65) - Added API for
timeSpoofingcallback intoThreatEventActions(Android only) - Added API for
unsecureWificallback intoThreatEventActions(Android only) - Added API for
allChecksFinishedcallback into newRaspExecutionStateEventActionsobject - Added matched permissions to
SuspiciousAppInfoobject when malware detection reason issuspiciousPermission
- Resolved potential collision in threat identifiers
- Added
killOnBypassmethod to theTalsecConfig.Builderthat 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
Pbkdf2Nativeand both related native libraries (libpbkdf2_native.soandlibpolarssl.so) - Added new
RaspExecutionStatewhich containsonAllChecksFinished()method, which is triggered after all checks are completed. - Added matched permissions to
SuspiciousAppInfoobject when malware detection reason issuspiciousPermission - New option to start Talsec,
Talsec.start()takes new parameterTalsecModethat 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_PACKAGESenabled in the system settings to malware detection
- ANR issue caused by
registerScreenCaptureCallback()method on the main thread NullPointerExceptionwhen checking key alias in Keystore on Android 7JaCoCoissue causingMethodTooLargeExceptionduring instrumentationDeadApplicationExceptionwhen callingSettings.Global.getIntorSettings.Secure.getInton invalid contextAndroidKeyStorecrashes causingjava.util.concurrent.TimeoutExceptionwhen callingfinalize()method onCipher(GC issues)- Fixed issue with late initializers and
TalsecModecoroutines scopes
- 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
- Updated internal dependencies
- iOS SDK version: 6.12.1
- Android SDK version: 16.0.4
- iOS dependencies are now installed via
install_modules_dependenciesby default
- iOS SDK version: 6.12.1
- Android SDK version: 16.0.4
- Root detection related bugs causing false positives
- Deprecated Nexus repository removed (GCP artifact registry is the main supported distribution repository)
- iOS SDK version: 6.12.1
- Android SDK version: 16.0.1
- Replaced deprecated
getCurrentActivity()call on Android (compatibility with RN 0.81+)
- iOS SDK version: 6.12.1
- Android SDK version: 16.0.1
- Possible conflict with other packages during proguard code minification
- Issue with empty
SharedPreferencesfiles
- Decreased version of
Kotlinto2.0.0
- iOS SDK version: 6.12.1
- Android SDK version: 16.0.1
- Added support for 16 KB memory page sizes
- Added
multiInstancecallback- Detecting whether the application is installed/running in various multi-instancing environments (e.g. Parallel Space)
- The ADB service running as a root is a signal for root detection
- Improved emulator detection
- Internal security improvements
- Removed malware report duplicates
- Added palera1n jailbreak detection
- Improved Dopamine jailbreak detection
- Resolved memory-related stability issues.
- iOS SDK version: 6.11.0
- Android SDK version: 15.1.0
- Added interface for screenshot / screen recording blocking on iOS
- Added interface for external ID storage
- Added externalId to put an integrator-specified custom identifier into the logs.
- Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.
- New root detection checks added
- Added externalId to put an integrator-specified custom identifier into the logs.
- Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.
- Screen capture protection obscuring app content in screenshots and screen recordings preventing unauthorized content capture. Refer to the freeRASP integration documentation.
- Resolved an issue with the screen recording detection.
- Resolved an issue that prevented Xcode tests from running correctly.
- iOS SDK version: 6.9.0
- Android SDK version: 15.0.0
- Android SDK requires
kotlinVersion>=2.0.0 - Set Java verison to 17
- 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)
- ANR issues bug-fixing
- Improvement of the obfuscation of the SDK.
- Deep signing of the OpenSSL binaries.
- iOS SDK version: 6.8.0
- Android SDK version: 14.0.1
- Take Android targetSdkVersion, compileSdkVersion from plugin only
- iOS SDK version: 6.8.0
- Android SDK version: 14.0.1
blockScreenCapturemethod to block/unblock screen captureisScreenCaptureBlockedmethod to get the current screen capture blocking status- New callbacks:
screenshot: Detects when a screenshot is takenscreenRecording: Detects when screen recording is active
- Raised Android compileSDK level to 35
- Compatibility issues with RN New Architecture
- Added proguard rules for malware data serialization in release mode on Android
- Passive and active screenshot/screen recording protection
- Improved root detection
- Proguard rules to address warnings from okhttp dependency
- Passive Screenshot/Screen Recording detection
- iOS SDK version: 6.6.3
- Android SDK version: 13.2.0
- Added request integrity information to data collection headers.
- Enhanced and accelerated the data collection logic.
- iOS SDK version: 6.6.3
- Android SDK version: 13.0.0
- 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
getAppIconmethod - Parsing of malware data is now async
- Malware data is now parsed on background thread to improve responsiveness
- Added
adbEnabledcallback, which allows you to detect USB debugging option enabled in the developer settings on the device
- ADB detection feature
- Android SDK version: 12.0.0
- iOS SDK version: 6.6.3
- Added configuration fields for malware detection
- New feature: malware detection as a new callback for enhanced app security
- Refactoring Magisk checks in the root detection
- Enhanced security with Serotonin Jailbreak Detection to identify compromised devices.
- Updated SDK code signing; it will now be signed with:
- Team ID: PBDDS45LQS
- Team Name: Lynx SFT s.r.o.
- Android SDK version: 11.1.3
- iOS SDK version: 6.6.1
- Renewed the signing certificate
-
Android SDK version: 11.1.3
-
iOS SDK version: 6.6.0
-
Android SDK version: 11.1.3
-
iOS SDK version: 6.6.0
- Reported ANR issues present on some devices were resolved (GH Flutter issue #138)
- Reported crashes caused by ConcurrentModificationException and NullPointerException were resolved (GH Flutter issue #140)
- Reported crashes caused by the UnsupportedOperationException were resolved
- Android SDK version: 11.1.1
- iOS SDK version: 6.6.0
- False positives for hook detection
- Android SDK version: 11.1.0
- iOS SDK version: 6.6.0
- Fixed incorrect path to types in package.json
- Improved error messages when validation of the freeRASP configuration fails
- Added the auditing of the internal execution for the future check optimization and overall security improvements.
- Fixed native crashes (SEGFAULT errors) in
ifpipmethod - Fixed collision for command line tools (like ping) invoked without absolute path
- ❗️Breaking: Changed the way TalsecConfig is created, we introduced a Builder pattern to make the process more streamlined and readable
- Updated OpenSSL to version 3.0.14
- Updated CURL to version 8.8.0
- Refactored fetching the list of installed applications for root and hook detection.
- Dopamine jailbreak detection.
- Updated OpenSSL to version 3.0.14
- Updated CURL to version 8.8.0
- Updated proguard rules to resolve build issues in RN 0.75.x
- CHANGELOG now adheres to the Keep a Changelog format.
- ⚡ Added new threat
systemVPNfor VPN detection - 📄 Documentation updates
- ⚡ Added new threat
devModefor Developer mode detection - ⚡ Fixed proguard warning in specific versions of RN
- ⚡ Fixed issue with Arabic alphabet in logs caused by the device’s default system locale
- ✔️ Increased the version of the GMS dependency
- ✔️ Updated CA bundle
- ⚡ Enhanced and accelerated the data collection logic
- ⚡ Fixed issue with Arabic alphabet in logs caused by the device’s default system locale
- ⚡ Passcode check is now periodical
- ✔️ Updated CA bundle
- ⚡ Update expo config plugin to fix release build issue in RN 0.73
- ⚡ Updated freeRASP SDK artifact hosting ensuring better stability and availibility
- ⚡ Fixed compatibility issues with RN < 0.63
- ⚡ Added support for apps built with Expo SDK
- 📄 Documentation updates
- ⚡ Shortened duration of threat evaluation
- ⚡ Fixed a native crash bug during one of the native root checks (detected after NDK upgrade)
- ⚡ Improved appIntegrity check and its logging
- ⚡ Updated
CURLto8.5.0andOpenSSLto1.1.1w
- ❗ Added Privacy Manifest
- ❗ Added codesigning for the SDK, it is signed by:
- Team ID:
ASQC376HCN - Team Name:
AHEAD iTec, s.r.o.
- Team ID:
- ⚡ Improved obfuscation of Swift and C strings
- ⚡ Fixed memory leak (freeRASP iOS issue #13)
- ⚡ Updated
CURLto8.5.0andOpenSSLto1.1.1w
- 📄 Documentation updates
- ⚡ Fixed bug that caused app being killed in specific situations (#42)
- ⚡ Improved reaction obfuscation
- 📄 Documentation updates
- ⚡ Fixed ProviderException which could be occassionally triggered
- ⚡ Fixed bug causing incompatibility with some versions of React Native (#38)
- ❗ Raised supported Xcode version to 14.3.1
- ⚡ Improved SDK obfuscation
⚠️ Updated thetalsecStart()method to returnPromise<string>. If freeRASP starts successfuly, the method will returnfreeRASP startedstring. There are not any changes of the interface if you are using the provideduseFreeRasphook.- ⚡ Improved the message passing between native iOS/Android and React Native sides
- ✔️ Restricted message passing to valid callbacks only. If an invalid callback is received, the SDK will kill the app
- 📄 Documentation updates and improvements
- ✔️ updated CA bundle for logging pinning
- ✔️ added error logging of network issues within the logging process
- ✔️ added retry politics for logging
- ⚡ fixed issue with DeadObjectException on Android 5 and 6 caused by excessive PackageManager.queryIntentActivities() usage
- ⚡ improved root detection capabilities
- ✔️ Removed PolarSSL native library
- ✔️ Fixed issue with denied USE_BIOMETRICS permission
- ✔️ Added support for AGP 8.0
- ⚡ Fixed issue with incorrect Keystore type detection on Android 11 and above (talsec/Free-RASP-Flutter#77)
- ⚡ Reduced timeout period for logging from 20 sec to 5 sec
- ⚡ Logging is now async in all calls
- ❗ BREAKING CHANGE: Raised minimum supported Android version to 6.0 (API level 23)
- ✔️ Removed deprecated BouncyCastle dependency that could cause errors in the build phase
- ✔️ Fixed issue that could cause NullPointerException
- 🆕 Added new
obfuscationIssuescheck, which is triggered when freeRASP doesn't detect any obfuscation of the source code
⚠️ passcodeChangecheck has been deprecated- 🛠️ Refactored the code base
- ✔️ Fixed issue with metadata in iOS framework
- 📄 Documentation updates and improvements
- 📄 Documentation updates and improvements
- 📄 Documentation updates and improvements
Most of the changes relates to accomodating a new way of choosing between the dev and release version of the SDK. There are also some breaking changes in the API, such as renaming parameters and changing types of callbacks. Android has also removed the HMS dependencies and improved the root detection capabilities.
- ❗ BREAKING API CHANGE: Renamed 'device binding' to deviceBinding
- ❗ This allows us to remove apostrophes from other callbacks, too. E.g. 'privilegedAccess' to privilegedAccess
- ❗ Added isProd boolean parameter, which now differentiates between the release (true) and dev (false) version of the SDK. By default set to true
- ❗ androidConfig and iosConfig are from now on optionals, you can omit a platform if you are not developing for it
- ❗ Removed the HMS dependencies
- ❗ Only one version of the SDK is used from now on, instead of two separate for dev and release
- ❗ The app's build.gradle does not have to be modified now
- ⚡ Improved root detection accuracy by moving the 'ro.debuggable' property state to an ignored group
- ⚡ Enhanced root detection capabilities by moving the selinux properties check to device state
- ⚡ Fine-tuning root evaluation strategy
- ❗ Removed one of the xcframeworks
- ❗ Removed the dependency on the symlinks choosing the proper version (release/dev)
- ❗️ Removed pre-built script for changing the Debug and Release versions
- 📄 Documentation updates and improvements
- ⚡ Updated demo app for new implementation
We are proud to share with you the first batch of improvements of freeRASP!
Android devices now support device state listeners. What's more, we unified remaining Android and iOS interfaces for more convenient developer's experience.
- 🆕 Android now has support for device state callbacks:
- 📲
Secure Hardware Not Available: fires when hardware-backed KeyStore is not available - 📲
Passcode: fires when freeRASP detects that device is not secured with any type of lock
- 📲
- ❗ BREAKING API CHANGE: Renamed
Missing Secure EnclavetoSecure Hardware Not Availableto match the newly added Android callback. The functionality remains unchanged.
- 📄 Documentation updates and improvements
- Initial release of freeRASP.