首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

OEMpocalypse:非特权 Android 应用程序可在三星、小米等设备上获取 root 权限

2026-09-14 1 阅读 约6分钟阅读 negura
分享:
字号:
← 研究 OEMpocalypse Now:从 Android 不受信任应用程序到 root 的通用利用策略 系列的第 1 部分,使用单一策略将非特权 Android 应用程序在 Samsung、小米和 Oppo/OnePlus/Realme 设备上进行 root。 Lukas Maar 2026 年 8 月 31 日 android madbugs 在 Android 上,每个第三方应用程序都在名为 untrusted_app 的沙盒上下文中运行。如果您询问五名进攻性安全研究人员如何从这种背景到根源,您很可能会得到五种不同的策略,并且每种策略都有自己的权衡。在这里,我描述了我采用的方案及其原因,并根据我自始至终用作衡量标准的三个属性进行了衡量: 可靠性,即无论启用哪种防御或自定义,都可以接近 100% 成功。可移植性,即以最少的每个内核版本、每个 OEM、每个芯片组或每个设备的调整来运行。通用性,即覆盖尽可能多的设备。其核心思想是仅针对三星和小米等原始设备制造商 (OEM) 编写的代码。具体来说,我以 OEM 特定的内核驱动程序中的释放后使用 (UAF) 页面为目标,使用 OEM 特定的沙箱转义来访问 OEM 的 SELinux 策略需要的驱动程序。简而言之,页面 UAF 是一种在内核释放物理内存页面后留下对物理内存页面的实时引用的错误,而沙箱逃逸是允许代码从较低权限进程跨越到较高权限进程的任何错误。然后,我将该策略实例化了三次,每个主要 Android OEM 一次,一路上发现了多个漏洞,并产生了覆盖所有三星旗舰设备(至少是 Galaxy S23 到 S26 系列和最近的 Z 系列)、大部分小米中端到旗舰设备以及最近的 Oppo、OnePlus 和 Realme 旗舰设备的链。图 1:引导加载程序锁定的 Galaxy S26 Ultra 上的三星端到端链。其他四台测试设备的录音位于“三链概览”中。第一篇文章解释了该策略背后的原因,并将其与两种替代方案进行了比较。后续帖子将提供这些链的技术细节。 TL;DR 策略:利用 OEM 特定内核驱动程序中的页面 UAF。如果 OEM 的 SELinux 策略将驱动程序限制在特权域后面,则首先通过 OEM 特定的沙箱逃逸来访问它。涉及的每个错误都存在于 OEM 代码中,而不是通用 Linux 或芯片组驱动程序中。原因:从正确的上下文到达的页面 UAF 可以提供稳定的物理页面级原语,该原语在很大程度上独立于内核版本、slab 强化、KASLR、CFI 和特定的手机型号,这正是武器化链所需要的。覆盖范围:同一策略的三个实例覆盖所有三星旗舰设备(至少是 Galaxy S23 到 S26 系列以及最近的 Z 系列)、大多数小米中端到旗舰设备以及最近的 Oppo、OnePlus 和 Realme 旗舰设备。概述 Android 内核攻击面 通用 Linux 内核漏洞 可从 untrusted_app 访问的芯片组驱动程序 OEMpocalypse 策略 第 1 阶段:逃离沙盒 第 2 阶段:页面 UAF 权衡三链概览 结论 Android 内核攻击面 在讨论 OEM 特定代码之前,有必要退后一步,看看非特权应用程序实际上可以在内核中访问哪些内容,以及每种内核错误为武器化应用程序提供了什么剥削。由于三层机制,该列表很短:通过 Android 的每个应用程序 UID 模型的标准 Unix 自主访问控制 (DAC)、SELinux 作为顶部的强制访问控制 (MAC) 层以及通过 seccomp 的系统调用过滤。 Android 上的每个第三方应用程序都在自己的 UID 下运行,在 untrusted_app SELinux 域(或其每个 API 级别的变体之一,例如 untrusted_app_32 )中,并在 seccomp 过滤器后面。 DAC 通过文件所有权和模式位来控制访问,SELinux 策略限制域可以访问的设备节点、套接字和文件系统路径,而 seccomp 则阻止应用程序调用系统调用的子集。综合影响是,如果不首先转移到特权更高的域,则大多数内核,特别是大多数驱动程序堆栈,根本无法访问。换句话说,DAC、SELinux 和 seccomp 一起定义了您开始的内核攻击面。为了具体说明这一点,我们以当前的旗舰产品线为例,例如三星 Galaxy S26 系列,并从 untrusted_app 进程中枚举内核攻击面。在这些设备上,列表大致如下: seccomp 中存在核心 Linux 系统调用表面,例如内存管理、VFS 层、futexes、计时器、基本网络和通过 /dev/binder 的 Binder。图形和其他媒体堆栈依赖于共享内存和 DMA 缓冲区 (DMA-BUF) 堆节点。 GPU 驱动程序在 Snapdragon 型号(例如 S26 Ultra)上公开为 /dev/kgsl-3d0,并通过 Exynos/Xclipse 型号(例如基本型号)上的 DRM 渲染节点公开
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱