Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2025-10184 PoC — OnePlus OxygenOS Telephony provider permission bypass

Source
Associated Vulnerability
Title:OnePlus OxygenOS Telephony provider permission bypass (CVE-2025-10184)
Description:The vulnerability allows any application installed on the device to read SMS/MMS data and metadata from the system-provided Telephony provider without permission, user interaction, or consent. The user is also not notified that SMS data is being accessed. This could lead to sensitive information disclosure and could effectively break the security provided by SMS-based Multi-Factor Authentication (MFA) checks. The root cause is a combination of missing permissions for write operations in several content providers (com.android.providers.telephony.PushMessageProvider, com.android.providers.telephony.PushShopProvider, com.android.providers.telephony.ServiceNumberProvider), and a blind SQL injection in the update method of those providers.
Description
ColorOS短信漏洞
Readme
> [信息来源](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 音频已读状态                 |

File Snapshot

[4.0K] /data/pocs/c4e389f74652edc3c9412cdf599060744637ce13 ├── [4.0K] app │   ├── [1002] build.gradle.kts │   ├── [1.1K] proguard-rules.pro │   ├── [4.0K] release │   │   └── [ 396] output-metadata.json │   └── [4.0K] src │   └── [4.0K] main │   ├── [1.1K] AndroidManifest.xml │   ├── [4.0K] assets │   │   └── [ 37] xposed_init │   ├── [4.0K] java │   │   └── [4.0K] yuu │   │   └── [4.0K] xposed │   │   ├── [4.0K] jump │   │   │   └── [5.8K] TelephonyHookModule.kt │   │   ├── [ 22K] MainActivity.java │   │   └── [9.3K] QueryParser.java │   └── [4.0K] res │   ├── [4.0K] drawable │   │   └── [139K] icon.webp │   ├── [4.0K] layout │   │   └── [1.7K] activity_main.xml │   └── [4.0K] values │   ├── [ 161] scope.xml │   └── [ 887] strings.xml ├── [ 228] build.gradle.kts ├── [4.0K] gradle │   ├── [ 424] libs.versions.toml │   └── [4.0K] wrapper │   ├── [ 44K] gradle-wrapper.jar │   └── [ 281] gradle-wrapper.properties ├── [1.3K] gradle.properties ├── [8.5K] gradlew ├── [2.8K] gradlew.bat ├── [2.9K] opex_15.0.0.860Patch01.cfg ├── [ 14K] README.md └── [ 634] settings.gradle.kts 16 directories, 22 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →