2024 年度补丁分析:点我
2025 年度补丁分析:点我

我是 2025 年 Android VRP 冠军!点这里看我的名字: https://bughunters.google.com/blog/google-vrps-in-review-2025#android-devices

最后更新时间:2026/03/18 更新内容:哼哼啊啊啊啊啊啊啊啊

2026-03-01

在野利用漏洞:CVE-2026-21385

Framework

CVE-2026-0047 EoP Critical
只影响 16-qpr2 的漏洞。截至发稿,漏洞补丁未公开。漏洞描述:

In dumpBitmapsProto of ActivityManagerService.java, there is a possible way for an app to access private information due to a missing permission check. This could lead to local escalation of privilege with no additional execution privileges needed. User interaction is not needed for exploitation.

根据已经公开的 16 QPR2 源码,可以很明显地看出来提交 https://cs.android.com/android/_/android/platform/frameworks/base/+/0ebd869c069fb58671b947955be1e67241783d73 在 activity manager 引入了 dumpBitmapsProto 这个 aidl 调用,可以获得系统里面正在运行的所有 java 进程里的所有 bitmap 数据而没有任何权限保护,很明显的漏洞。

CVE-2025-32313 EoP High
又放了个无法访问的链接。。。
手动大法,获得这两个:
https://android.googlesource.com/platform/frameworks/base/+/fd4045126ff01cec3d65c053a0c2c01dc231a0f5
https://android.googlesource.com/platform/frameworks/native/+/611b730bade54a0a79dbcc3087d9393086e6dbdf
也就是 Parcel.setDataPosition() 设置的 position 大于 Parcel.dataSize() 时不会正确增长 buffer,造成越界写。通过反序列化 NotificationHistory 对象时使用畸形数据触发。
漏洞描述又是 UsageEvents 里的 OOB write,不知道发什么神经

CVE-2025-48544 EoP High
去年 9 月放过,又放了一遍,懒得重新分析了,看之前的吧

CVE-2025-48567 EoP High
之前 CVE-2024-43093 的后续,MediaProvider 里使用正则过滤敏感路径,需要去除掉路径中的可忽略代码点

CVE-2025-48568 EoP High
https://android.googlesource.com/platform/frameworks/base/+/d8c3d450f77f77232a89ac37c9b9b266e28c0202
切换用户过程中的 race condition,导致锁屏绕过。这个问题我有时候会碰到,不知道修没修好。

CVE-2025-48574 EoP High
WindowManagerService 内对 PRIVATE_FLAG_INTERCEPT_GLOBAL_DRAG_AND_DROP 的权限检查损坏,在 Binder.clearCallingIdentity() 之后调用了 ActivityTaskManagerService.enforceTaskPermission() 检查权限,里面用的是 checkCallingPermission(),而它依赖 Binder.getCallingUid() 的结果,实际上不会起到任何作用,因此可以拦截用户 drag and drop 传递的数据。
这个漏洞我在 2025 年 7 月 29 日报过,duplicate,看 issue id 可能也就差几天的时间,可惜了

CVE-2025-48578 EoP High
MediaProvider 收到畸形 URI (authority 不正确,或者无法把 id 解析成数字)的时候恢复 binder calling identity 再继续执行。

CVE-2025-48579 EoP High
补丁链接跟 CVE-2025-48578 是一样的。

CVE-2025-48582 EoP High
此漏洞由我发现并报告。
MediaProvider 请求权限的 PermissionActivity 内使用了不安全的 getCallingPackage() 获取调用者身份,可以被伪造导致权限绕过。补丁改成在 createRequest() 的时候记录 calling uid。

CVE-2025-48605 EoP High
SystemUI 显示锁屏的时候移除队列里已有的隐藏锁屏消息,防止残留的请求意外 dismiss 掉锁屏

CVE-2025-48619 EoP High
ContentProvider 被要求打开文件的时候,如果 mode 里没有 w,这个时候 framework 只会检查读权限,过滤掉 truncate bit 和 append bit 避免只有读权限的调用者裁剪文件。

CVE-2025-48634 EoP High
WindowManagerService relayoutWindow 的过程中没有对 private flags 做权限检查,任何 app 都能使用 PRIVATE_FLAG_TRUSTED_OVERLAY PRIVATE_FLAG_INTERCEPT_GLOBAL_DRAG_AND_DROP 等敏感 flag。

CVE-2025-48635 EoP High
此漏洞由我发现并报告。
补丁:https://android.googlesource.com/platform/frameworks/base/+/36e65fce2d5119ad1d62b4696c003f93df649e52
问题跟 CVE-2025-0098 基本是一样的,当时只修了 android 15,但是有问题的代码其实在 android 14 就存在了,然后我又报了一个。

CVE-2025-48645 EoP High
加载 device admin info 的 description 时 catch OOM,避免超大字符串导致崩溃

CVE-2025-48646 EoP High
https://konata.github.io/posts/identity-squashing/

CVE-2025-48654 EoP High
系统开机的时候移除所有已被 revoke 的 companion device associations

CVE-2026-0007 EoP High
往 parcel 写入 WindowInfo.name 的时候截断超长字符串,这个涉及到我之前提出的一种新攻击手段,后续会发文章介绍

CVE-2026-0010 EoP High
drmserver 中的越界写/栈上缓冲区溢出

CVE-2026-0011 EoP High
修复 shared user id 的系统 app 卸载更新然后重新启用时没有重用现有的状态会被重新分配一个新的 uid 的 bug。

CVE-2026-0013 EoP High
DocumentsUI PickActivity 重用来源 intent 启动 activity 之前先清掉 selector,避免用 DocumentsUI 的权限启动任意 activity

CVE-2026-0020 EoP High
解析权限的时候去除名字里的头尾空格,看描述是能绕过授权弹窗

CVE-2026-0023 EoP High
安装 app 时忽略外部传来的 INSTALL_FROM_MANAGED_USER_OR_PROFILE 标志

CVE-2026-0026 EoP High
补丁:
https://android.googlesource.com/platform/frameworks/base/+/0ead58f69f5de82b00406316b333366d556239f1
https://android.googlesource.com/platform/frameworks/base/+/528a87e90ff9354581d54fd37fbe9f95cccbcdb1
之前的 CVE-2023-20971,不知道为啥重新给了一个 CVE,终于发现之前给的 CVE 不对了吗?

CVE-2026-0034 EoP High
限制最多只能激活 100 个 notification listener service / condition provider service,避免序列化太长的字符串导致异常

CVE-2025-48630 ID High
绘制模糊区域时使用边界图层进行裁剪,防止超出图层边界。看起来是之前 CVE-2025-48561 (Pixnapping) 的后续,https://www.pixnapping.com/

CVE-2026-0012 ID High
官方公告放少了一个补丁所以看起来怪怪的,应该需要以下两个补丁才对:
https://android.googlesource.com/platform/frameworks/base/+/f275f865d49559a6bb3ef9cecf0ab1dd7a7a0bc3
https://android.googlesource.com/platform/frameworks/base/+/e93d4b015c283e55cb08d68a499aab41f03e1272
所以是动画导致的 contact name leak?

CVE-2026-0025 ID High
Notification 从 extras 里还原 EXTRA_MESSAGESEXTRA_HISTORIC_MESSAGES 没有类型限制,可以往里添加一个 ParceledListSlice,因为 ParceledListSlice 反序列化时需要调用回对端提供的 binder,在 system server 去 visit uri 的时候 app 可以返回畸形数据,让 system server 反序列化 messages 时 ParceledListSlice 抛出异常导致整项都反序列化失败,然后 defuse 返回 null,因此被 visit uri 跳过;在 SystemUI 去读的时候就返回可被解析的数据,让 messages 可以被 SystemUI 正常读取和渲染。补丁就是限制了 EXTRA_MESSAGESEXTRA_HISTORIC_MESSAGES 数组的每一项都必须是 bundle。

CVE-2025-48644 DoS High
解析输入法 metadata 的时候限制里面 string 的大小,防止超过 binder 传输大小。

CVE-2026-0014 DoS High
此漏洞由我发现并报告。
AppOpsService 内信任一切安装在 system image 上的 app 提供的 AttributionTag,这个检查可以被 SDK Sandbox 绕过,跟 CVE-2025-48524 CVE-2025-48545 是类似的。

CVE-2026-0015 DoS High
AppOpsService 内忽略不可信 proxy 提供的无效 proxied attribution tag,之前的代码里如果提供的 proxied attribution tag 在被代理的 package 里找不到但是 proxy 里能找到还是会认为它有效,现在即使 proxy 里能找到,如果请求来自不可信 proxy 也会忽略掉它。

System

CVE-2026-0006 RCE Critical
libopenapv 中的越界读写/堆上缓冲区溢出,把它更新到 v0.2.0.0。只影响 16

CVE-2025-48631 DoS Critical
去年 12 月的 CVE-2025-48631 重新放一遍,当时 16 QPR2 没修好

CVE-2025-48577 EoP High
SystemUI 切换用户时如果收到生物认证或者解除锁屏请求,可能会因为 race condition 导致发生在错误的用户上。添加用户 id 验证以避免这些情况。

CVE-2025-48602 EoP High
用户切换的时候取消还在队列里的播放锁屏退出动画的请求。

CVE-2025-48641 EoP High
nfc 中多线程访问造成的 UAF,需要加锁

CVE-2025-48650 EoP High
MmsProvider/SmsProvider/MmsSmsProvider 中的 SQL 注入,加了个括号平衡的检查

CVE-2025-48653 EoP High
合并同一个 shared user id 中所有 package 请求的所有权限。如果 Package A 属于 UID U,A 没有请求某个权限 P 但是它的 UID U 有这个权限(比如 U 里的其他 app 请求了它),因为权限检查是基于 uid 的,A 实际上也可以使用这个权限,所以 PermissionController 在查看 A 的权限使用记录的时候也必须包含它使用 P 的记录。

CVE-2026-0017 EoP High
高版本(16+)的“使用生物认证解锁”使用的 Settings.Secure 项和低版本的不同,旧版本更新到 16+ 之后系统只会去读新的 Settings.Secure 项的值,只能获得默认的 ON,即使更新系统之前把这项功能关掉了,更新之后还是可以生物认证解锁手机。添加迁移逻辑避免这个问题。

CVE-2026-0021 EoP High
Settings 如果是 2 pane (大屏设备),AppInfoBase 检查 calling package 的跨用户权限而非 calling uid 的权限,因为 multi pane 的实现需要 Settings 用自己的权限去重新启动 activity,这个过程会导致 calling uid 变成 Settings 自己的,具体见 https://cs.android.com/android/platform/superproject/+/android-16.0.0_r1:packages/apps/Settings/src/com/android/settings/homepage/SettingsHomepageActivity.java;l=678
这个问题我之前看出来了,本来打算有空的时候实验然后提交,结果就忘了。。。这里经过最开始我报的 CVE-2024-43088 后面 CVE-2025-22428,兜兜转转最后又回到原点。不知道以后还有没有

CVE-2026-0035 EoP High
MediaProvider 不允许获得不存在的文件的权限,避免悬空攻击

CVE-2024-43766 ID High
蓝牙里的未加密通信?

CVE-2025-48642 ID High
使用 dc cvac 指令代替 dc cvau,保证数据写入到主存。https://zhuanlan.zhihu.com/p/718112749

CVE-2025-64783 ID High
更新 DNG SDK 到 1.7.1 2410

CVE-2025-64784 ID High
和上面的一样

CVE-2025-64893 ID High
和上面的一样

CVE-2026-0005 ID High
SystemUI crash 重启后重新进入 app pinning 模式。类型给错了吧?应该给 EoP

CVE-2026-0024 ID High
使用 file picker 选择媒体文件的时候检查请求 app 有没有权限从里面读取位置,如果没权限应该去除掉位置信息(比如 EXIF 里可能包含位置)

CVE-2025-48585 DoS High
ProfilingService 里保证传入的包名属于 calling uid,只影响 16

CVE-2025-48587 DoS High
ProfilingService 添加 trigger 的时候校验 trigger 的类型确保是合法的,只影响 16

CVE-2025-48609 DoS High
MmsProvider 里的路径穿越,以 phone 的权限删除任意文件造成电话/短信/彩信功能异常

2026-02-01

木大木大,全部木大

2026-01-05

Dolby

CVE-2025-54957 RCE Critical
https://project-zero.issues.chromium.org/issues/428075495
https://projectzero.google/2026/01/pixel-0-click-part-1.html