这是一个基于 NVIDIA GeForce NOW for Android 的 CVE-2023-31014 公开报告制作的教育用 Android 实验。不包含 NVIDIA 源代码、真实的 Action 字符串、真实的身份验证信息。
6.00.32705137 ~ 6.04.331088326.05.33200069Oversecured 公开提及的暴露类别是流配置、用户账户和游戏信息。
| 分类 | 实现内容 |
|---|---|
| Game Launcher | victim/MainActivity |
| 正常 Streamer | victim/StreamerActivity |
| 恶意 Handler | attacker/HijackActivity |
| 信息泄露 | 显示虚拟的游戏、账户、会话、流设置 Extras |
| 拒绝服务 | 攻击 Activity 处理 Intent,导致正常 Streamer 无法启动 |
| 修复 | 指定明确的 StreamerActivity 的显式 Intent |
官方资料中未公开实际组件类型。因此,本实验采用了易于学习的 Activity → Activity 模型。由于导致代码执行的实际链条同样未公开,因此不进行代码执行的复现。
Victim Game Launcher
│
│ lab.cve202331014.action.START_STREAM
│ implicit Intent + 가상 session extras
▼
Android Intent Resolver
├── Victim Normal Streamer
└── Attacker HijackActivity
安全路径会对同一个 Intent 应用以下限制:
intent.setClass(this, StreamerActivity.class);
startActivity(intent);
要求:
./gradlew :victim:assembleDebug :attacker:assembleDebug
生成的 APK:
victim/build/outputs/apk/debug/victim-debug.apk
attacker/build/outputs/apk/debug/attacker-debug.apk
已完成验证的预构建 APK 也包含在 dist/ 中。
dist/cve-2023-31014-victim-debug.apk
dist/cve-2023-31014-attacker-debug.apk
仅在模拟器或已获授权的测试设备上运行。
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,确认攻击应用的角色。CVE Lab Victim。Normal Streamer 和 CVE Lab Attacker 两个。CVE Lab Attacker。Normal Streamer 运行。如果在应用选择器中指定了始终使用的应用,请先在系统设置中对该应用执行清除默认值,然后重新进行实操。
存在漏洞:
Intent intent = new Intent(ACTION_START_STREAM);
intent.putExtra(EXTRA_STREAM_CONFIG, demoConfig);
startActivity(intent); // package/component 없음
修复:
Intent intent = new Intent(ACTION_START_STREAM);
intent.putExtra(EXTRA_STREAM_CONFIG, demoConfig);
intent.setClass(this, StreamerActivity.class);
startActivity(intent);
如果设计上需要由 Android 从同一制造商包的多个组件中选择一个,那么也可以使用 setPackage() 来阻止外部应用。对于单一目标,显式组件更加明确。
以下值均未公开,因此是特意构造的。
lab.cve202331014.action.START_STREAM Actiondemo_* Extra 名称和值203.0.113.10 文档用 IP 地址因此,本项目复现的是该 CVE 的漏洞原理与修复方法,而非实际的 GeForce NOW 攻击 PoC。