
Logitech G Cloud · GhostLock CVE-2026-43499 попытка получения root
⚠️ Только для исследовательских и оборонительных целей / For research and defensive purposes only
Все содержимое этого репозитория создано DeepSeek AI и предназначено только для исследований в области безопасности, анализа уязвимостей и оборонительной оценки безопасности. All content in this repository is generated by DeepSeek AI, for security research, vulnerability analysis, and defensive security assessment only.
Стандартная цепочка эксплуатации неприменима / Standard exploit chain NOT applicable
Уязвимость CVE-2026-43499 существует и доступна через гонку futex PI (подтверждено EDEADLK), но Qualcomm переписал основной код rtmutex (rbtree → bitmap/связный список). Стандартный примитив записи IonStack (ограниченная запись rb_erase) в этом ядре отсутствует.
The CVE-2026-43499 vulnerability exists and is reachable via futex PI race (EDEADLK confirmed), but Qualcomm rewrote the rtmutex core code (rbtree → bitmap/linked-list). The standard IonStack write primitive (rb_erase constrained write) does not exist on this kernel.
| Параметр / Item | Значение / Value |
|---|---|
| Модель устройства / Model | Logitech G Cloud (HALO) |
| Версия прошивки / Firmware | SQ02K.60.0228 (2025-08-27) |
| SoC | Qualcomm Snapdragon 720G (SM7125, ATOLL) |
| GPU | Adreno 618 (700MHz) |
| CPU | Kryo 465: 2×Cortex-A76 @2.3GHz + 6×Cortex-A55 @1.8GHz |
| Техпроцесс / Process | 8nm |
| ОЗУ / RAM | 4GB LPDDR4X |
| Накопитель / Storage | 64GB UFS |
| Дисплей / Display | 7-inch IPS LCD, 1920×1080, 60Hz |
| Аккумулятор / Battery | 6000mAh |
| Подключение / Connectivity | Wi-Fi 5, Bluetooth 5.1, USB-C 3.1 |
| Ядро / Kernel | Linux 4.14.190-perf+ (Clang 10.0.7, GNU ld 2.27) |
| Сборка ядра / Kernel Build | scm@a9b0f71b66dc, SMP PREEMPT, 2025-08-27 |
| База ядра / Kernel Base | Qualcomm LA.UM.9.1.r1-09200-SMxxx0.0 |
| Версия Android | Android 11 (API 31) |
| Сборщик / Built by | Tencent Level Infinite (Zing build system) |
| Bootloader | Заблокирован / Locked, avb=vbmeta, dm-verity включён |
| KASLR | Включён (можно обойти через perf_event_open) / Enabled (bypassable) |
| Защита ядра / Protections | KPTI ✅ / PAN ✅ / SCS ❌ / CFI ❌ / PAC ❌ |
| SELinux | Enforcing |
| Аппаратный ID | GR0006 (Logitech HALO CN) |
| Программный партнёр | Logitech (оборудование) + Tencent Games (ПО) |
📥 Ссылка для скачивания с Mega.nz / Download Link:
[https://mega.nz/folder/I2MUkQyD#n6bG8gzsjqKNdpk8napniQ]Включённые файлы / Included files:
Logitech-HALO_CN-SQ02K.60.0228-USER.zip— полная прошивка (1.37 GB)boot.img— полный образ boot (64 MB)kernel— несжатое ядро ARM64 (35 MB)kernel.gz— сжатое ядро (15 MB)ramdisk— загрузочный ramdisk (87 KB)config.txt— полная конфигурация сборки ядра (61 KB)
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
| Пункт / Item | Описание / Note |
|---|---|
| Утечка KASLR / KASLR Leak | perf_event_open корректно работает через PERF_TYPE_SOFTWARE (paranoid=-1) |
| Гонка Futex PI / Race | EDEADLK (errno=35) — подтверждена достижимость пути взаимоблокировки |
| Извлечение символов / Symbol Extraction | Из kallsyms извлечено 37 символов (включая commit_creds, prepare_kernel_cred, init_task и др.) |
| Загрузка LD_PRELOAD | arm.so собирается корректно и может быть загружен и выполнен на устройстве |
| Пункт / Item | Причина / Reason |
|---|---|
| Qualcomm Bitmap RT Mutex | rt_mutex_adjust_prio_chain использует bitmap-очередь с приоритетами вместо стандартного rbtree |
| Нет waiter на стеке | Фрейм remove_waiter составляет всего 0x30 (48 байт), локального struct rt_mutex_waiter нет |
| Мёртвый код / Dead Code | У remove_waiter (0xCEAA0) нет прямых вызывающих в бинарнике ядра |
| Нет цепочки rb_erase | 0x105aeb0 — это функция работы с ring buffer, а не rb_erase |
| Жизненный цикл pi_state | Используется refcount+RCU вместо прямого kfree, в отличие от стандартного Linux |
| Big.LITTLE | Утечка KernelSnitch mm_struct не срабатывает на гетерогенных CPU A76+A53 |
| 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"