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

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

最后更新时间:2026/07/08 更新内容:更新 2026-06-01

2026-07-01

咕咕嘎嘎

2026-06-01

CVE-2025-48595 在野利用
高通解锁节的命令注入洞 CVE-2026-24089 CVE-2026-24087 也在这个月被修

Framework

CVE-2025-65018 EoP Critical
CVE-2025-64720 DoS Critical
libpng 1.6.51 之前的堆缓冲区溢出 越界读写

CVE-2025-22424 EoP High
CVE-2025-22426 EoP High
去年放过的再放一遍,依旧没看懂

CVE-2025-48570 EoP High
我跟 WeiMing Cheng 一块发现的洞,补丁是 SystemUI 没有及时响应就清掉 PIP task,实际利用起来还挺复杂的,最后效果是 bal

CVE-2025-48595 EoP High
升级到 sqlite 3.44.5

CVE-2025-48615 EoP High
去年我报的洞,第一次没修好,只限制了 PendingIntent component 的长度但是没有限制直接传进去的 component name 的长度,所以撤回重新放一遍

CVE-2025-48649 EoP High
App 自己清除自己的数据的时候不要重设权限,重设权限有可能会因为这个 app 是默认应用或者持有某些角色而导致被用户主动拒绝的权限被自动授予,这是非预期行为

CVE-2025-48652 EoP High
PackageInstaller 的修改,原来的代码是只要发起安装的 app 有 INSTALL_PACKAGES 权限就允许绕过 device policy manager 设定的禁止安装未知来源软件限制,现在改成还需要 intent action 不能是 ACTION_VIEW or ACTION_INSTALL_PACKAGE。怀疑是有系统 app 支持点击 apk 文件打开?但是 nfc 和蓝牙现在好像都没有 INSTALL_PACKAGES 权限

CVE-2026-0009 EoP High
PhotoPicker 选择照片时添加一个确认步骤

CVE-2026-0046 EoP High
WindowManagerService Letterbox (应用方向改变时环绕屏幕的方框) 的身份设置成 app 的身份而非 WindowManagerService 自己的身份,阻止 letterbox 上的点击穿透到下面的 activity。按理来说一个 Activity 下面应该有 ActivityRecordInputSink 接住可能穿透的点击事件的,是因为 letterbox 的 uid 被设置成 system uid 导致它被认为是可信窗口所以现有的防护没生效吗?

CVE-2026-0048 EoP High
隐藏非系统悬浮窗时如果它在播放退出动画,立刻隐藏它,否则 hide 会等待动画播放结束,可能需要很长时间

CVE-2026-0055 EoP High
创建 package install session 的时候检查传入的 volumeUuid,阻止路径穿越

CVE-2026-0061 EoP High
隐藏窗口时使用 app 拿不到的 SurfaceControl 设置显示状态

CVE-2026-0076 EoP High
资源解析的代码里面拒绝过小的 attrExt->attributeSize,会造成越界读

CVE-2026-0077 EoP High
补丁:
https://cs.android.com/android/_/android/platform/frameworks/base/+/407d0fcb459d11b1574e1ebe6ccc297a9d00c6b6
看描述是 BAL

CVE-2026-0078 EoP High
device admin app 设置代理时限制字符串长度

CVE-2026-0087 EoP High
修复 App Links 功能里 *.xyz.com 会匹配到任意以 xyz.com 结尾的域名(包括 abcxyz.com)的 bug
关于这个功能的文档:
https://developer.android.com/training/app-links/verify-applinks

CVE-2026-0089 EoP High
限制 clearDeveloperVerificationExperiment 接口调用者必须是 shell 或者 root,补丁:
https://cs.android.com/android/_/android/platform/frameworks/base/+/c15dea2dc3bb0ebeefeb59eb74290ac9fa918bf8

CVE-2026-0091 EoP High
我报的洞,具体见
https://github.com/canyie/TransitionPlayer

CVE-2026-0100 EoP High
解析 arsc 时拒绝大于 255 的 package id,否则会造成越界写

CVE-2026-28577 EoP High
添加 TYPE_TOAST 类型的窗口时如果对应的 token 已经有了其他 toast,拒绝添加

CVE-2026-28580 EoP High
NotificationChannel 内判断 VibrationEffect 是否需要裁剪的逻辑有问题,原先的代码检测的是 VibrationEffect 被写到 parcel 里所需要的大小,补丁改成了在写 xml 的时候跳过太长的结果。

CVE-2026-0016 ID High
系统重置 CREDENTIAL_SERVICE_PRIMARY 的时候错误用了自己的 user id,扫描并移除无效服务的时候也没检查 user id

CVE-2026-0036 ID High
窗口管理的问题,给错类型了,看得不是很明白,描述是 tapjacking,把提交信息复制过来看看

1
2
3
4
5
6
7
8
9
10
11
12
13
Start a new transition to ignore split-enter from a malformed transition

- If two tasks are started in immediately one after the other in order
with the latter being an adjacent launch, the launch of the two tasks
can end up in the same transition but the transition request will
report the first task launch as the trigger task. As a result,
StageCoordinator will not be resolved as the handler for the
transition and the enter transition not play correctly (falling
through the default transition handler which only shows the adjacent
task without being in split).

If we detect this rare edge case, we instead restore the adjacent task
to the TaskDisplayArea instead of treating it as an adjacent launch.

CVE-2026-0056 ID High
校验 ResStringPool_header.styleCount 避免越界读

CVE-2026-28586 ID High
在 AppOpsService startOpnoteOp 里检查 app 是否因为被 suspend 而不能执行这些操作

CVE-2025-32348 DoS High
现在不会因为 app 有 PIP 窗口 允许 BAL。这类型给的也太离谱了点

CVE-2026-0018 DoS High
过滤掉无效的无障碍服务磁贴,不是很清楚会发生什么

CVE-2026-0069 DoS High
我报的垃圾洞,没啥看的价值

CVE-2026-0070 DoS High
禁止隐藏 settings、settings provider 和 nfc 服务,即使在 work profile 里隐藏这些 app 也可能导致开机失败

CVE-2026-28578 DoS High
设置 work profile 的 caller id、contacts access 和 credential manager 政策的时候检查包名长度

System

CVE-2026-0043 EoP Critical
CVE-2026-0039 DoS Critical
CVE-2026-0040 DoS Critical
CVE-2026-0041 DoS Critical
CVE-2026-0042 DoS Critical
CVE-2026-0044 DoS Critical
CVE-2026-0051 DoS Critical
CVE-2026-0052 DoS Critical
CVE-2026-0080 DoS Critical
CVE-2026-0067 DoS High
CVE-2026-0079 DoS High
dng_sdk 中的多个整数溢出

CVE-2026-0097 EoP Critical
蓝牙 LE 安全连接中的用户交互绕过问题

CVE-2026-21352 EoP Critical
CVE-2026-21353 EoP Critical
升级 dng_sdk 到 1.7.1 2471

CVE-2025-64505 DoS Critical
libpng 1.6.51 之前的越界读

CVE-2026-0059 RCE High
蓝牙 sdp discovery 的越界写,校验剩余数据大小

CVE-2025-26418 EoP High
车机 CarDevicePolicyService setUserDisclaimerAcknowledged API 添加权限检查,保证添加账号的弹窗不被跳过

CVE-2025-48581 EoP High
apexd 中的业务 bug,会导致安全更新无法安装

CVE-2025-48612 EoP High
去年放过一遍的洞,因为补丁有问题被撤回了,去25年分析看吧

CVE-2026-0045 EoP High
蓝牙的问题,没太看明白

1
2
3
4
5
6
7
8
9
10
11
RFCOMM MUX connection request must not start bonding

Outgoing connection requests for secure sockets adds the bonding
security requirements for RFCOMM MUX. This security requirement is reset
only when an outgoing insecure socket connection is requested. This
means that all subsequent incoming connection requests for RFCOMM MUX
also enforce the bonding requirement. So incoming RFCOMM connection
leads to initiating bonding.

This is a backport of ag/36338174 required for a security fix. Also
includes flag removal for upgrade_temp_bonding_on_auth_req.

CVE-2026-0075 EoP High
ContactsProvider2 中通过畸形查询+解析 SQLite 抛出的异常信息实现的侧信道攻击,补丁把异常信息给 strip 了

CVE-2026-0086 EoP High
调用者为 null 时主动失败,避免检查 null 是否为 role holder。补丁:
https://cs.android.com/android/_/android/platform/packages/apps/Settings/+/f0922db8cc4c1cb515c8a2a580993aa061481f65

CVE-2026-0088 EoP High
CertInstaller 里的长应用名攻击,使用 loadSafeLabel 代替 loadLabel

CVE-2026-0093 EoP High
RequestManageCredentials 里的长应用名攻击

CVE-2026-0094 EoP High
KeyChainActivity 里的长应用名攻击

CVE-2026-0095 EoP High
蓝牙 l2cap 里的整数溢出

CVE-2026-0096 EoP High
ForgetDeviceDialogFragment 里的长应用名攻击

CVE-2026-0098 EoP High
很久之前报的垃圾洞,DocumentsUI 里只要调用者是系统预装 app (有 FLAG_SYSTEM 或者 FLAG_UPDATED_SYSTEM_APP 标记)就允许它自定义在授权弹窗里显示出来的应用名,现在改成必须和系统签名相同了

CVE-2026-0099 EoP High
nfc 服务绑定 HostApduService 的时候收到 onNullBinding 或者 onBindingDied 要解绑服务

CVE-2026-28574 EoP High
nfc 服务的 race condition,导致服务不被解绑 -> BAL

CVE-2025-48600 ID High
IntentResolver 里检查提供的 icon uri。官方公告放错了补丁,是这个才对:
https://android.googlesource.com/platform/packages/modules/IntentResolver/+/bbe2dc3fb85fac9053b427b6d3c4af3506e0d9b4

CVE-2025-48616 ID High
SystemUI 检查是否在 lockdown 模式时使用 KeyguardUpdateMonitor 代替 LockPatternUtils

CVE-2026-0050 ID High
有与之前绑定过的蓝牙设备同地址的设备尝试重新绑定时撤销权限,因为设备地址可以伪造,同地址并不代表一定是同一个设备

CVE-2025-48648 DoS High
我报的一个没啥用但是比较有意思的 DoS,sdk sandbox 可以以不同的 uid 运行,而 NotificationManagerService 做数据大小限制是对 uid 做的,所以只要有多个 app 调用同一个 sdk 就能绕过限制造成 dos
补丁写得比较让人一头雾水,把 PackageManagerInternal.isSameApp 改成 UserHandle.isSameApp,这是因为前者允许 sdk sandbox 而后者不允许,所以修改检查就能直接禁止 sdk sandbox 调用通知服务

CVE-2026-0060 DoS High
在开发者选项里启用 ANGLE 的时候显示警告提醒用户备份数据,要不然把设备搞砖了数据就丢了

CVE-2026-0074 DoS High
Launcher 解码图像时缩小图像尺寸以降低内存占用

CVE-2026-0085 DoS High
ContactsProvider 限制大小时把大小写不匹配的 key 也纳入进去

2026-05-01

CVE-2026-0073 RCE Critical
adbd 中的校验逻辑错误,需要开发者选项&无线调试打开且至少配对过一个密钥。很少见的不是内存问题的 RCE。
https://barghest.asia/blog/cve-2026-0073-adb-tls-auth-bypass/

2026-04-01

Framework

CVE-2026-0049 DoS Critical
DNG_SDK dng_opcode_MapTable::ProcessArea() 中的整数溢出问题。

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 数据而没有任何权限保护,很明显的漏洞。

补丁链接:
https://github.com/GrapheneOS/platform_frameworks_base/commit/0a02ed34a8bfafe9022b7009145b9ad962c9a64f

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