
Laboratório educacional Android para sequestro de implicit intents do CVE-2023-31014.
Lab educacional de Android criado com base no relatório público do CVE-2023-31014 no NVIDIA GeForce NOW para Android. Não inclui código-fonte da NVIDIA, strings de Action reais nem credenciais reais.
6.00.32705137 ~ 6.04.331088326.05.33200069As categorias de exposição mencionadas publicamente pela Oversecured são configuração de stream, conta de usuário e informações do jogo.
| Categoria | Implementação |
|---|---|
| Game Launcher | victim/MainActivity |
| Streamer legítimo | victim/StreamerActivity |
| Handler malicioso | attacker/HijackActivity |
| Exposição de informações | Exibição de Extras fictícios de jogo, conta, sessão e configuração de stream |
| Negação de serviço | A Activity do atacante processa o Intent e o Streamer legítimo não é iniciado |
| Correção | Intent explícito que especifica exatamente o StreamerActivity |
Os materiais oficiais não divulgaram os tipos reais de componentes. Portanto, este Lab usa o modelo Activity → Activity, que é mais fácil de aprender. Como a cadeia real que leva à execução de código também não foi divulgada, a execução de código não é reproduzida.
Victim Game Launcher
│
│ lab.cve202331014.action.START_STREAM
│ implicit Intent + 가상 session extras
▼
Android Intent Resolver
├── Victim Normal Streamer
└── Attacker HijackActivity
Sobre o mesmo Intent, a via segura aplica a seguinte restrição.
intent.setClass(this, StreamerActivity.class);
startActivity(intent);
Requisitos:
./gradlew :victim:assembleDebug :attacker:assembleDebug
APKs gerados:
victim/build/outputs/apk/debug/victim-debug.apk
attacker/build/outputs/apk/debug/attacker-debug.apk
APKs pré-compilados já validados também estão incluídos em dist/.
dist/cve-2023-31014-victim-debug.apk
dist/cve-2023-31014-attacker-debug.apk
Execute apenas em um emulador ou em um dispositivo de teste 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 uma vez e verifique a função do app atacante.CVE Lab Victim.Normal Streamer e CVE Lab Attacker.CVE Lab Attacker.Normal Streamer é executado sem o seletor de apps.Se você definiu um app para usar sempre no seletor de apps, execute Limpar padrões nas configurações do sistema desse app e refaça a prática.
Vulnerável:
Intent intent = new Intent(ACTION_START_STREAM);
intent.putExtra(EXTRA_STREAM_CONFIG, demoConfig);
startActivity(intent); // package/component 없음
Corrigido:
Intent intent = new Intent(ACTION_START_STREAM);
intent.putExtra(EXTRA_STREAM_CONFIG, demoConfig);
intent.setClass(this, StreamerActivity.class);
startActivity(intent);
Se o projeto exigir que o Android escolha um entre vários componentes do mesmo pacote do fabricante, setPackage() também pode ser usado para bloquear apps externos. Para um único destino, o componente explícito é mais claro.
Os valores a seguir foram criados intencionalmente, pois não foram divulgados:
lab.cve202331014.action.START_STREAMdemo_*203.0.113.10Portanto, este projeto reproduz o princípio da vulnerabilidade e a correção do CVE, mas não é um PoC real de ataque ao GeForce NOW.