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

This commit is contained in:
Translator 2025-07-22 18:11:26 +00:00
parent 7063e69ab9
commit acc7fe11de

View File

@ -20,7 +20,7 @@ cd bank-new
```
Copia il contenuto di `bank/assets/www` in `bank-new/www`, escludendo `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` e la directory `plugins/`.
Specifica la piattaforma (Android o iOS) quando crei un nuovo progetto Cordova. Per clonare un'app Android, aggiungi la piattaforma Android. Nota che le versioni della piattaforma di Cordova e i livelli API di Android sono distinti. Consulta la [documentazione](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) di Cordova per dettagli sulle versioni della piattaforma e sulle API Android supportate.
Specifica la piattaforma (Android o iOS) quando crei un nuovo progetto Cordova. Per clonare un'app Android, aggiungi la piattaforma Android. Tieni presente che le versioni della piattaforma di Cordova e i livelli API di Android sono distinti. Consulta la [documentazione](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) di Cordova per dettagli sulle versioni della piattaforma e sulle API Android supportate.
Per determinare la versione appropriata della piattaforma Cordova Android, controlla il `PLATFORM_VERSION_BUILD_LABEL` nel file `cordova.js` dell'applicazione originale.
@ -29,12 +29,12 @@ Dopo aver impostato la piattaforma, installa i plugin richiesti. Il file `bank/a
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
```
Se un plugin non è disponibile su npm, può essere reperito da GitHub:
Se un plugin non è disponibile su npm, può essere prelevato da GitHub:
```bash
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
```
Assicurati che tutti i prerequisiti siano soddisfatti prima della compilazione:
Assicurati che tutti i requisiti siano soddisfatti prima della compilazione:
```bash
cd bank-new
cordova requirements
@ -48,6 +48,78 @@ Questo comando genera un APK con l'opzione di debug abilitata, facilitando il de
### Strumento di Automazione
Per coloro che cercano di automatizzare il processo di clonazione, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** è uno strumento consigliato. Semplifica la clonazione delle applicazioni Android, semplificando i passaggi descritti sopra.
Per coloro che cercano di automatizzare il processo di clonazione, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** è uno strumento raccomandato. Semplifica la clonazione delle applicazioni Android, semplificando i passaggi descritti sopra.
---
## Rischi di Sicurezza e Vulnerabilità Recenti (2023-2025)
L'architettura basata su plugin di Cordova significa che **la maggior parte della superficie di attacco si trova all'interno di plugin di terze parti e del ponte WebView**. I seguenti problemi sono stati attivamente sfruttati o divulgati pubblicamente negli ultimi anni:
* **Pacchetti NPM Maligni.** Nel luglio 2024 il pacchetto `cordova-plugin-acuant` è stato rimosso dal registro NPM dopo che è stato scoperto che inseriva codice maligno durante l'installazione (OSV-ID MAL-2024-7845). Qualsiasi macchina di sviluppo che ha eseguito `npm install cordova-plugin-acuant` dovrebbe essere considerata compromessa. Audit `package.json`/`package-lock.json` per plugin Cordova inaspettati e fissa versioni fidate. [OSV advisory](/)
* **Deeplink Non Validati → XSS/RCE.** `CleverTap Cordova Plugin ≤ 2.6.2` (CVE-2023-2507) non riesce a sanitizzare l'input del deeplink, consentendo a un attaccante di iniettare JavaScript arbitrario che viene eseguito nel contesto principale di WebView quando viene aperto un link creato ad hoc. Aggiorna a ≥ 2.6.3 o rimuovi i parametri URI non fidati a runtime. [CVE-2023-2507](/)
* **Codice della Piattaforma Obsoleto.** `cordova-android` ≤ 12 viene fornito con targetSdk 33 o inferiore. A partire da maggio 2024 Google Play richiede API 34, e diverse funzionalità di indurimento di WebView (ad es. `exported="false"` generato automaticamente per i componenti) sono presenti solo in API 34+. Aggiorna a `cordova-android@13.0.0` o versioni successive.
### Controlli Rapidi durante un pentest
1. **Cerca `android:debuggable="true"`** nel `AndroidManifest.xml` decompilato. Le build debuggabili espongono il WebView su `chrome://inspect` consentendo l'iniezione completa di JS.
2. Rivedi `config.xml` per tag `<access origin="*">` eccessivamente permissivi o meta-tag CSP mancanti in `www/index.html`.
3. Grep `www/` per `eval(`, `new Function(` o HTML costruito dinamicamente che potrebbe trasformare bypass CSP in XSS.
4. Identifica i plugin incorporati in `plugins/` ed esegui `npm audit --production` o `osv-scanner --lockfile` per trovare CVE noti.
---
## Suggerimenti per Analisi Dinamica
### Debugging Remoto di WebView
Se l'applicazione è stata compilata in modalità **debug** (o chiama esplicitamente `WebView.setWebContentsDebuggingEnabled(true)`), puoi allegare Chrome DevTools:
```bash
adb forward tcp:9222 localabstract:chrome_devtools_remote
google-chrome --new-window "chrome://inspect/#devices"
```
Questo ti offre una console JavaScript live, un ispettore DOM e la possibilità di sovrascrivere le funzioni JavaScript a runtime estremamente utile per bypassare la logica lato client. (Vedi la documentazione ufficiale di Google per ulteriori dettagli.)
### Hooking the JS ⇄ Native bridge with Frida
Il punto di ingresso lato Java della maggior parte dei plugin è `org.apache.cordova.CordovaPlugin.execute(...)`. Hookare questo metodo ti consente di monitorare o manomettere le chiamate effettuate da JavaScript:
```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);
};
});
```
---
## Raccomandazioni di indurimento (2025)
* **Aggiorna alla piattaforma più recente:** `cordova-android@13` (Maggio 2024) mira all'API 34 e porta nuove mitigazioni per WebView.
* **Rimuovi artefatti di debug:** Assicurati che `android:debuggable="false"` e evita di chiamare `setWebContentsDebuggingEnabled` nelle build di rilascio.
* **Imponi una CSP rigorosa e una AllowList:** Aggiungi un tag `<meta http-equiv="Content-Security-Policy" ...>` in ogni file HTML e limita le origini `<access>` in `config.xml`.
Esempio di CSP minima che blocca gli script inline:
```html
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
```
* **Disabilita il traffico in chiaro:** In `AndroidManifest.xml` imposta `android:usesCleartextTraffic="false"` e/o fornisci un [network-security-config] che impone TLS.
* **Igiene dei plugin:**
* Fissa le versioni dei plugin con `npm ci` e committa il `package-lock.json` generato.
* Esegui periodicamente `npm audit`, `osv-scanner` o `cordova-check-plugins`.
* **Offuscamento:** Minifica JavaScript con Terser/UglifyJS e rimuovi le mappe sorgente dalle build di produzione per rallentare il reversing occasionale.
---
## Riferimenti
* Apache Cordova Note di rilascio di Cordova-Android 13.0.0 (Maggio 2024)
* OSV-ID MAL-2024-7845 Codice malevolo in `cordova-plugin-acuant`
* CVE-2023-2507 CleverTap Cordova Plugin deeplink XSS
{{#include ../banners/hacktricks-training.md}}