
CVE-2025-10184 の Android APK 概念実証 (PoC)、OPPO/OnePlus 電話プロバイダーにおける SMS 読み取り許可バイパスを示す。ソースコード、検証詳細、脆弱性の手動修正を含む。
これは CVE‑2025‑10184 の PoC の APK ビルドです
この脆弱性は com.*.providers.telephony に存在し、SMS読み取り権限を持たない任意のアプリが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 に置き換えることで)。現在、段階的にアップデートを配信中です
最も簡単な修正方法:操作の前に、呼び出し元が SMS 権限を持っているかどうかを検証するだけでよい。 注:この方法は読み取りを防止できることが確認されており、実際に SMS 権限を持つアプリの読み取りには影響しませんが、他の可用性への影響はテストされていません。
ServiceNumberProvider クラスの update メソッドの先頭に実行時権限チェックを追加します:
.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 メソッドにも上記のコードを追加する必要があります
修正後は 署名せず、コアクラック(核心破解) 後にインストールしてください。そうしないと、通話機能全体が破壊され、すべてのSMSが失われます(システムのセキュリティ機構による)