NanoTurtle
本站站長,作息及其不規律,主業製造Bug,副業Debug.
NanoTurtle的小窝

S24 Ultra One UI 8.5国行免解锁 Root 实践:基于 CVE-2026-43499 的临时提权方案

摘要生成中
记录Samsung Galaxy S24 Ultra国行(SM-S9280,OneUI 8.5)利用CVE-2026-43499漏洞实现免解锁临时Root的完整过程。方案从KASLR滑动恢复、管道内存准备到伪造workqueue注入,适配中需修正国行独有的kmalloc_caches偏移、清理残留进程的管道配额占用、解决worklist竞态导致panic等问题。最终封装为一键运行App,不解锁bootloader、不熔断KNOX,但每次重启后需重新运行。
— AI生成,仅供参考


S24 Ultra 国行免解锁 Root 实践

本文记录 Samsung Galaxy S24 Ultra(SM-S9280 国行)在不解锁 bootloader、不熔断 KNOX 的前提下实现临时 Root 的完整过程:从方案选型、漏洞链原理,到适配内核常量时踩过的坑,以及最终落地为可一键运行的 Android App 的结果。


一、背景:为什么需要”免解锁” Root

Samsung 国行机型解锁 bootloader 的成本极高:解锁即熔断 KNOX e-fuse(不可逆),部分功能(Secure Folder、Samsung Health、Samsung Pay 等)永久失效;同时 Samsung 的 rev bit(SW REV)机制让降级/自定义内核变得极其困难——一旦官方新固件把 rev bit 熔到更高位,任何旧版本 bootloader 都无法刷回。

我的设备经历了一路”折腾”:从 rev-4 的 One UI 8.0 开始,刷到 8.5 后 rev bit 被熔到 6,官方 bootloader 重新锁定,自定义内核全部被 AUTH 校验拦下。此时唯一剩下的路径就是内核漏洞——不碰 bootloader,直接在运行时提权。

二、方案选型:CVE-2026-43499

经过调研,最终选择 CVE-2026-43499:一个通过浏览器/应用域竞态实现的内核 RCE,参考实现在 Galaxy S24 系列(e3q 平台)上验证可用。核心链路:

  1. KASLR 滑动恢复:通过 tracefs 侧信道恢复内核基址,定位符号
  2. 管道内存准备:利用 pipe 页重排 + mm 结构泄漏,获得可控的内核内存
  3. CFI/物理内存 oracle:通过 fops 路由 + 管道页获得任意内核读写
  4. root 提权:伪造 call_usermodehelper work 注入系统 workqueue,以 root 身份执行 payload
  5. KernelSU late-load:以 root 加载 kernelsu.ko,由 KernelSU Manager 接管 root 管理与模块生态

三、适配过程中踩过的坑

漏洞链本身是公开研究,真正的工程量在适配具体固件。以下是几个印象最深的坑:

1. kmalloc_caches 偏移:同平台不同构建也天差地别

e3q 平台的 S928U1(美版)与 S9280(国行)虽然同为 6.1.145 GKI 内核,但构建号不同(33419968 vs 3254743),kmalloc_caches 的偏移完全不同(0x176c6f8 vs 0x176cbb8)。市面上流传的”通用工具”很多直接套用美版偏移,导致在国行上 16/16 次全部失败在内存准备阶段。这是第一个需要修正的点。

2. F_SETPIPE_SZ EPERM:不是内核限制,是残留进程污染配额

exploit 在准备管道时需要把管道扩容到 32 slots,设备上却反复出现 F_SETPIPE_SZ: Operation not permitted。起初怀疑是 Samsung 内核加了限制,反汇编 pipe_fcntl 后确认内核逻辑完全是标准的(pipe-max-size 1MB、soft limit 16384 页都正常)。最终定位:之前失败的 exploit 尝试留下了一个 cve43499-hold 进程,握着 480 个已扩容的管道,把 uid 2000 的 pipe_bufs 配额占满了。kill 掉残留进程后,压力测试从 261 个管道失败恢复到 400/400 全通过。

3. worklist 竞态:注入 workqueue 时的”定时炸弹”

root 阶段把伪造 work 注入 system_unbound 池的 worklist 时,如果显示驱动恰好同时入队真实 work,exploit 对链表头部的覆盖会把真实 work 变成”孤儿”——它保持 PENDING 但链表已断,下一次 cancel_work_sync(比如屏幕刷新)就会触发 __list_del_entry_valid BUG 直接 panic。这正是多次”成功拿到 root 几分钟后才重启”的元凶。

修复方式:注入前立即重查 worklist 仍为空,若期间有真实 work 入队则回滚计数器、放弃本次尝试。加上运行期间熄屏(让显示驱动静默),这个崩溃源基本堵死。

4. KDP 与模块选择

Samsung 内核有 KDP/RKP/DEFEX 防御。普通 GKI 的 kernelsu.ko 在国行上可以加载并响应(version 32525),而官方参考(S928U1)使用了打了 Samsung KDP 补丁的变体。目前普通模块在国行上工作正常,kdp 变体作为备选。

四、使用流程

  1. 安装并启动 Shizuku(无线/有线 ADB 授权)
  2. 打开 App,点击”开始 Root”(建议熄屏运行)
  3. 等待日志出现 临时 root 已获得
  4. 安装 KernelSU Manager(v3.2.5),强制停止后重开,显示”工作中 \<LKM> [越狱模式]”
  5. 按需安装模块:Zygisk-Next → LSPosed → KnoxPatch(Secure Folder 等 KNOX 功能回归)

五、注意事项

  • 停在 DZF2,不要升级:新固件会修复 CVE-2026-43499
  • exploit 是概率性的:失败就多试几次,必要时重启手机(成功率随尝试累加)
  • 运行期间建议熄屏;运行中卡死/重启属内核 exploit 的正常现象
  • 每次重启手机后都需要重新运行一次 App(bootloader 锁定,无法持久化内核模块)
  • 本方案不熔断 KNOX:e-fuse 保持原样(App 设置页可实时检测 ro.boot.warranty_bit

六、致谢

  • [IonStack / NebuSec] 的 CVE-2026-43499 公开安全研究
  • Root-My-Galaxy 免解锁 root 参考工程
  • KernelSU 及 Zygisk-Next / LSPosed / KnoxPatch 生态

七、源码

项目已开源(GPL-3.0):github.com/nanoturtle1145/root-my-s9280

免责声明:本文及项目仅用于安全研究与自有设备维护,使用内核漏洞存在系统崩溃、数据丢失风险,请勿用于非法用途。

别检查我的网站了喵 本文采用 CC BY-NC-SA 4.0 国际许可协议进行许可。 转载请注明作者及原文链接,并遵循相同方式共享原则。 链接:https://blog.nanoturtle.cn/index.php/2026/08/16/s24-ultra-oneui-root-cve-2026-43499/
# # # #
首页      科技      S24 Ultra One UI 8.5国行免解锁 Root 实践:基于 CVE-2026-43499 的临时提权方案
NanoTurtle的头像

NanoTurtle

文章作者

发表回复

textsms
account_circle
email

NanoTurtle的小窝

S24 Ultra One UI 8.5国行免解锁 Root 实践:基于 CVE-2026-43499 的临时提权方案
S24 Ultra 国行免解锁 Root 实践 本文记录 Samsung Galaxy S24 Ultra(SM-S9280 国行)在不解锁 bootloader、不熔断 KNOX 的前提下实现临时 Root 的完整过程:从方案选型、漏洞链原理…
扫描二维码继续阅读
2026-08-16
登录

ACGN Android Arch Linux C# C++ ColorOS刷机 IT兴趣 KernelSU Linux macOS Magisk模块 Python Python Root 权限 share Steam Ubuntu WinUI WinUI3 一加刷机 三星刷机 东方Project 个人博客 中文输入法 人工智能 同人游戏 图像分类 域名管理 学生生活 数码设备 新年快乐 新年祝福 机器学习 游戏 科技 空气质量 终端美化 网站迁移 节日问候 语言设置 迁移学习 音乐 黑苹果