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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2025-10184 PoC — OnePlus OxygenOS 安全漏洞

Source
Associated Vulnerability
Title:OnePlus OxygenOS 安全漏洞 (CVE-2025-10184)
Description:OnePlus OxygenOS是中国一加(OnePlus)公司的一款智能手机操作系统。 OnePlus OxygenOS存在安全漏洞,该漏洞源于多个内容提供程序缺少写入操作权限以及这些提供程序的update方法中存在SQL注入,可能导致敏感信息泄露。
Readme
# APK Build for CVE‑2025‑10184 PoC

这是一个 **CVE‑2025‑10184** 的 **PoC** 的 APK 构建

该漏洞存在于 com.\*.providers.telephony 中, 允许任意应用在未获得 SMS 读取权限的情况下读取短信

---

## 源码

此源码及更多细节可见 Rapid7 的文章:  
https://www.rapid7.com/blog/post/cve-2025-10184-oneplus-oxygenos-telephony-provider-permission-bypass-not-fixed/

---

## 下载

请登录后在 Actions 下载 **未签名** 的安装包

---

## 验证

已确认 OPPO 及其子品牌, 自 ColorOS 7.1 的所有版本均受影响

---

## 修复

OPPO 官方已修复此问题 (通过替换 Provider 声明的权限为 OPLUS_COMPONENT_SAFE), 目前正在逐步推送更新

---

## 等不了 OPPO 了, 我他妈自己修

最简单的修复方法:只需要在操作之前验证调用者是否拥有 SMS 权限  
注:此方法已验证可以防止读取, 并且不影响真正拥有 SMS 权限的应用读取, 但是未进行其他可用性影响测试

在 `ServiceNumberProvider` 类的 `update` 方法开头添加运行时权限检查:
```diff
 .method public update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
     .registers 8

+    invoke-virtual {p0}, Lcom/android/providers/telephony/ServiceNumberProvider;->getContext()Landroid/content/Context;
+    move-result-object v0
+    
+    const-string v1, "android.permission.READ_SMS"
+    const-string v2, "Requires READ_SMS permission"
+    invoke-virtual {v0, v1, v2}, Landroid/content/Context;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
+   
     .line 157
     iget-object p0, p0, Lcom/android/providers/telephony/ServiceNumberProvider;->mOpenHelper:Lcom/android/providers/telephony/MmsSmsDatabaseHelper;
 
     invoke-virtual {p0}, Lcom/android/providers/telephony/MmsSmsDatabaseHelper;->getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;
 
     move-result-object p0
 
     # ... 省略其余原有代码
 .end method
```
在 `PushMessageProvider` 类和 `PushShopProvider` 类的 `update` 方法也需要添加以上代码  

修改后请 **不要签名** 并且需要 **核心破解** 后安装, 否则将破坏整个通话功能并丢失所有短信 (系统安全机制所致)
File Snapshot

[4.0K] /data/pocs/a34a1d1c0ea18afc7f5c1f60494aa00327567409 ├── [4.0K] app │   ├── [ 953] build.gradle │   ├── [ 751] proguard-rules.pro │   └── [4.0K] src │   ├── [4.0K] androidTest │   │   └── [4.0K] java │   │   └── [4.0K] poc │   │   └── [4.0K] chutchut │   │   └── [4.0K] cpblindsqli │   │   └── [ 775] ExampleInstrumentedTest.java │   ├── [4.0K] main │   │   ├── [ 754] AndroidManifest.xml │   │   ├── [4.0K] java │   │   │   └── [4.0K] poc │   │   │   └── [4.0K] chutchut │   │   │   └── [4.0K] cpblindsqli │   │   │   ├── [ 14K] MainActivity.java │   │   │   └── [9.3K] QueryParser.java │   │   └── [4.0K] res │   │   ├── [4.0K] drawable │   │   │   └── [5.5K] ic_launcher_background.xml │   │   ├── [4.0K] drawable-v24 │   │   │   └── [1.7K] ic_launcher_foreground.xml │   │   ├── [4.0K] layout │   │   │   └── [1.8K] activity_main.xml │   │   ├── [4.0K] mipmap-anydpi-v26 │   │   │   ├── [ 272] ic_launcher_round.xml │   │   │   └── [ 272] ic_launcher.xml │   │   ├── [4.0K] mipmap-hdpi │   │   │   ├── [3.5K] ic_launcher.png │   │   │   └── [5.2K] ic_launcher_round.png │   │   ├── [4.0K] mipmap-mdpi │   │   │   ├── [2.6K] ic_launcher.png │   │   │   └── [3.3K] ic_launcher_round.png │   │   ├── [4.0K] mipmap-xhdpi │   │   │   ├── [4.8K] ic_launcher.png │   │   │   └── [7.3K] ic_launcher_round.png │   │   ├── [4.0K] mipmap-xxhdpi │   │   │   ├── [7.7K] ic_launcher.png │   │   │   └── [ 12K] ic_launcher_round.png │   │   ├── [4.0K] mipmap-xxxhdpi │   │   │   ├── [ 10K] ic_launcher.png │   │   │   └── [ 16K] ic_launcher_round.png │   │   └── [4.0K] values │   │   ├── [ 208] colors.xml │   │   ├── [ 74] strings.xml │   │   └── [ 383] styles.xml │   └── [4.0K] test │   └── [4.0K] java │   └── [4.0K] poc │   └── [4.0K] chutchut │   └── [4.0K] cpblindsqli │   └── [ 396] ExampleUnitTest.java ├── [ 574] build.gradle ├── [4.0K] gradle │   └── [4.0K] wrapper │   ├── [ 53K] gradle-wrapper.jar │   └── [ 230] gradle-wrapper.properties ├── [1.1K] gradle.properties ├── [5.2K] gradlew ├── [2.1K] gradlew.bat ├── [2.2K] README.md └── [ 46] settings.gradle 31 directories, 33 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. If the original source is unavailable, please email f.jinxu#gmail.com for a local snapshot (replace # with @).
    3. Shenlong has snapshotted the POC code for you. To support long-term maintenance, please consider donating. Thank you for your support.