
Laboratorio Android didattico per l'hijacking degli intent impliciti CVE-2023-31014
Lab Android didattico creato sulla base del rapporto pubblico di CVE-2023-31014 per NVIDIA GeForce NOW per Android. Non include il codice sorgente NVIDIA, le stringhe Action reali né le credenziali reali.
6.00.32705137 ~ 6.04.331088326.05.33200069Le categorie di esposizione menzionate pubblicamente da Oversecured sono stream configuration, user account e game information.
Il materiale ufficiale non rivela il tipo effettivo di componenti. Pertanto, questo Lab utilizza un modello Activity → Activity di facile apprendimento. Poiché non è stata pubblicata nemmeno la catena reale che porta all'esecuzione di codice, l'esecuzione di codice non viene riprodotta.
Victim Game Launcher
│
│ lab.cve202331014.action.START_STREAM
│ implicit Intent + 가상 session extras
▼
Android Intent Resolver
├── Victim Normal Streamer
└── Attacker HijackActivity
Il percorso sicuro applica le seguenti restrizioni allo stesso Intent.
intent.setClass(this, StreamerActivity.class);
startActivity(intent);
Requisiti:
./gradlew :victim:assembleDebug :attacker:assembleDebug
APK generati:
victim/build/outputs/apk/debug/victim-debug.apk
attacker/build/outputs/apk/debug/attacker-debug.apk
Nella cartella dist/ sono inclusi anche APK precompilati e verificati.
dist/cve-2023-31014-victim-debug.apk
dist/cve-2023-31014-attacker-debug.apk
Eseguire solo su un emulatore o su un dispositivo di test autorizzato.
adb install -r attacker/build/outputs/apk/debug/attacker-debug.apk
adb install -r victim/build/outputs/apk/debug/victim-debug.apk
CVE Lab Attacker una volta per verificare il ruolo dell'app dell'attaccante.CVE Lab Victim.Normal Streamer e CVE Lab Attacker.CVE Lab Attacker.Normal Streamer venga avviato senza il selettore app.Se nel selettore app è stata impostata un'app da usare sempre, eseguire Cancella impostazioni predefinite nelle impostazioni di sistema di quell'app e ripetere l'esercitazione.
Vulnerabile:
Intent intent = new Intent(ACTION_START_STREAM);
intent.putExtra(EXTRA_STREAM_CONFIG, demoConfig);
startActivity(intent); // package/component 없음
Corretto:
Intent intent = new Intent(ACTION_START_STREAM);
intent.putExtra(EXTRA_STREAM_CONFIG, demoConfig);
intent.setClass(this, StreamerActivity.class);
startActivity(intent);
Se il progetto prevede che Android scelga uno tra più componenti dello stesso pacchetto del produttore, è possibile usare setPackage() per bloccare le app esterne. Se invece il target è singolo, un componente esplicito è più chiaro.
I seguenti valori sono stati creati appositamente perché non sono stati divulgati.
lab.cve202331014.action.START_STREAM Actiondemo_*203.0.113.10 per documentazionePertanto, questo progetto riproduce il principio della vulnerabilità e la relativa correzione della CVE, ma non è un PoC di un attacco reale a GeForce NOW.
| Categoria | Implementazione |
|---|
| Game Launcher | victim/MainActivity |
| Streamer legittimo | victim/StreamerActivity |
| Handler malintenzionato | attacker/HijackActivity |
| Esposizione di informazioni | Mostra Extras fittizi di gioco, account, sessione e configurazione dello stream |
| Denial of service | L'Activity dell'attaccante gestisce l'Intent e lo Streamer legittimo non viene avviato |
| Correzione | Intent esplicito che specifica esattamente StreamerActivity |