HYCQAQ/Logitech-G-Cloud-GhostLock-CVE-2026-43499
GitHub: HYCQAQ/Logitech-G-Cloud-GhostLock-CVE-2026-43499
针对罗技 G Cloud 掌机(骁龙 720G)利用 GhostLock 漏洞(CVE-2026-43499)进行内核 root 提权尝试的研究项目,包含完整利用代码与分析文档。
Stars: 0 | Forks: 0
# 罗技云掌机 · GhostLock CVE-2026-43499 root 尝试
## Logitech G Cloud — CVE-2026-43499 (GhostLock) Root 尝试
## 状态
## 设备信息
| 项目 | 值 |
|-------------|------------|
| 设备 | Logitech G Cloud (HALO) |
| SoC | **Snapdragon 720G (SM7125, ATOLL)** |
| GPU | Adreno 618 |
| CPU | Kryo 465: 2×Cortex-A76 + 6×Cortex-A55 |
| 内核 | **Linux 4.14.190-perf+** (Clang 10.0.7) |
| 编译日期 | **2025-08-27** (scm@a9b0f71b66dc) |
| Android 版本 | 11 |
| Bootloader | 锁定,dm-verity 开启 |
| KASLR | 开启(可通过 perf_event_open 绕过) |
| SELinux | Enforcing |
## 仓库结构
```
GhostLock-SD720G-CVE-2026-43499/
├── exploit/ # 内核利用源码与二进制 / Kernel exploit source & binaries
│ ├── sd720g_exploit.c # 主利用程序(竞争触发 + KASLR + 日志)/ Main exploit
│ ├── sd720g_exploit # 已编译 ARM64 二进制 (2.1 MB) / Compiled binary
│ ├── target_sd720g.h # 核心符号偏移(12 个函数)/ Core symbol offsets
│ ├── target_sd720g_complete.h # 完整 37 符号表 / Full symbol table
│ ├── perf_leak_sd720g.c # KASLR 基址泄露工具 / KASLR base leak
│ ├── perf_leak # 已编译二进制 (2.1 MB) / Compiled binary
│ └── compile_perf_leak.bat # NDK 编译脚本 / NDK build script
│
├── preload/ # LD_PRELOAD 共享库 / Shared library
│ ├── sd720g_preload.c # 构造函数自动执行利用 / Constructor-based exploit
│ ├── arm.so # 已编译 ARM64 .so (16 KB)
│ └── compile_preload.bat # 编译脚本 / Build script
│
├── tools/ # 分析与提取脚本 / Analysis & extraction scripts
│ ├── extract_kallsyms.py # 纯 Python kallsyms 解析器 (PIE 感知) / kallsyms parser
│ ├── extract_symbols.py # 符号偏移提取器 / Symbol offset extractor
│ ├── find_ghostlock_bug.py # 二进制搜索 pi_blocked_on=NULL 模式 / Bug pattern search
│ ├── reanalysis.py # 0x105aeb0 与 rb_erase 调用链追踪 / Call chain trace
│ ├── trace_waiter.py # rt_mutex_waiter 字段写操作搜索 / Field write search
│ ├── analyze_pi_state.py # pi_state 分配/释放生命周期分析 / Lifecycle analysis
│ └── kgsl_uaf_test.c # KGSL GPU UAF 触发测试 / GPU UAF trigger test
│
├── docs/ # 综合分析文档 / Analysis documents
│ ├── CVE2026-43499_SD720G_分析.md # 完整分析报告(中文)/ Full analysis report
│ ├── GHOSTLOCK_SD720G_PORT_RECORD.md # 移植记录与发现 / Porting record
│ ├── CVE2026-43499_SD720G_参考数据汇总.md # 参考数据与符号表 / Reference data
│ ├── ALTERNATIVE_STRATEGY.md # 替代攻击路径 / Alternative paths
│ ├── HEAP_ANALYSIS.md # 堆 / pi_state 生命周期 / Heap lifecycle
│ ├── STACK_ANALYSIS.md # 栈回收可行性 / Stack reclaim feasibility
│ ├── WRITE_PRIMITIVE.md # 写原语研究 / Write primitive research
│ ├── BOOT_ANALYSIS.md # 启动镜像结构 / Boot image structure
│ └── FINAL_ANALYSIS.md # 最终结论 / Final conclusions
│
└── reference/ # 参考利用代码 / Reference exploits
├── CyberMeowfia/ # NebuSec/CyberMeowfia IonStack 仓库
└── CVE43499/ # IonStack CVE-2026-43499 PoC
```
## 关键发现
### ✅ 已验证可用
| 项目 | 说明 |
|-------------|-------------|
| KASLR 泄露 | `perf_event_open` 通过 `PERF_TYPE_SOFTWARE` 可正常工作(paranoid=-1) |
| Futex PI 竞争 | EDEADLK (errno=35) 确认死锁路径可达 |
| 符号提取 | 从 kallsyms 提取 37 个符号(含 `commit_creds`, `prepare_kernel_cred`, `init_task` 等) |
| LD_PRELOAD 加载 | `arm.so` 编译正常,设备上可加载执行 |
### ❌ 阻碍
| 项目 | 原因 |
|-------------|---------------|
| Qualcomm Bitmap RT Mutex | `rt_mutex_adjust_prio_chain` 使用 bitmap 优先队列替代标准 rbtree |
| 无栈上 Waiter | `remove_waiter` 帧仅 0x30(48 字节),无局部 `struct rt_mutex_waiter` |
| 死代码 | `remove_waiter` (0xCEAA0) 在内核二进制中**无直接调用者** |
| 无 rb_erase 链 | 0x105aeb0 是 ring buffer 操作函数,不是 rb_erase |
| pi_state 生命周期 | 使用 refcount+RCU 而非直接 kfree,与标准 Linux 不同 |
| Big.LITTLE | KernelSnitch mm_struct 泄露在 A76+A53 异构 CPU 上失败 |
| CONFIG_CRYPTO_USER_API_AEAD | 未启用 — CVE-2026-31431 (Copy Fail) 不可利用 |
### 📝 结论
```
CVE-2026-43499 漏洞存在 / Vulnerability exists: ✅ (str xzr at 0xdbf10)
标准 IonStack 利用链 / Standard exploit chain: ❌ (Qualcomm 代码不同 / Code differs)
替代写原语 / Alternative write primitive: ⚠️ 当前分析未找到 / Not found
```
## 使用方法(有设备时)
```
# 推送文件 / Push files
adb push preload/arm.so /data/local/tmp/
adb push exploit/perf_leak /data/local/tmp/
adb shell chmod 755 /data/local/tmp/arm.so /data/local/tmp/perf_leak
# 第一步:泄露 KASLR 基址 / Step 1: Leak KASLR base
adb shell /data/local/tmp/perf_leak
# 第二步:触发 GhostLock 竞争 / Step 2: Trigger GhostLock race
adb shell LD_PRELOAD=/data/local/tmp/arm.so env
# 崩溃后查看 dmesg / After crash, check dmesg
adb shell dmesg | grep -A 30 "PC\|Call trace\|Internal error"
```
## 参考资料
- [NebuSec/CyberMeowfia — IonStack CVE-2026-43499](https://github.com/NebuSec/CyberMeowfia)
- [hexo141/Rootme — OnePlus PLQ110 GhostLock 移植](https://github.com/hexo141/Rootme)
- [qhyz.holyfun.cn — MT6833 GhostLock 移植](https://qhyz.holyfun.cn/CVE202643499.html)
- [Qualcomm ATOLL 平台 (SM7125) CodeLinaro](https://git.codelinaro.org/clo/la/kernel/msm-4.14)
## 许可证
标签:客户端加密, 逆向工具