CVE-2026-0075:Android ContactsProvider SQL 侧信道漏洞分析与 PoC

导语:一个不需要任何联系人权限的应用,竟然能从你的通讯录里偷走数据。听起来不可思议,但 CVE-2026-0075 把它变成了现实。安全研究人员 QM4RS 近日公开了完整的 Android PoC,整个攻击过程无需用户交互,2026 年 6 月前的 Android 14/15/16 用户均在受影响范围内。


漏洞概述

CVE-2026-0075 是 Android 系统中 ContactsProvider2(通讯录提供者)的一个高危本地权限提升/信息泄露漏洞。攻击者可以在不申请任何联系人相关权限的情况下,通过构造特定的数据请求,利用 SQLite 错误信息中的侧信道获取通讯录数据库的敏感信息。

受影响版本

  • Android 14
  • Android 15
  • Android 16
  • Android 16 QPR2

修复版本:2026 年 6 月 5 日及之后的安全补丁级别已修复该问题。

漏洞等级:High(高危),NVD 尚未给出最终 CVSS 评分。


技术原理

问题出在哪里?

ContactsProvider2 在接收到不带 READ_CONTACTS 权限的调用方请求时,会将详细的 SQLite 异常信息返回给调用者。这些异常信息并非普通的技术错误——它们包含与通讯录数据库内部状态相关的数据,攻击者可以从中推断出通讯录的实际内容。

这本质上是一个 SQL 侧信道攻击(SQL-related side channel)。和传统的 SQL 注入不同,这里利用的不是恶意 SQL 语句的执行,而是通过观察错误信息的差异来推断数据库中的敏感信息。

Google 的修复方案(AOSP commit bb9f36b3ff6d42136afb61d527e1e8f67242fe32,标题为”Fix side channel attacks in CP2″)做了两件事:

  1. 剥离敏感信息:对没有 READ_CONTACTS 权限的调用方,屏蔽包含 JSON 相关细节的 SQLiteException 消息
  2. 规范化异常路径:将游标实例化纳入异常处理流程,防止通过观察异常触发位置推断信息

PoC 详解

安全研究人员 QM4RS 已将完整 PoC 公布在 GitHub(qm4rs/CVE-2026-0075),包含一个特制的 Android 应用和 PowerShell 构建脚本。

PoC 特点

这个 PoC 应用有以下关键特征:

  • 不声明任何联系人权限:AndroidManifest.xml 中没有 READ_CONTACTS 或 WRITE_CONTACTS 声明
  • 仅请求有限的 URI 授权:使用精确的 data/<id> URI 并带有 read grant
  • 专为受控实验设计:用于对比修复前后的行为差异

构建步骤

PoC 的构建和运行需要以下环境:

  • Windows + PowerShell 5.1 或 PowerShell 7+
  • JDK(javac、jar、keytool 在 PATH 中)
  • Android SDK Platform android-35
  • Android SDK Build-Tools 36.0.0
  • Android Platform Tools(adb)

设置 Android SDK 路径

$env:ANDROID_HOME = 'C:AndroidSdk'

编译打包

Set-Location .no-permission-probe
.build.ps1

成功后在 no-permission-probebuildprobe.apk 生成签名 APK。

运行 PoC

# 确认设备信息
adb devices
adb shell getprop ro.build.version.security_patch

# 安装并运行
Set-Location .no-permission-probe
.run-poc.ps1

# 查看日志输出
adb logcat -s CVE20260075Probe:I

验证方法

每次运行需记录以下信息以确保结果可复现:

  • 设备型号或模拟器镜像、Android 版本、构建指纹、安全补丁级别
  • 使用的精确 limited URI grant
  • 确认目标设备仅包含合成(测试用)联系人数据
  • 记录每次调用返回的是结果、经过清理的异常、未经清理的异常还是权限拒绝
  • 记录异常发生的位置:provider 调用阶段还是游标消费阶段

对比修复前后的差异:修复后,调用方收到的应该是被替换为通用消息的 SQLite 错误,而不是带有 JSON 细节的原始异常。


漏洞利用限制

研究人员特别强调,这个 PoC 是构建特定(build-specific)的,不能证明所有同版本 Android 设备都存在可利用路径。不同厂商的 Android 实现可能对 ContactsProvider 进行了定制化修改,实际表现可能存在差异。

因此:

  • 不要将 PoC 用于未经授权的生产设备或真实通讯录
  • 不要将此视为通用漏洞利用证明
  • 必须在受控环境(模拟器或授权测试设备)中使用合成数据进行测试

漏洞时间线

  • 2026 年 6 月:Google 在 Android 安全公告中披露并修复该漏洞
  • 2026 年 8 月:研究人员 QM4RS 公开完整 PoC 和技术分析

影响与总结

虽然这是一个本地漏洞(需要安装恶意应用),但其危害不容小觑:

  • 无感知信息泄露:用户安装应用后,攻击者在后台就能通过侧信道推断通讯录内容
  • 绕过权限模型:Android 的权限控制本是最后一道防线,但这个漏洞让防线在特定场景下失效
  • 针对性强:攻击者可以选择特定目标进行定向信息收集

如果你正在使用 Android 14/15/16 或 16 QPR2 版本,请检查手机的安全补丁级别是否为 2026 年 6 月 5 日或更晚。如果不是,请尽快更新系统。

PoC 下载地址:https://github.com/qm4rs/cve-2026-0075

参考链接

  • Android Security Bulletin — June 2026:https://source.android.com/docs/security/bulletin/2026/2026-06-01
  • AOSP 修复提交:https://android.googlesource.com/platform/packages/providers/ContactsProvider/+/bb9f36b3ff6d42136afb61d527e1e8f67242fe32
  • NVD:CVE-2026-0075

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容