
Laboratorio educativo de Android para el secuestro de intents implícitos CVE-2023-31014
Es un laboratorio educativo de Android creado a partir del informe público de CVE-2023-31014 de NVIDIA GeForce NOW for Android. No incluye código fuente de NVIDIA, cadenas Action reales ni credenciales reales.
6.00.32705137 ~ 6.04.331088326.05.33200069Las categorías de exposición mencionadas públicamente por Oversecured son configuración de stream, cuenta de usuario e información del juego.
Los materiales oficiales no revelan el tipo real de componente. Por lo tanto, este Lab utiliza un modelo Activity → Activity más fácil de aprender. Como la cadena real que conduce a la ejecución de código tampoco fue publicada, la ejecución de código no se reproduce.
Victim Game Launcher
│
│ lab.cve202331014.action.START_STREAM
│ implicit Intent + 가상 session extras
▼
Android Intent Resolver
├── Victim Normal Streamer
└── Attacker HijackActivity
La ruta segura aplica la siguiente restricción al mismo Intent.
intent.setClass(this, StreamerActivity.class);
startActivity(intent);
Requisitos:
./gradlew :victim:assembleDebug :attacker:assembleDebug
APK generados:
victim/build/outputs/apk/debug/victim-debug.apk
attacker/build/outputs/apk/debug/attacker-debug.apk
También se incluyen APK precompilados y verificados en dist/.
dist/cve-2023-31014-victim-debug.apk
dist/cve-2023-31014-attacker-debug.apk
Ejecutar únicamente en un emulador o en un dispositivo de prueba autorizado.
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 vez para confirmar el rol de la aplicación atacante.CVE Lab Victim.Normal Streamer y CVE Lab Attacker.CVE Lab Attacker en el selector de aplicaciones de Android.Normal Streamer se ejecute sin selector de aplicaciones.Si en el selector de aplicaciones se especificó una aplicación para usar siempre, realiza Borrar valores predeterminados en la configuración del sistema de esa aplicación y vuelve a practicar.
Vulnerable:
Intent intent = new Intent(ACTION_START_STREAM);
intent.putExtra(EXTRA_STREAM_CONFIG, demoConfig);
startActivity(intent); // package/component 없음
Corregido:
Intent intent = new Intent(ACTION_START_STREAM);
intent.putExtra(EXTRA_STREAM_CONFIG, demoConfig);
intent.setClass(this, StreamerActivity.class);
startActivity(intent);
Si el diseño requiere que Android elija entre varios componentes del mismo paquete del fabricante, setPackage() también se puede usar para bloquear aplicaciones externas. Si el destino es único, el componente explícito es más claro.
Los siguientes valores se crearon deliberadamente porque no fueron publicados.
lab.cve202331014.action.START_STREAMdemo_*203.0.113.10Por lo tanto, este proyecto reproduce el principio de la vulnerabilidad y su corrección del CVE, pero no es un PoC de ataque real contra GeForce NOW.
| Categoría | Implementación |
|---|
| Game Launcher | victim/MainActivity |
| Streamer legítimo | victim/StreamerActivity |
| Handler malicioso | attacker/HijackActivity |
| Exposición de información | Muestra Extras ficticios de juego, cuenta, sesión y configuración de stream |
| Denegación de servicio | La Activity atacante procesa el Intent y el Streamer legítimo no se inicia |
| Corrección | Intent explícito que designa exactamente StreamerActivity |