QM4RS/CVE-2026-0023-Update-Ownership-PoC
GitHub: QM4RS/CVE-2026-0023-Update-Ownership-PoC
CVE-2026-0023 的完整概念验证项目,演示 Android 更新所有权警告被绕过的权限提升漏洞。
Stars: 6 | Forks: 3
# CVE-2026-0023 - Android 更新所有权信任绕过 PoC
一个完整的 Android 实验室环境,用于复现和研究 CVE-2026-0023。
本仓库演示了 CVE-2026-0023 如何允许普通安装器影响一个只能由系统控制的内部 Android 安装标志,从而导致在应用更新期间抑制 Android 的更新所有权警告。
该项目包含三个 Android 应用,它们模拟了真实的更新所有权工作流,并为观察易受攻击的行为提供了可复现的环境。
## 概述
Android 引入了更新所有权机制,以帮助应用、应用商店和企业环境维护受信任的更新链。
当应用注册了更新所有者时,如果另一个安装器尝试更新该应用,Android 会警告用户。
在正常情况下,此警告会告知用户该应用通常从不同的来源接收更新。
CVE-2026-0023 影响 Android 内部 `PackageInstallerService#createSessionInternal` 的包安装流程。
该问题与内部 `INSTALL_FROM_MANAGED_USER_OR_PROFILE` 安装标志的处理有关。
在易受攻击的版本中,在 Android 检查安装是否实际与管理用户或托管配置文件相关联之前,该标志没有被显式清除。
因此,普通安装器可以影响更新所有权行为,并导致 Android 抑制预期的更新所有权警告。
本仓库使用受控的概念验证环境演示了预期行为与易受攻击行为之间的差异。
## 快速直观对比
| 预期行为 | 易受攻击的行为 |
| ------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| Android 显示更新所有权警告。 | Android 仅显示通用的更新对话框。 |
|  |  |
## 漏洞信息
| 字段 | 值 |
| --------------------------------------- | --------------------------------------------------------------------- |
| CVE | CVE-2026-0023 |
| 组件 | Framework / PackageInstaller |
| 受影响文件 | `PackageInstallerService.java` |
| 受影响方法 | `createSessionInternal` |
| 漏洞类型 | 权限提升 |
| 严重性 | 高 |
| CVSS v3.1 | 7.8 |
| CVSS 向量 | `CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H` |
| 攻击向量 | 本地 |
| 攻击复杂度 | 低 |
| 所需权限 | 低 |
| 用户交互 | 无 |
| 范围 | 未改变 |
| 影响 | 通过未经授权的更新所有权行为进行权限提升 |
| Android 安全公告 | 2026 年 3 月 |
| Android 缺陷参考 | `A-459461121` |
| Google 列出的受影响 AOSP 版本 | Android 14, 15, 16, 16-qpr2 |
## 补丁信息
| 事件 | 值 |
| ----------------------------------------- | ------------------------------------------------------------ |
| Android 安全公告 | 2026 年 3 月 |
| 公告发布日期 | 2026 年 3 月 2 日 |
| 安全补丁级别部分 | 2026-03-01 |
| 公告完全修复的补丁级别 | 2026-03-05 或更高版本 |
| Android 缺陷参考 | `A-459461121` |
| AOSP 补丁 | `09055276288a68cf35b0f84ba32e28822f74ecf9` |
| 补丁标题 | `显式取消设置 INSTALL_FROM_MANAGED_USER_OR_PROFILE 标志` |
CVE-2026-0023 在 `2026-03-01` 安全补丁级别的漏洞详情下被列于 2026 年 3 月的 Android 安全公告中。
`2026-03-01` 或更高版本的 Android 安全补丁级别解决了与 `2026-03-01` 安全补丁级别相关的所有问题。
`2026-03-05` 或更高版本的 Android 安全补丁级别解决了与 `2026-03-05` 安全补丁级别及所有先前补丁级别相关的所有问题。
## 根本原因总结
易受攻击的行为与内部 `INSTALL_FROM_MANAGED_USER_OR_PROFILE` 标志的处理有关。
此标志旨在表示与管理用户或托管配置文件相关的安装行为。
官方 AOSP 补丁在 Android 检查安装是否实际属于组织管理的用户之前,显式清除了此标志。
修复后的逻辑确保只有系统才能根据 `DevicePolicyManagerInternal#isUserOrganizationManaged(userId)` 的结果设置此标志。
简化的补丁逻辑:
```
final var dpmi = LocalServices.getService(DevicePolicyManagerInternal.class);
+ // Only the system should be able to set this flag - so ensure it is unset when not needed.
+ params.installFlags &= ~PackageManager.INSTALL_FROM_MANAGED_USER_OR_PROFILE;
if (dpmi != null && dpmi.isUserOrganizationManaged(userId)) {
params.installFlags |= PackageManager.INSTALL_FROM_MANAGED_USER_OR_PROFILE;
}
```
在打补丁之前,在此托管配置文件检查之前,该标志并未被显式清除。
打补丁后,Android 首先移除该标志,并且只有在系统确定该用户实际上由组织管理时才再次设置它。
这防止了普通安装器影响此内部安装会话状态。
## 仓库组件
本仓库包含三个 Android 应用:
```
CVE-2026-0023-Update-Ownership-PoC
├── Safe Mart
├── Unsafe Mart
└── Ownership Inspector
```
### 安全 Mart
Safe Mart 是一个参考安装器应用。
它安装目标应用,并在初始安装期间请求更新所有权。
其目的是模拟一个合法的应用商店,成为目标应用的注册更新所有者。
---
## 复现步骤
概念验证演示了两种不同的更新流程:
* 正常更新流程,Android 显示预期的更新所有权警告。
* CVE-2026-0023 复现流程,所有权警告被抑制并替换为通用的更新确认对话框。
```
flowchart LR
A["Safe Mart
Reference installer"] -->|"Installs target app
+ requests update ownership"| B["Ownership Inspector
Target app"] C["Unsafe Mart
Alternative installer"] --> D{"Update path"} D -->|"Normal update path"| E["Android displays
Update Ownership warning"] D -->|"CVE-2026-0023 path"| F["Android displays only
generic update dialog"] E --> G["User is warned:
Safe Mart is the update owner"] F --> H["Ownership warning
is suppressed"] ``` ### 1. 安装 Safe Mart 和 Unsafe Mart 在测试设备上安装这两个安装器应用。 当 Android 请求此权限时,允许这两个应用安装未知应用。 ### 2. 通过 Safe Mart 安装 Ownership Inspector 打开 Safe Mart 并选择 Ownership Inspector 的 APK。 Safe Mart 安装目标应用,并在初始安装会话期间请求更新所有权。 此时,Safe Mart 充当参考安装器,并成为该目标应用的预期更新来源。
| Before CVE-2026-0023 | After CVE-2026-0023 |
![]() |
![]() |
Reference installer"] -->|"Installs target app
+ requests update ownership"| B["Ownership Inspector
Target app"] C["Unsafe Mart
Alternative installer"] --> D{"Update path"} D -->|"Normal update path"| E["Android displays
Update Ownership warning"] D -->|"CVE-2026-0023 path"| F["Android displays only
generic update dialog"] E --> G["User is warned:
Safe Mart is the update owner"] F --> H["Ownership warning
is suppressed"] ``` ### 1. 安装 Safe Mart 和 Unsafe Mart 在测试设备上安装这两个安装器应用。 当 Android 请求此权限时,允许这两个应用安装未知应用。 ### 2. 通过 Safe Mart 安装 Ownership Inspector 打开 Safe Mart 并选择 Ownership Inspector 的 APK。 Safe Mart 安装目标应用,并在初始安装会话期间请求更新所有权。 此时,Safe Mart 充当参考安装器,并成为该目标应用的预期更新来源。
标签:Android, DSL, JS文件枚举, PoC, 暴力破解, 权限绕过, 漏洞复现, 目录枚举, 移动安全