Translated ['src/mobile-pentesting/cordova-apps.md'] to de

This commit is contained in:
Translator 2025-07-22 18:11:04 +00:00
parent 6d373ae330
commit 4595f1d02b

View File

@ -4,7 +4,7 @@
**Für weitere Details siehe [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Dies ist eine Zusammenfassung:
Apache Cordova ist bekannt dafür, die Entwicklung von **hybriden Anwendungen** mit **JavaScript, HTML und CSS** zu ermöglichen. Es erlaubt die Erstellung von Android- und iOS-Anwendungen; jedoch fehlt ein standardmäßiger Mechanismus zum Schutz des Quellcodes der Anwendung. Im Gegensatz zu React Native kompiliert Cordova den Quellcode standardmäßig nicht, was zu Sicherheitsanfälligkeiten durch Code-Manipulation führen kann. Cordova verwendet WebView, um Anwendungen darzustellen, wodurch der HTML- und JavaScript-Code selbst nach der Kompilierung in APK- oder IPA-Dateien sichtbar bleibt. React Native hingegen verwendet eine JavaScript-VM, um JavaScript-Code auszuführen, was einen besseren Schutz des Quellcodes bietet.
Apache Cordova ist bekannt dafür, die Entwicklung von **hybriden Anwendungen** mit **JavaScript, HTML und CSS** zu ermöglichen. Es erlaubt die Erstellung von Android- und iOS-Anwendungen; jedoch fehlt ein standardmäßiger Mechanismus zum Schutz des Quellcodes der Anwendung. Im Gegensatz zu React Native kompiliert Cordova den Quellcode standardmäßig nicht, was zu Sicherheitsanfälligkeiten durch Code-Manipulation führen kann. Cordova verwendet WebView, um Anwendungen darzustellen, wodurch der HTML- und JavaScript-Code auch nach der Kompilierung in APK- oder IPA-Dateien sichtbar bleibt. React Native hingegen verwendet eine JavaScript-VM, um JavaScript-Code auszuführen, was einen besseren Schutz des Quellcodes bietet.
### Klonen einer Cordova-Anwendung
@ -44,10 +44,82 @@ Um die APK zu erstellen, verwenden Sie den folgenden Befehl:
cd bank-new
cordova build android — packageType=apk
```
Dieser Befehl generiert eine APK mit der aktivierten Debug-Option, was das Debuggen über Google Chrome erleichtert. Es ist entscheidend, die APK vor der Installation zu signieren, insbesondere wenn die Anwendung Mechanismen zur Erkennung von Code-Manipulationen enthält.
Dieser Befehl generiert ein APK mit der aktivierten Debug-Option, was das Debugging über Google Chrome erleichtert. Es ist entscheidend, das APK vor der Installation zu signieren, insbesondere wenn die Anwendung Mechanismen zur Erkennung von Code-Manipulationen enthält.
### Automatisierungstool
Für diejenigen, die den Klonprozess automatisieren möchten, ist **[MobSecco](https://github.com/Anof-cyber/MobSecco)** ein empfohlenes Tool. Es vereinfacht das Klonen von Android-Anwendungen und vereinfacht die oben beschriebenen Schritte.
---
## Sicherheitsrisiken & Aktuelle Schwachstellen (2023-2025)
Die pluginbasierte Architektur von Cordova bedeutet, dass **der Großteil der Angriffsfläche in Drittanbieter-Plugins und der WebView-Brücke liegt**. Die folgenden Probleme wurden in den letzten Jahren aktiv ausgenutzt oder öffentlich bekannt gemacht:
* **Bösartige NPM-Pakete.** Im Juli 2024 wurde das Paket `cordova-plugin-acuant` aus dem NPM-Registry entfernt, nachdem entdeckt wurde, dass es während der Installation bösartigen Code ablegte (OSV-ID MAL-2024-7845). Jede Entwicklermaschine, die `npm install cordova-plugin-acuant` ausgeführt hat, sollte als kompromittiert betrachtet werden. Überprüfen Sie `package.json`/`package-lock.json` auf unerwartete Cordova-Plugins und fixieren Sie vertrauenswürdige Versionen. [OSV advisory](/)
* **Unvalidierte Deeplinks → XSS/RCE.** `CleverTap Cordova Plugin ≤ 2.6.2` (CVE-2023-2507) versäumt es, Deeplink-Eingaben zu bereinigen, was es einem Angreifer ermöglicht, beliebiges JavaScript einzuschleusen, das im Haupt-WebView-Kontext ausgeführt wird, wenn ein manipuliertes Link geöffnet wird. Aktualisieren Sie auf ≥ 2.6.3 oder entfernen Sie nicht vertrauenswürdige URI-Parameter zur Laufzeit. [CVE-2023-2507](/)
* **Veralteter Plattformcode.** `cordova-android` ≤ 12 wird mit targetSdk 33 oder niedriger ausgeliefert. Ab Mai 2024 verlangt Google Play API 34, und mehrere WebView-Härtungsfunktionen (z. B. automatisch generiertes `exported="false"` für Komponenten) sind nur in API 34+ vorhanden. Aktualisieren Sie auf `cordova-android@13.0.0` oder höher.
### Schnelle Überprüfungen während eines Pentests
1. **Suchen Sie nach `android:debuggable="true"`** in der dekompilierten `AndroidManifest.xml`. Debuggable Builds exponieren die WebView über `chrome://inspect` und ermöglichen vollständige JS-Injektion.
2. Überprüfen Sie `config.xml` auf zu permissive `<access origin="*">`-Tags oder fehlende CSP-Meta-Tags in `www/index.html`.
3. Grep `www/` nach `eval(`, `new Function(` oder dynamisch konstruiertem HTML, das CSP-Umgehungen in XSS umwandeln könnte.
4. Identifizieren Sie eingebettete Plugins in `plugins/` und führen Sie `npm audit --production` oder `osv-scanner --lockfile` aus, um bekannte CVEs zu finden.
---
## Tipps zur dynamischen Analyse
### Remote WebView-Debugging
Wenn die Anwendung im **Debug**-Modus kompiliert wurde (oder explizit `WebView.setWebContentsDebuggingEnabled(true)` aufruft), können Sie Chrome DevTools anhängen:
```bash
adb forward tcp:9222 localabstract:chrome_devtools_remote
google-chrome --new-window "chrome://inspect/#devices"
```
Dies gibt Ihnen eine Live-JavaScript-Konsole, einen DOM-Inspektor und die Möglichkeit, JavaScript-Funktionen zur Laufzeit zu überschreiben äußerst praktisch, um clientseitige Logik zu umgehen. (Siehe die offizielle Dokumentation von Google für weitere Details.)
### Hooking the JS ⇄ Native bridge with Frida
Der Java-seitige Einstiegspunkt der meisten Plugins ist `org.apache.cordova.CordovaPlugin.execute(...)`. Das Hooken dieser Methode ermöglicht es Ihnen, Aufrufe, die von JavaScript gemacht werden, zu überwachen oder zu manipulieren:
```javascript
// frida -U -f com.vulnerable.bank -l hook.js --no-pause
Java.perform(function () {
var CordovaPlugin = Java.use('org.apache.cordova.CordovaPlugin');
CordovaPlugin.execute.overload('java.lang.String','org.json.JSONArray','org.apache.cordova.CallbackContext').implementation = function(act, args, ctx) {
console.log('[Cordova] ' + act + ' => ' + args);
// Tamper the first argument of a sensitive action
if (act === 'encrypt') {
args.put(0, '1234');
}
return this.execute(act, args, ctx);
};
});
```
---
## Empfehlungen zur Härtung (2025)
* **Aktualisieren Sie auf die neueste Plattform:** `cordova-android@13` (Mai 2024) zielt auf API 34 ab und bringt neue WebView-Minderungen.
* **Entfernen Sie Debug-Artefakte:** Stellen Sie sicher, dass `android:debuggable="false"` gesetzt ist und vermeiden Sie das Aufrufen von `setWebContentsDebuggingEnabled` in Release-Bauten.
* **Durchsetzen einer strengen CSP & AllowList:** Fügen Sie in jeder HTML-Datei ein `<meta http-equiv="Content-Security-Policy" ...>` Tag hinzu und beschränken Sie `<access>` Ursprünge in `config.xml`.
Beispiel für eine minimale CSP, die Inline-Skripte blockiert:
```html
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
```
* **Deaktivieren Sie Klartextverkehr:** Setzen Sie in `AndroidManifest.xml` `android:usesCleartextTraffic="false"` und/oder stellen Sie eine [network-security-config] bereit, die TLS durchsetzt.
* **Plugin-Hygiene:**
* Fixieren Sie Plugin-Versionen mit `npm ci` und committen Sie die generierte `package-lock.json`.
* Führen Sie regelmäßig `npm audit`, `osv-scanner` oder `cordova-check-plugins` aus.
* **Obfuskation:** Minimieren Sie JavaScript mit Terser/UglifyJS und entfernen Sie Quellkarten aus Produktionsbauten, um das casual Reversing zu verlangsamen.
---
## Referenzen
* Apache Cordova Cordova-Android 13.0.0 Versionshinweise (Mai 2024)
* OSV-ID MAL-2024-7845 Schadhafter Code in `cordova-plugin-acuant`
* CVE-2023-2507 CleverTap Cordova Plugin Deeplink XSS
{{#include ../banners/hacktricks-training.md}}