
Laboratoire Android pédagogique pour le détournement d'intent implicite de la CVE-2023-31014
Il s'agit d'un laboratoire Android pédagogique basé sur le rapport public CVE-2023-31014 de NVIDIA GeForce NOW pour Android. Il ne contient ni code source NVIDIA, ni chaînes Action réelles, ni informations d'authentification réelles.
6.00.32705137 ~ 6.04.331088326.05.33200069Les catégories d'exposition publiquement mentionnées par Oversecured sont la configuration du stream, le compte utilisateur et les informations de jeu.
Les documents officiels ne divulguent pas le type réel des composants. Ce lab utilise donc un modèle Activity → Activity, plus facile à apprendre. La chaîne réelle menant à l'exécution de code n'ayant pas non plus été divulguée, l'exécution de code n'est pas reproduite.
Victim Game Launcher
│
│ lab.cve202331014.action.START_STREAM
│ implicit Intent + 가상 session extras
▼
Android Intent Resolver
├── Victim Normal Streamer
└── Attacker HijackActivity
Le chemin sûr applique les restrictions suivantes à ce même Intent.
intent.setClass(this, StreamerActivity.class);
startActivity(intent);
Prérequis :
./gradlew :victim:assembleDebug :attacker:assembleDebug
APK générés :
victim/build/outputs/apk/debug/victim-debug.apk
attacker/build/outputs/apk/debug/attacker-debug.apk
Des APK précompilés et validés sont également inclus dans dist/.
dist/cve-2023-31014-victim-debug.apk
dist/cve-2023-31014-attacker-debug.apk
N'exécuter que sur un émulateur ou un appareil de test autorisé.
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 pour vérifier le rôle de l'application attaquante.CVE Lab Victim.Normal Streamer et CVE Lab Attacker.CVE Lab Attacker.Normal Streamer se lance sans le sélecteur d'applications.Si une application « toujours utiliser » a été définie dans le sélecteur d'applications, effectuez Effacer les valeurs par défaut dans les paramètres système de cette application, puis refaites l'exercice.
Vulnérable :
Intent intent = new Intent(ACTION_START_STREAM);
intent.putExtra(EXTRA_STREAM_CONFIG, demoConfig);
startActivity(intent); // package/component 없음
Corrigé :
Intent intent = new Intent(ACTION_START_STREAM);
intent.putExtra(EXTRA_STREAM_CONFIG, demoConfig);
intent.setClass(this, StreamerActivity.class);
startActivity(intent);
Si la conception exige qu'Android choisisse parmi plusieurs composants du même package constructeur, setPackage() peut également être utilisé pour bloquer les applications externes. Pour une cible unique, un composant explicite est plus clair.
Les valeurs suivantes ont été créées intentionnellement car elles n'ont pas été divulguées.
lab.cve202331014.action.START_STREAMdemo_*203.0.113.10Par conséquent, ce projet reproduit le principe de la vulnérabilité et sa correction pour la CVE, mais ne constitue pas un PoC d'attaque réel contre GeForce NOW.
| Catégorie | Implémentation |
|---|
| Game Launcher | victim/MainActivity |
| Streamer normal | victim/StreamerActivity |
| Handler malveillant | attacker/HijackActivity |
| Exposition d'informations | Affichage d'extras fictifs de jeu, de compte, de session et de configuration de stream |
| Déni de service | L'activité attaquante traite l'Intent et empêche le Streamer normal de démarrer |
| Correction | Intent explicite désignant précisément StreamerActivity |