# 近期被利用之「免解鎖 Bootloader 取得 Root」漏洞列表
> 用途:資安研究、風險追蹤與防護評估。
>
> 注意:請勿用於未經授權的測試或攻擊行為。
## 1. 已知漏洞與攻擊鏈總覽
### 1.1 漏洞 1:CVE-2025-21479(Qualcomm Adreno GPU micronode 記憶體破壞)
此漏洞出現在 Qualcomm Adreno GPU 的 micronode 指令處理流程中;公開描述指出,攻擊者可藉由特定指令序列觸發未授權命令執行與記憶體破壞。公開的 GitHub PoC 為:
- <https://github.com/zhuowei/cheese>
- <https://github.com/sarabpal-dev/cheese-cake>
若漏洞可被成功鏈接到系統提權路徑,可能進一步取得臨時 Root 權限,但實際影響仍會受到 SoC、GPU 世代、韌體版本與修補狀態影響。
社群實測回報(其他機型待驗證):
- 來源:Coolapk 使用者「@羊了个羊了个羊了个羊」
- 連結:<https://www.coolapk.com/feed/70655251?s=NTFjZmEwYzkyN2NkOGUyZzY5YzYxOTM4ega1601>
- 重點:貼文內容描述在 Redmi Note 12 Turbo(標籤含 `#红米Note12Turbo`)結合 <https://github.com/zhuowei/cheese> 進行測試,回報可達到臨時 Root 相關效果。
- 註記:此為社群單點回報,建議以「可行跡象」歸檔,後續仍需多機型與多版本交叉驗證。
---
### 1.2 漏洞 2:ABL Cmdline Injection(fastboot OEM / ABL 命令列注入漏洞鏈)
此類漏洞鏈的核心在於 Qualcomm ABL(Android Bootloader)對 `fastboot oem` 某些參數的驗證不完整,導致不受信任的輸入被帶入 kernel cmdline。公開討論中,研究者展示了可藉由 OEM 指令額外注入如 `androidboot.selinux=permissive` 之類的啟動參數,進而削弱開機後的強制安全限制。
Qualcomm 對應修補提交也直接將問題描述為:
`Fix propagation of untrusted input into kernel cmdline`
因此,這條鏈本身通常不是最終目的,而是作為後續提權、臨時 Root、甚至免解鎖 Bootloader 操作的前置條件之一。
#### 1.2.1 補充:其他已知利用方式與組合鏈
除了常見的:
```bash
fastboot oem set-gpu-preemption 0 androidboot.selinux=permissive
```
另有相似利用方式:
```bash
fastboot oem set-hw-fence-value 0 androidboot.selinux=permissive
```
這類問題的核心相同,都是原本只應接受數值參數的 `fastboot oem` 指令,卻可能將額外輸入內容帶入 kernel cmdline,進而注入 `androidboot.selinux=permissive`,使系統於開機後進入 **SELinux permissive** 狀態,而非 enforcing。
已知情況如下:
- `set-gpu-preemption` 這一路徑可用於關閉 SELinux 強制執行,屬於 **Qualcomm 限定**,目前已存在修補提交。
- `set-hw-fence-value` 為另一個相似變體,亦已修補;公開討論中指出此類問題屬於較早期引入的老漏洞,理論上可能適用於更多 Qualcomm SoC。
- 版本分佈觀察(社群回報):目前較多可利用回報集中在 **HyperOS 2 / HyperOS 3**;其他版本仍需更多樣本與獨立驗證。
此外,在 **Xiaomi 裝置** 上,公開討論中亦提到可配合使用下列系統服務呼叫:
```bash
service call miui.mqsas.IMQSNative 21 i32 1 s16 "命令" i32 1 s16 "参数列表" s16 "输出路径" i32 600
```
其重點在於:若可成功呼叫對應服務介面,可能以 **root 權限執行任意命令**。
不過,這裡的順序很重要:必須先透過 Qualcomm ABL cmdline injection 將系統切至 `SELinux permissive`,之後才有機會配合 Xiaomi `IMQSNative` / `MQSAS` 相關問題形成後續提權鏈。
此類利用鏈大致可整理為:
1. 先透過 ABL 類漏洞注入 `androidboot.selinux=permissive`
2. 使系統以 **SELinux permissive** 狀態啟動
3. 再呼叫 Xiaomi 系統服務 `miui.mqsas.IMQSNative`
4. 進一步取得 **root 身份任意命令執行**
在此情況下,可形成 **完整 root 權限取得**。
另外,公開討論中也提到:
對於已經處於 **SELinux permissive** 的系統,即使不是 Xiaomi 裝置,也可能存在其他提權方式,例如利用 isolated service / isolated process 相關技巧進一步提權。
參考資料:
- `set-gpu-preemption` 修補提交:
<https://git.codelinaro.org/clo/la/abl/tianocore/edk2/-/commit/fb8e864254cdc370670233e3cb73a2b18ff33c9f>
- `set-hw-fence-value` 修補提交:
<https://git.codelinaro.org/clo/la/abl/tianocore/edk2/-/commit/78297e8cfe091fc59c42fc33d3490e2008910fe2>
- Magica:
<https://github.com/vvb2060/Magica>
- 討論來源:
<https://t.me/vvb2060_Channel/17>
<https://t.me/vvb2060_Channel/19>
> 註:
> - `CVE-2025-21479` 為已公開編號之 GPU 漏洞。
> - `ABL Cmdline Injection` 為整理用途的技術性名稱,用來統稱 fastboot OEM / ABL 參數驗證不完整、可導致 kernel cmdline 注入的漏洞鏈。
### 1.3 漏洞 3:GBL / UEFI Secure Boot Chain 類漏洞鏈(gbl_root_canoe)
參考專案:
- <https://github.com/superturtlee/gbl_root_canoe>
`gbl_root_canoe` 是近期針對新一代 Qualcomm 平台公開的 GBL / UEFI / ABL 相關研究專案。
依照其公開說明,該專案並非單純修改 Android userspace,而是介入 **GBL / UEFI / ABL / efisp** 這一層的啟動鏈流程。
其核心風險可概括為:
- 影響範圍集中於較新的 Qualcomm 平台,尤其是 **Snapdragon 8 Elite Gen 5 / Snapdragon 8 Gen 5** 相關裝置。
- 利用點位於 Android 系統啟動前的 boot chain 階段。
- 可能透過替換、修補或重新封裝啟動鏈元件,改變裝置的啟動狀態、驗證流程或 fastboot 行為。
- 部分公開說明提到 `lockmode` / `unlockmode` 設計,顯示此類工具可能具備讓裝置在特定情境下呈現類似「假上鎖」狀態的能力。
- 此類漏洞鏈與傳統 Android userspace 提權不同,風險層級更接近 **bootloader / secure boot chain bypass**。
目前公開資料中提到的可能受影響平台,整理於 3.4「待驗證裝置」。
> 註:
> 此處的「可能受影響」應理解為公開專案或社群研究中提到的觀察範圍,不代表每一台裝置、每一個韌體版本都已確認可利用。
---
### 1.4 漏洞 4:MTK Preloader 類漏洞鏈(OPPO / Realme / OnePlus)
參考專案:
- <https://github.com/Shocked-Cat/oppo-mtk-fastboot-unlock>
此類研究主要針對 **MediaTek 平台**,尤其是 OPPO / Realme / OnePlus 等 OPlus 系列裝置。
公開專案描述指出,其核心方向是修改 factory preloader,並透過 mtkclient 寫入 preloader,以開啟 fastboot 存取或進一步解鎖 Bootloader。
其核心風險可概括為:
- 攻擊面位於 **MediaTek boot chain / preloader** 階段。
- 不是 Android userspace 層級漏洞。
- 可能透過修改 preloader 行為,改變裝置是否能進入 fastboot、是否能進一步執行解鎖流程。
- 在部分裝置上,解鎖或修改 boot chain 後可能造成 secure boot 狀態改變。
- 是否能達成免解鎖 Bootloader Root,需視裝置是否仍驗證後續映像、AVB / vbmeta 狀態、preloader 加密與廠商客製檢查而定。
> 備註:
> MTK 裝置的可利用性高度依賴廠商實作。即使同為 MTK SoC,不同品牌、不同 preloader、不同 DA / auth 策略,結果也可能完全不同。
---
### 1.5 漏洞 5:MediaTek Secure Boot Chain bypass(fenrir)
參考專案:
- <https://github.com/R0rt1z2/fenrir>
`fenrir` 是針對 MediaTek secure boot chain 的公開 PoC。
其 README 描述該漏洞影響 **Nothing Phone (2a)** / **CMF Phone 1**,並可能影響其他 MediaTek 裝置。
公開說明中的重點包含:
- 漏洞位於 **MediaTek secure boot chain**。
- 問題核心是特定條件下,有元件未被正確驗證。
- 該 PoC 可在 Preloader 之後破壞 secure boot chain。
- README 提到可達成 **EL3 code execution**。
- 目前明確支援 Nothing Phone (2a),CMF Phone 1 則已知可行但支援仍不完整。
- README 亦提到 PoC 中包含 spoof lock state 的能力,用於在裝置實際處於非標準狀態時呈現 locked 狀態。
可能受影響裝置清單整理於 3.2「Nothing / CMF」。
---
### 1.6 漏洞 6:Dirty Pipe(CVE-2022-0847)
Dirty Pipe(CVE-2022-0847)是 Linux kernel 中曾被公開利用的本地提權漏洞。
此漏洞與 pipe buffer / page cache 寫入行為有關,攻擊者在特定條件下可能修改原本只讀的檔案快取內容,進而造成權限提升。
在 Android 裝置上,Dirty Pipe 曾被研究者用於取得 temporary root / root shell。
因此,它可以被歸類為「可能直接導向暫時 Root」的漏洞類型,而不是像 ABL Cmdline Injection 那樣只屬於前置條件型漏洞。
參考資料:
- CVE-2022-0847:<https://nvd.nist.gov/vuln/detail/CVE-2022-0847>
- Dirty Pipe 說明:<https://dirtypipe.cm4all.com/>
- Android 相關研究案例:<https://github.com/polygraphene/DirtyPipe-Android>
- Android 相關研究案例:<https://github.com/tiann/DirtyPipeRoot>
## 2. 可能被利用的後續攻擊面
### 2.1 遠端完整性驗證繞過:RKA / RKP / Key Attestation
參考專案:
- <https://github.com/vocolboy/RemoteKeyAttestation>
RKA / RKP 本身並不是用來直接取得 root 權限的漏洞,而是與 Android 裝置信任判斷、Key Attestation、Play Integrity、Remote Key Provisioning 相關的驗證機制與研究方向。
在「免解鎖 Bootloader 取得 Root」或「假上鎖」相關攻擊鏈中,RKA / RKP 比較適合被視為**後續完整性驗證繞過或信任狀態偽裝的攻擊面**,而不是第一階段提權漏洞。
#### 2.1.1 為何與免解鎖 Bootloader Root 有關?
Android 的遠端驗證機制通常會關注裝置是否處於可信狀態,例如:
- Bootloader 是否為 locked
- Verified Boot 狀態是否正常
- 裝置是否使用可信的 boot key
- Key Attestation 是否來自硬體或可信環境
- Play Integrity 是否能取得較高等級結果,例如 `STRONG_INTEGRITY`
因此,如果攻擊者已經透過其他漏洞達成以下狀態:
1. 免解鎖 Bootloader 取得 root
2. Boot chain 被修改但裝置仍呈現 locked
3. 透過 GBL / UEFI / ABL 類漏洞形成假上鎖狀態
4. 在 root 後嘗試隱藏修改痕跡
那麼 RKA / RKP / Key Attestation 相關攻擊就可能被用來處理下一階段問題:
**如何讓遠端服務仍然相信裝置處於可信狀態。**
#### 2.1.2 在攻擊鏈中的位置
```mermaid
flowchart TD
A[Boot chain / Kernel / GPU / Service 漏洞] --> B[取得 root 或修改 boot chain]
B --> C[形成假上鎖或非標準可信狀態]
C --> D[嘗試繞過 Key Attestation / Play Integrity]
D --> E[影響遠端服務對裝置可信狀態的判斷]
```
#### 2.1.3 風險定位
| 分類 | 內容 |
| --- | --- |
| 類型 | Post-root / Post-bootchain-compromise Integrity Bypass |
| 是否直接取得 root | 否 |
| 是否可能用於免解鎖 Bootloader 攻擊鏈 | 是 |
| 主要用途 | 影響遠端完整性驗證結果 |
| 相關機制 | Key Attestation、RKA、RKP、Play Integrity、STRONG_INTEGRITY |
| 依賴條件 | 通常需要先取得 root、修改 boot chain,或形成假上鎖狀態 |
| 風險重點 | 遠端服務可能被誤導,錯判裝置仍處於可信狀態 |
## 3. 裝置受影響清單
### 3.1 Xiaomi / Redmi / POCO
| codename | 手機型號名稱 | 平台 | Android 版本 | 安全性修補日期 | 漏洞名稱 / CVE | 狀態 | 備註 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| cupid | Xiaomi 12 | Snapdragon 8 Gen 1 | Android 12 | N/A | CVE-2025-21479 | 未測試 |
| zeus | Xiaomi 12 Pro | Snapdragon 8 Gen 1 | Android 12 | N/A | CVE-2025-21479 | 未測試 |
| mayfly | Xiaomi 12S | Snapdragon 8+ Gen 1 | Android 12 | N/A | CVE-2025-21479 | 未測試 |
| unicorn | Xiaomi 12S Pro | Snapdragon 8+ Gen 1 | Android 12 | N/A | CVE-2025-21479 | 未測試 |
| thor | Xiaomi 12S Ultra | Snapdragon 8+ Gen 1 | Android 12 | N/A | CVE-2025-21479 | 未測試 |
| fuxi | Xiaomi 13 | Snapdragon 8 Gen 2 | Android 13 | N/A | ABL Cmdline Injection | 未測試 |
| nuwa | Xiaomi 13 Pro | Snapdragon 8 Gen 2 | Android 13 | N/A | ABL Cmdline Injection | 未測試 |
| ishtar | Xiaomi 13 Ultra | Snapdragon 8 Gen 2 | Android 13 | N/A | ABL Cmdline Injection | 未測試 |
| houji | Xiaomi 14 | Snapdragon 8 Gen 3 | Android 14 | N/A | ABL Cmdline Injection | 已測試 |
| shennong | Xiaomi 14 Pro | Snapdragon 8 Gen 3 | Android 14 | N/A | ABL Cmdline Injection | 未測試 |
| aurora | Xiaomi 14 Ultra | Snapdragon 8 Gen 3 | Android 14 | N/A | ABL Cmdline Injection | 未測試 |
| dada | Xiaomi 15 | Snapdragon 8 Elite | Android 15 | N/A | ABL Cmdline Injection | 未測試 |
| haotian | Xiaomi 15 Pro | Snapdragon 8 Elite | Android 15 | N/A | ABL Cmdline Injection | 未測試 |
| xuanyuan | Xiaomi 15 Ultra | Snapdragon 8 Elite | Android 15 | N/A | ABL Cmdline Injection | 未測試 |
| pudding | Xiaomi 17 | Snapdragon 8 Elite Gen 5 | Android 16 | N/A | ABL Cmdline Injection | 未測試 |
| pandora | Xiaomi 17 Pro | Snapdragon 8 Elite Gen 5 | Android 16 | N/A | ABL Cmdline Injection | 未測試 |
| popsicle | Xiaomi 17 Pro Max | Snapdragon 8 Elite Gen 5 | Android 16 | N/A | ABL Cmdline Injection | 未測試 |
| nezha | Xiaomi 17 Ultra | Snapdragon 8 Elite Gen 5 | Android 16 | N/A | ABL Cmdline Injection | 未測試 |
| liuqin | Xiaomi Pad 6 Pro | Snapdragon 8+ Gen 1 | Android 13 | N/A | CVE-2025-21479 | 未測試 |
| yudi | Xiaomi Pad 6 Max 14 | Snapdragon 8+ Gen 1 | Android 13 | N/A | CVE-2025-21479 | 未測試 |
| sheng | Xiaomi Pad 6S Pro 12.4 | Snapdragon 8 Gen 2 | Android 16 | N/A | ABL Cmdline Injection | 未測試 |
| uke | Xiaomi Pad 7 / POCO Pad X1 | Snapdragon 7+ Gen 3 | Android 16 | N/A | CVE-2025-21479 | 未測試 |
| muyu | Xiaomi Pad 7 Pro | Snapdragon 8s Gen 3 | Android 16 | N/A | ABL Cmdline Injection | 未測試 |
| yupei | Xiaomi Pad 8 | Snapdragon 8s Gen 4 | Android 16 | N/A | ABL Cmdline Injection | 未測試 |
| piano | Xiaomi Pad 8 Pro | Snapdragon 8 Elite | Android 16 | N/A | ABL Cmdline Injection | 未測試 |
| ruyi | Xiaomi MIX Flip | Snapdragon 8 Gen 3 | Android 14 | N/A | ABL Cmdline Injection | 未測試 |
| bixi | Xiaomi MIX Flip 2 | Snapdragon 8 Elite | Android 15 | N/A | ABL Cmdline Injection | 未測試 |
| babylon | Xiaomi MIX Fold 3 | Snapdragon 8 Gen 2 | Android 13 | N/A | ABL Cmdline Injection | 未測試 |
| goku | Xiaomi MIX Fold 4 | Snapdragon 8 Gen 3 | Android 14 | N/A | ABL Cmdline Injection | 未測試 |
| marble | Redmi Note 12 Turbo / POCO F5 | Snapdragon 7+ Gen 2 | Android 13 | 2026-02-01 | CVE-2025-21479 | 已測試 |
| ingres | Redmi K50 Gaming / POCO F4 GT | Snapdragon 8 Gen 1 | Android 12 | 2025-04-01 | CVE-2025-21479 | 已測試未成功 |
| diting | Redmi K50 Ultra / Xiaomi 12T Pro | Snapdragon 8+ Gen 1 | Android 12 | N/A | CVE-2025-21479 | 未測試 |
| mondrian | Redmi K60 / POCO F5 Pro | Snapdragon 8+ Gen 1 | Android 13 | N/A | CVE-2025-21479 | 未測試 |
| socrates | Redmi K60 Pro | Snapdragon 8 Gen 2 | Android 13 | N/A | ABL Cmdline Injection | 未測試 |
| vermeer | Redmi K70 / POCO F6 Pro | Snapdragon 8 Gen 2 | Android 14 | N/A | ABL Cmdline Injection | 未測試 |
| manet | Redmi K70 Pro | Snapdragon 8 Gen 3 | Android 14 | N/A | ABL Cmdline Injection | 未測試 |
| zorn | Redmi K80 / POCO F7 Pro | Snapdragon 8 Gen 3 | Android 15 | N/A | ABL Cmdline Injection | 未測試 |
| miro | Redmi K80 Pro / POCO F7 Ultra | Snapdragon 8 Elite | Android 15 | N/A | ABL Cmdline Injection | 未測試 |
| annibale | Redmi K90 / POCO F8 Pro | Snapdragon 8 Elite | Android 16 | N/A | ABL Cmdline Injection | 未測試 |
| myron | Redmi K90 Pro Max / POCO F8 Ultra | Snapdragon 8 Elite Gen 5 | Android 16 | N/A | ABL Cmdline Injection | 未測試 |
### 3.2 Nothing / CMF
| codename | 裝置 | 平台 | 狀態 | 備註 |
| --- | --- | --- | --- | --- |
| Pacman | Nothing Phone (2a) | MediaTek | 已公開支援 | fenrir README 明確列出 |
| Tetris | CMF Phone 1 | MediaTek | 已知可行,支援不完整 | fenrir README 明確提到 |
| PacmanPro | Nothing Phone (2a) Plus | MediaTek | release 中出現 | 需進一步驗證 |
| N/A | Vivo X80 Pro | MediaTek | 研究者提及可能受影響 | 需獨立驗證 |
### 3.3 OPPO / Realme / OnePlus
- 待補充。
### 3.4 待驗證裝置
以下為公開資料/專案提及但尚未獨立驗證之清單(來源見 1.3):
- Xiaomi 17 series
- Redmi K90 Pro Max
- OnePlus 15 / Ace 6T
- RedMagic 11 series
- Nubia Z80 Ultra