ColorOS短信漏洞
> [信息来源](https://www.rapid7.com/blog/post/cve-2025-10184-oneplus-oxygenos-telephony-provider-permission-bypass-not-fixed/)
> [漏洞原理及解决方案技术原理](https://yuuou.vercel.app/%E9%80%86%E5%90%91/%E7%9F%AD%E4%BF%A1%E6%BC%8F%E6%B4%9E%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90/)
### 漏洞说明
- 类型:数据库注入攻击`1=1 AND`
- 效果:任意APP读取短信数据。*无需权限、无需用户交互、无感知读取*
- 影响:本机的所有短信信息、短信验证码泄露
- 涉及范围:**OPPO 及其子品牌(一加、realme)**
- 影响范围:根据[maoyixuan](https://github.com/yuuouu/ColorOS-CVE-2025-10184/issues/1#issuecomment-3367827779)提交的机型显示,***17年发布的ColorOS 6.0.1存在漏洞,此漏洞可能伴随了OPPO的OEM生涯***
- 修复情况:10月4日开始对ColorOS 15推送系统文件更新:`15.0.0.860Patch01|1.9MB`,10月9日对ColorOS 12-14推送
- 测试漏洞:[国内下载 yuu_v3.6.apk](https://yuuou.lanzout.com/iiQE337s6dha),出现短信内容代表存在漏洞。测试app不存在联网功能,[OPPO列为风险应用是通过包名匹配](https://github.com/yuuouu/ColorOS-CVE-2025-10184/issues/23),断网安装即可,如有疑惑可查阅源码,测试完及时卸载
- 普通用户防护策略:
1. 在厂商未修补漏洞前,请将sim卡放到使用其它品牌手机上使用
2. 设备上的短信尽快删除,彻底删除。避免短信被用作用户画像
3. 使用Android虚拟机或云手机安装应用
4. 在使用短信验证时尽量保证无后台应用运行
- 自救方案:无root自救方案和root稳定拦截方案
### 修复情况更新(10月4日)
> @C和其他热心网友,[更新前确保关闭 Cross Profile Test App](https://github.com/yuuouu/ColorOS-CVE-2025-10184/issues/24),不然会导致安装卡在0.0%
已确认开始推送修复,10月4日上午开始推送
- 系统版本:ColorOS 15.0.0、15.0.1、15.0.2
- 实际内容:com.android.providers.telephony 15.40.10 (35)
- 更新路径:设置 → 系统与更新 → 软件更新 → 自动更新设置 → 系统文件更新
- 系统文件:`15.0.0.860Patch01|1.9MB`,不同机型文件不一样,以实际推送为准
- 修复效果:
<img src="http://upforme.ru/uploads/001c/43/d3/2/43385.jpg" width="200">
#### 强制更新
> ~~`15.0.0.860Patch01|1.9MB 推送包的 电话_短信存储_15.40.10.apk`仅支持ColorOS 15.0.0、15.0.1、15.0.2版本,[推送包详细内容](https://github.com/yuuouu/ColorOS-CVE-2025-10184/blob/master/opex_15.0.0.860Patch01.cfg)~~
> 信息来源 电报@SnowWolf725
[下载 电话_短信存储.apk](https://yuuou.lanzout.com/s/yuuou),注意:要跟系统版本匹配
使用adb命令:`adb install -t D:\xxx.apk`
安装成功后重启手机生效,出错了卸载安装版本即可
### 漏洞效果
<img src="http://upforme.ru/uploads/001c/43/d3/2/700625.png" width="240">
[可将隐私数据打码后上传到 Issues](https://github.com/yuuouu/ColorOS-CVE-2025-10184/issues/1)
### 普通用户自救方案
#### 方案一:使用短信骚扰拦截(通用方法)
> 来自[v2ex@CoolMarket](https://www.v2ex.com/t/1162349?p=1#r_16821039)
> 打开短信骚扰拦截,拦截所有号码,这样短信就会被收进骚扰拦截里,用软件测试发现读取不到短信
路径:短信 → 骚扰拦截 → 拦截规则 → 信息拦截 → 自定义拦截关键词 → 右上角➕号 → 按行复制输入以下内容
```log
0,1,2,3,4,5,6,7,8,9
#,*,+,@,.,【,(,(,,
-,/,!,码,中,余,元,退,
a,b,c,d,e,f,g,h,i,j,
k,l,m,n,o,p,q,r,s,t,
u,v,w,x,y,z,A,B,C,D,
E,F,G,H,I,J,K,L,M,N,
O,P,Q,R,S,T,U,V,W,X,
Y,Z,零,一,二,三,四,五,六,
七,八,九,十,百,千,万
```
<img src="http://upforme.ru/uploads/001c/43/d3/2/346162.jpg" width="200"><img src="http://upforme.ru/uploads/001c/43/d3/2/683671.jpg" width="200"><img src="http://upforme.ru/uploads/001c/43/d3/2/136629.jpg" width="200"><img src="http://upforme.ru/uploads/001c/43/d3/2/791452.jpg" width="200"><img src="http://upforme.ru/uploads/001c/43/d3/2/348877.jpg" width="200"><img src="http://upforme.ru/uploads/001c/43/d3/2/849694.jpg" width="200">
验证:接收一条新的短信(给10086发信息),收到短信后在骚扰拦截那里会出现一条拦截信息,然后打开测试工具查看该信息是否出现,没有该信息的话说明此方法有效
**此方案最简单,建议旧机型优先使用此方案**
#### 方案二:使用Shizuku修改
> 基于[v2ex@Dawnnnnnn](https://www.v2ex.com/t/1162349#r_16804643)提出的方法改进。⚠️修改系统内容有风险!非全部机型可用
1. 下载[Shizuku](https://shizuku.rikka.app/download/)和[Blocker](https://github.com/lihenggui/blocker/releases)。(提示无法安装时断开网络后安装)
2. 根据[教程选择无线调试启动Shizuku](https://shizuku.rikka.app/zh-hans/guide/setup/#%E5%90%AF%E7%94%A8%E6%97%A0%E7%BA%BF%E8%B0%83%E8%AF%95)
3. `Blocker`设置中更改`控制器种类`为`Shizuku/Sui`,`Shizuku`授权给`Blocker`
4. `Blocker`设置中打开 `显示系统应用`
5. `Blocker`搜索`telephony`,进入`电话/短信存储`应用
6. 选择`内容提供者`,找到其中的`PushMessageProvider`、`PushShopProvider`、`ServiceNumberProvider`三个选项关闭
7. ⚠️注意:到此完成设置,效果保持到下次重启前。重启手机后将无法收到短信(能发送),必须重新开启上一步的三个选项,再重启一次才能正常收到短信。确认能收发短信之后关闭三个选项,既有拦截效果,又能正常收发信息,将保持到下次重启
<img src="http://upforme.ru/uploads/001c/43/d3/2/575277.jpg" width="240"><img src="http://upforme.ru/uploads/001c/43/d3/2/719926.jpg" width="240">
##### 无法生效说明
当`com.android.providers.telephony`里`AndroidManifest.xml`存在`android:testOnly="true"`属性时才能修改生效,[具体原因可见]([https://github.com/lihenggui/blocker/issues/27](https://yuuou.vercel.app/%E9%80%86%E5%90%91/%E7%9F%AD%E4%BF%A1%E6%BC%8F%E6%B4%9E%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90/#shizuku-test-only-and-quot-true-and-quot))
### root 拦截方案
无root情况下,试了系统分身、多用户、Shelter工作账号都无法拦截此漏洞
如何root请参考 [ColorOS刷机路径](https://yuuou.vercel.app/%E9%80%86%E5%90%91/ColorOS%20%E5%88%B7%E6%9C%BA%E8%B7%AF%E5%BE%84/)
#### 方案一:使用xposed模块
测试包包含模块内容,将捕获调用此漏洞的应用,拦截结果并弹窗提示和记录,仅需勾选"电话/短信存储"应用,保存日志路径`/storage/emulated/0/Android/data/com.android.providers.telephony/files/yuu.log`
如有发现,请提 Issues 或通过[电报反馈](https://t.me/+Z8f7P5MMkZ0yNzE1)
<img src="https://github.com/user-attachments/assets/baf1e6cc-bf55-44f6-834b-d2c115de2c52" width="260">
#### 方案二:禁用 Provider
> 来自[v2ex@Dawnnnnnn](https://www.v2ex.com/t/1162349#r_16804643)
1. 下载安装 [Blocker](https://github.com/lihenggui/blocker/releases)
2. 在设置中打开 `显示系统应用`
3. 搜索 `telephony`,进入 `电话/短信存储`
4. 选择 `内容提供者` ,找到其中的 `PushMessageProvider`、`PushShopProvider`、`ServiceNumberProvider` 三个选项关闭
5. 注意⚠️:重启手机后将导致无法收到短信(能发送),必须重新开启上一步的三个选项,再重启一次才能正常收到短信。确认能收发短信之后再关闭三个选项,既有拦截效果,又能正常收发信息,将保持到下次重启
<img src="http://upforme.ru/uploads/001c/43/d3/2/719926.jpg" width="260">
#### 方案三:限制读取数据库文件
> 来自酷安@kkkkkcc
1. 打开 `MT管理器`,进入目录 `/data/data/com.android.providers.telephony/databases/`
2. 禁用读取权限:长按 `mmssms.db` - `属性` - `权限 更改` - `去除读权限,包括所有者和用户组`
3. 将无法发送短信,需自测
<img src="http://upforme.ru/uploads/001c/43/d3/2/244342.jpg" width="260">
### 披露时间线
```
2025年5月1日:Rapid7通过电子邮件联系一加安全响应中心(OneSRC),请求就漏洞披露进行沟通。未收到回复。
2025年5月6日:Rapid7再次通过电子邮件联系OneSRC。未收到回复。
2025年7月2日:Rapid7同时通过电子邮件联系一加客服支持团队和OneSRC。
2025年7月3日:一加客服回复称将向内部相关团队转达Rapid7请求,随后联系获取更多信息。此后再未收到后续回复。
2025年7月10日:Rapid7联系一加客服要求跟进。未收到回复。
2025年7月22日:Rapid7向OneSRC的X平台账号发送消息,请求漏洞披露沟通渠道。未获回应。
2025年8月16日:Rapid7联系与OnePlus存在业务往来的 OPPO CNA 代表,请求引荐 OneSRC 团队。未获回应。
2025年9月23日:Rapid7认定OnePlus为未响应供应商,通过本披露博文公开发布CVE-2025-10184漏洞。
2025年9月24日:研究发布后,OnePlus回复Rapid7确认收到披露信息,并表示正在调查该问题。
2025年10月4日:厂商已开始向ColorOS 15部分机型发送漏洞修补推送包860Patch(仓库补充)
```
### 漏洞调用字段含义
`SELECT address FROM sms ORDER BY rowid DESC LIMIT 3`
- LIMIT 3:最近的 3 个
- body:短信正文内容。可修改为下面的任意字段
| 字段名 | 含义说明 |
| ------------------------------ | -------------------------- |
| _id | 主键,自增 ID |
| thread_id | 会话 ID,归属到哪个对话线程 |
| address | 短信发送方或接收方号码 |
| person | 联系人 ID(可能对应 Contacts 表) |
| date | 收到/发送时间(毫秒时间戳) |
| date_sent | 实际发送时间(对发出短信有效) |
| protocol | 协议:0=SMS, 1=MMS |
| read | 是否已读(0=未读, 1=已读) |
| status | 发送状态(-1=接收, 0=成功, 64=待发送等) |
| 输入 | 短信类型(1=收件箱, 2=已发件, 3=草稿等) |
| reply_path_present | 是否设置了回复路径 |
| subject | 短信主题(MMS 可能有) |
| body | 短信正文内容 |
| service_center | 服务中心号码 (SMSC) |
| locked | 是否锁定(防止被系统清理) |
| sub_id | 使用的 SIM 卡 ID |
| phone_id | 手机卡槽 ID |
| error_code | 发送错误码 |
| creator | 创建该短信的应用包名 |
| seen | 是否已在界面展示(0/1) |
| priority | 短信优先级(厂商/IMS扩展) |
| m_size | 消息大小(多见于 MMS) |
| oplus_drafts | Oplus 定制:草稿标记 |
| oplus_mass | Oplus 定制:群发标记 |
| oplus_timer | Oplus 定制:定时短信标记 |
| oplus_groupaddress | Oplus 定制:群组地址 |
| oplus_collected | Oplus 定制:收藏状态 |
| oplus_sub_date | Oplus 定制:订阅/时间戳 |
| oplus_service_message_sms_type | Oplus 定制:服务短信类型 |
| bubble | 是否气泡显示(某些 UI 特性) |
| deleted | 删除标记(0/1) |
| sync_state | 同步状态(云端/备份相关) |
| sync_id | 同步用的唯一 ID |
| oplus_message_url | Oplus 定制:消息中的 URL |
| oplus_sms_type | Oplus 定制:短信类型扩展 |
| block_type | 拦截类型(垃圾短信/骚扰拦截) |
| favourite | 收藏标记 |
| rcs_message_id | RCS 消息 ID |
| rcs_file_name | RCS 附件文件名 |
| rcs_mime_type | RCS 附件 MIME 类型 |
| rcs_msg_type | RCS 消息类型(文本/文件/地理位置等) |
| rcs_msg_state | RCS 消息状态(已读/已送达/发送中等) |
| rcs_chat_type | RCS 会话类型(1对1/群聊) |
| rcs_conversation_id | RCS 会话 ID |
| rcs_contribution_id | RCS 消息贡献 ID |
| rcs_file_selector | RCS 文件选择器标记 |
| rcs_file_transfered | RCS 文件是否已传输完成 |
| rcs_file_transfer_id | RCS 文件传输 ID |
| rcs_file_icon | RCS 文件图标路径 |
| rcs_burn | RCS 阅后即焚标记 |
| rcs_header | RCS 消息头信息 |
| rcs_file_path | RCS 文件路径 |
| rcs_is_download | RCS 文件是否已下载 |
| rcs_file_size | RCS 文件大小 |
| rcs_thumb_path | RCS 缩略图路径 |
| rcs_extend_body | RCS 扩展消息体(JSON/XML等) |
| rcs_media_played | RCS 媒体是否播放过 |
| rcs_ext_contact | RCS 扩展联系人信息 |
| rcs_file_record | RCS 文件传输记录 |
| rcs_transfer_date | RCS 文件传输时间 |
| rcs_group_at_reminds | RCS 群聊 @提醒 |
| rcs_audio_read | RCS 音频已读状态 |
登录后查看神龙缓存的 POC 文件快照
登录查看