Loading... # 从GBL漏洞到Portal虚拟定位——2026安卓玩机全链路 最近搞机圈真的太热闹了,2026年3月份小米安全实验室披露了高通骁龙8 Elite Gen5芯片的GBL漏洞利用链,紧接着酷安上各种大佬纷纷跟进,什么免解BL的永久Root、重启不掉Root的方案全出来了,看得我眼花缭乱的 于是我就想着把这些散落在酷安帖子、GitHub仓库和安全研究论文里的技术碎片整理一下,写一篇从底层漏洞原理到上层应用实战的完整文章,顺便也研究一下Portal虚拟定位这个东西 话不多说,开始整活,个人小白,如有不足之处请谅解 > 本文仅供学习研究,严禁用于违法用途,后果自负 --- ## 一、GBL漏洞到底是什么东西 说实话一开始看到GBL这三个字母我也是懵的,后来查了半天资料才搞明白 GBL全称Generic Bootloader,通用引导加载程序,是Android 15+才引入的新组件。简单来说就是手机开机的时候,有一串引导流程: ``` PBL(掩模ROM) → XBL_SEC(EL3) → XBL_Loader → ABL(EL1) → GBL → Linux内核 ``` 问题就出在ABL加载GBL这一步 ### efisp分区的"盲目信任" 根据VoidSec Security发布的[白皮书](https://tryigit.dev/qualcomm-uefi-gbl-bootchain-zero-day-exploit),高通的ABL在加载GBL的时候有个很离谱的逻辑缺陷——它只检查efisp分区里的文件是不是有效的UEFI应用,**完全不验签** 更离谱的是,OEM厂商出货的设备里UEFI平台密钥(PK)根本没填,安全启动直接处于Setup Mode,相当于门锁了但钥匙插在上面没拔 ```c // ABL里的逻辑,简化版 Filter.PartitionLabel = L"efisp"; Status = GetBlkIOHandles(..., &Filter, ...); if (!EFI_ERROR(Status)) { ``` LoadGenericBootloader(HandleInfoList[0].Handle); // 直接加载,不验签,离谱 ``` } ``` 也就是说只要你能往efisp分区写一个EFI可执行文件,重启后ABL就会以EL1(内核级)权限执行它 ### Fastboot命令的参数注入 但是efisp分区受SELinux保护,普通用户写不进去啊 然后研究人员发现高通的Fastboot OEM诊断命令`set-gpu-preemption`有参数校验缺失的问题,正常这个命令是用来做GPU抢占测试的,但你可以在后面追加任意内核启动参数: ```bash fastboot oem set-gpu-preemption 0 androidboot.selinux=permissive fastboot continue ``` 就这么两条命令,SELinux直接从Enforcing降到Permissive,所有安全策略变成"只记录不拦截",efisp分区的写入限制形同虚设 ### RPMB状态覆写 等未签名的EFI应用在EL1权限下跑起来之后,它会扫描UEFI句柄数据库,找到高通专有的VerifiedBoot协议,然后调用`VBRwDeviceState`函数直接改RPMB里的设备解锁状态 ```c // 读取当前设备状态 VbProtocol->VBRwDeviceState(VbProtocol, READ_CONFIG, DevInfoBuffer, 3344); // 改解锁标志 DevInfoBuffer[4] = 0x01; // is_unlocked = true DevInfoBuffer[8] = 0x01; // 闪写授权 = true // 写回RPMB VbProtocol->VBRwDeviceState(VbProtocol, WRITE_CONFIG, DevInfoBuffer, 3344); ``` RPMB本来是硬件级安全存储,需要256位HMAC密钥才能写,但在ABL的工厂配置阶段TrustZone会暴露特殊的UEFI协议,允许无需外部加密令牌就能更新解锁状态 三重漏洞叠在一起,完整攻击链就是这样: ``` SELinux降级 → efisp写入 → 未签名代码执行 → RPMB状态覆写 → BL解锁 ``` ### 影响范围 这个漏洞影响骁龙8 Elite Gen5和骁龙8 Elite两个平台,除了三星(用自研S-Boot)基本全中招 小米17系列、红米K90 Pro Max、小米15 Pro这些都已验证成功。高通3月初就提供了补丁,小米HyperOS 3.0.304.0也封堵了,但可以通过降级到2月及更早的补丁版本来绕过 然后酷安大佬"某贼"在4月23号又搞了个大新闻,直接把骁龙8 Elite(上一代)也攻破了,小米15 Pro成功解锁BL,老旗舰迎来第二春 --- ## 二、三条Root路线怎么选 理论分析完了,接下来是实战部分。酷安上三位大佬分别分享了不同的方案,我整理了一下 ### 路线A:传统解BL+efisp(@petitami) 这个方案是[@petitami](https://www.coolapk.com/feed/70926018)分享的,适用真我GT8 Pro、Neo8、一加15/15T/Ace6T等ColorOS 16设备 核心思路是:正常解BL → 刷Root → 刷efisp → 锁回BL → 密钥全绿 具体步骤: 1. 先线刷纯净系统,别装过温控模块或者dtbo超频之类的东西 2. 正常申请解锁BL 3. 刷入KernelSU,推荐SukiSU,别装隐藏模块,留个Next配合LSPosed就行 4. 用MT管理器在`/dev/block/by-name/`里找到`vendor_boot`,复制到内部存储(记得加.img后缀) 5. 把vendor_boot.img放进vendor_boot_patcher打补丁,不打这个补丁ksud会被频繁杀 6. 重启到Fastboot刷入补丁后的vendor_boot 7. 从[GitHub](https://github.com/superturtlee/gbl_root_canoe/releases)下载对应机型的efi文件刷入efisp分区 ```bash fastboot flash efisp ABL_with_superfastboot.efi ``` 8. 刷完efisp**千万别重启**,直接进recovery ```bash fastboot reboot recovery ``` 9. recovery里格式化数据 10. 进系统确认正常后锁回BL ```bash fastboot flashing lock ``` 这个方案做完之后BL是锁定的没有黄字,TEE不会假死,密钥全绿,微信指纹正常,环境非常干净 不过要注意千万别装TEE相关模块,只能刷带boot字样的分区(boot、vendor_boot、init_boot),官改、dtbo这些绝对不能碰 ### 路线B:免解BL临时Root(@muzhou07) 这个是[@muzhou07](https://www.coolapk.com/feed/71177178)的方案,适用小米17 Pro等骁龙8e5设备,理论上所有受GBL漏洞影响的机型都能用 核心思路就是利用前面说的SELinux降级命令+特殊版KernelSU,不解BL直接获取临时Root 操作非常简单: ```bash # 进fastboot adb reboot bootloader # SELinux降级 fastboot oem set-gpu-preemption 0 androidboot.selinux=permissive fastboot continue ``` 手机重启后打开特殊版KernelSU点越狱就行了,然后按顺序装模块:Zygisk → LSPosed → 热重启 点热重启的执行按钮,通知栏出现"LSPosed已加载"就成功了 这个方案的好处是不解BL不清数据,操作简单,但Root重启就没了,每次都要重新搞 ### 路线C:免解BL永久Root(@音杰_63) 这个是[@音杰_63](https://www.coolapk.com/feed/70834280)的方案,在真我Neo8上测试成功,思路是在路线B的基础上刷入efisp实现内建Fastboot,然后通过内建Fastboot刷入Root分区 步骤稍微复杂一点: 1. 先通过深度测试(前提条件) 2. 按路线B获取临时Root 3. 给MT管理器Root权限 4. 从[superturtlee/gbl_root_canoe](https://github.com/superturtlee/gbl_root_canoe)下载对应机型efisp,解压出`ABL_with_superfastboot.efi` 5. 用Scene备份还原或爱玩机工具箱把efi文件刷入efisp分区 6. 提取boot、vendor_boot、init_boot分区到电脑 7. 重启看有没有小字(内建Fastboot入口),有的话5秒内按音量下进 8. 如果正常进系统了,删掉临时KernelSU,换你喜欢的Root管理器修补init_boot 9. 在小字界面进内建Fastboot刷入修补后的分区 10. `fastboot reboot`重启进系统确认Root 这个方案做完BL保持锁定,TEE正常,密钥全绿,重启不掉Root,是三条路线里环境最完美的 但是!变砖概率极大,@音杰_63自己都说了只能刷带boot字样的分区,官改dtbo绝对不能碰,卡屏了可能需要清数据,清完还不行就只能送售后了 ### 三条路线对比一下 - **路线A**:需要解BL+清数据,Root永久,难度中等,风险低 - **路线B**:不需要解BL,Root临时(重启失效),难度简单,风险中等 - **路线C**:不需要解BL,Root永久,难度困难,风险高 怎么选就看你自己了,我个人的话如果设备支持路线A就选A,最稳妥 --- ## 三、Portal虚拟定位 Root搞定了接下来就是装模块了,这里主要讲Portal这个虚拟定位工具 ### 为什么选Portal 市面上虚拟定位工具挺多的,FakeLocation、GPSJoyStick、豆豆守护之类的,但Portal跟它们不一样,它是基于LSPosed的系统级Hook方案 区别在于Portal不仅Hook了GPS返回值,还同时伪造了WiFi扫描结果、基站信息、传感器数据(加速度计、陀螺仪),甚至模拟了GPS卫星状态。目标应用不管用哪种方式获取位置,拿到的都是一致的假数据 ### 安装配置 1. 从[GitHub](https://github.com/CrackerCat/Portal)或者官方QQ群(599533037)下载APK 2. 装好Portal 3. 打开LSPosed管理器启用Portal模块 4. 在Portal作用域里勾选目标应用(比如"运动世界校园") 5. 重启手机 装好之后在Portal设置里调一下参数,针对运动世界校园的话建议这样配: - 移动速度:2.5~3.5 m/s,模拟正常慢跑 - GPS精度:5~15米 - 海拔:查一下学校所在地的实际海拔填进去 - 传感器模拟:开 - WiFi模拟:开 - 基站模拟:开 ### 运动世界校园实战 运动世界校园的检测机制比较复杂,除了GPS还会检测配速合不合理、路线上有没有经过打卡点、传感器数据跟跑步行为一不一致、WiFi基站信息跟GPS位置匹不匹配 Portal的全面Hook刚好能覆盖这些检测点,不过实战的时候还是要注意: - 速度保持匀速,别突然加速或停下来 - 路线要经过所有打卡点,别走直线捷径 - 总时间要跟距离匹配,2km的话配速6-8分钟比较合理 - Portal记得保持最新版 --- ## 四、最后说两句 这次GBL漏洞事件其实挺值得深思的,简单说几个点: - UEFI框架虽然开发方便但代码库庞大,攻击面也大了,OEM厂商的定制修改更是雪上加霜 - 平台密钥没填这种低级错误居然能出现在出货设备上 - Fastboot诊断命令参数不校验,工厂用的功能直接变成攻击向量 - RPMB看着很安全但ABL工厂阶段暴露的特殊协议可以直接绕过 对普通用户的话就一句话:**及时更新系统补丁,别在主力机上折腾这些** --- ## 参考 - [Portal GitHub](https://github.com/CrackerCat/Portal) - [gbl_root_canoe](https://github.com/superturtlee/gbl_root_canoe) - [GBL漏洞白皮书](https://tryigit.dev/qualcomm-uefi-gbl-bootchain-zero-day-exploit) - [Android Authority报道](https://www.androidauthority.com/qualcomm-snapdragon-8-elite-gbl-exploit-bootloader-unlock-3648651/) - 酷安[@petitami](https://www.coolapk.com/feed/70926018) - 酷安[@muzhou07](https://www.coolapk.com/feed/71177178) - 酷安[@音杰_63](https://www.coolapk.com/feed/70834280) - Portal QQ群:599533037 - Portal Telegram:[t.me/portal_fuqiuluo](https://t.me/portal_fuqiuluo) 最后修改:2026 年 04 月 24 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏