cordova-plugin-rootguard
Version:
Cordova plugin for detecting root access and Frida-based root bypass attempts.
163 lines (125 loc) • 5.46 kB
Markdown
# Cordova Plugin - RootGuard : cordova-plugin-rootguard

[](https://raw.githubusercontent.com/Binuka97/cordova-plugin-rootguard/master/LICENSE)
[](https://shields.io)
[](https://shields.io)
<p align="center">
<img src="https://github.com/user-attachments/assets/c26f452a-1430-468d-a653-98ffa464898e" />
</p>
**`cordova-plugin-rootguard`** is a security plugin for Cordova that detects:
- ✅ Root access (Magisk, SuperSU, `su` binaries, system mount modifications) – **Android**
- ✅ Frida instrumentation (open ports, memory maps, processes) – **Android**
- ✅ Jailbreak status (Cydia, Sileo, rootless indicators) – **iOS**
- ✅ Frida runtime detection (dylib injection) – **iOS**
## Changelog
### 02-10-2025
- Fix(android): prevent plugin timeout on Magisk/RootAVD by adding process timeouts and safe cleanup
- Moved root and Frida detection checks to Cordova thread pool
- Added timeouts (500ms) to all shell command executions (`su`, `mount`, `pidof`, `getprop`)
- Ensured processes are destroyed and streams closed in finally blocks
- Fail-safe: assume compromised if detection errors or times out
- Fixes issue where plugin call timed out on Magisk-enabled emulators (RootAVD)
### 17-04-2025
- Added iOS support
## Features
### Android
- Detects common root paths and `su` binaries
- Executes shell checks (`which su`, `mount`)
- Detects Frida server via:
- Open ports (default: 27042, 27043)
- Injected memory maps
- Frida running processes
- System properties
### iOS
- Detects Cydia, Sileo, and rootless jailbreak indicators
- Checks common jailbreak file paths and URL schemes
- Detects Frida dynamic library injections using `dyld` inspection
---
## 🚀 Installation
### **Option 1: Install from GitHub**
```sh
cordova plugin add cordova-plugin-rootguard
```
### **Option 2: Install Locally**
1. Download and place the `cordova-plugin-rootguard/` folder inside your project.
2. Run:
```sh
cordova plugin add ./cordova-plugin-rootguard
```
---
## 📖 Usage
### JavaScript API
The plugin provides a single function `checkSecurity` that checks for both root access and Frida detection.
## 🔍 Usage
```js
RootGuard.checkSecurity(function(result) {
if (result === 1) {
console.log("Security Risk Detected: Root or Frida is present.");
} else {
console.log("Device is secure.");
}
}, function(error) {
console.error("Error detecting Root/Frida:", error);
});
```
---
## 🔧 How It Works
### Root Detection
- **File Check**: Scans for common root-related files (e.g., `su`, `Superuser.apk`, `.magisk`).
- **Command Execution**: Attempts to execute `su` to check for root access.
- **Mount Check**: Verifies if `/system` is mounted as read-write instead of read-only.
### Frida Detection
- **Port Scan**: Checks for Frida's default listening ports (`27042`, `27043`).
- **Memory Scan**: Reads `/proc/self/maps` to detect Frida-related libraries (`frida`, `gum-js`, `gadget`).
- **Process Check**: Looks for a running `frida-server` process.
- **Property Check**: Scans system properties for any Frida-related entries.
---
## 🛠️ Testing
### **Testing Root Detection**
1. Install **Magisk** or **SuperSU** on your Android device.
2. Run your Cordova app. It should detect root and exit.
### Android
- Test with rooted devices or emulators with Magisk/SuperSU.
- Attach Frida using: frida -n <package>
### iOS
- Test on a jailbroken device (Palera1n, Dopamine).
- Use Frida with tools like frida-trace, frida-server.
### **Testing Frida Detection**
1. Start Frida-server on the device:
```sh
adb push frida-server /data/local/tmp/
adb shell chmod 755 /data/local/tmp/frida-server
adb shell /data/local/tmp/frida-server &
```
2. Run your Cordova app. It should detect Frida and exit.
---
## Supported Platforms
- ✅ **Android** (Minimum SDK: API 21+)
- ✅ iOS
Platform | Root/Jailbreak Detection | rida Detection
--- | --- | ---
Android | ✅ | ✅
iOS | ✅ (Cydia, Sileo, Rootless) | ✅ (dylib scan)
---
## Troubleshooting
### Common Issues & Fixes
**1. Plugin Not Found After Installation**
Run `cordova platform remove android && cordova platform add android` to refresh plugins.
**2. App Crashes on Certain Devices**
Ensure the plugin has the required permissions and that your app has `minSdkVersion` set to **21 or higher** in `config.xml`.
**3. False Positives or False Negatives**
Root detection can vary across devices. Consider adding additional root detection methods if needed.
---
## 📜 License
This project is licensed under the MIT License.
## 👨💻 Contributing
We welcome contributions! Feel free to submit a pull request or report issues on the repository.
## 🛠 Support
For any issues, please open a GitHub issue in the repository.
---
## Author
📌 **Binuka Kamesh**
📧 Contact: [binukakamesh97@gmail.com](mailto:binukakamesh97@gmail.com)
🌍 GitHub: [binuka97](https://github.com/binuka97)
---
**Maintained by Binuka Kamesh**