
Android APK preuve de concept pour CVE-2025-10184, démontrant le contournement de l'autorisation de lecture des SMS dans les fournisseurs de téléphonie OPPO/OnePlus. Comprend le code source, les détails de vérification et un correctif manuel pour la vulnérabilité.
Ceci est une construction APK d'un PoC pour CVE‑2025‑10184
Cette vulnérabilité se trouve dans com.*.providers.telephony et permet à toute application de lire les SMS sans avoir obtenu l'autorisation de lecture des SMS.
Ce code source et plus de détails sont disponibles dans l'article de Rapid7 :
https://www.rapid7.com/blog/post/cve-2025-10184-oneplus-oxygenos-telephony-provider-permission-bypass-not-fixed/
Veuillez vous connecter puis télécharger le package d'installation non signé dans Actions
Il a été confirmé que OPPO et ses sous-marques, toutes les versions depuis ColorOS 7.1, sont affectées.
OPPO a officiellement corrigé ce problème (en remplaçant la permission déclarée par le Provider par OPLUS_COMPONENT_SAFE) et déploie actuellement la mise à jour progressivement.
La méthode de correction la plus simple : il suffit de vérifier que l'appelant possède l'autorisation SMS avant l'opération.
Note : Cette méthode a été vérifiée pour empêcher la lecture et n'affecte pas la lecture par les applications qui possèdent réellement l'autorisation SMS, mais aucun test d'impact sur la disponibilité n'a été effectué.
Dans la méthode update de la classe ServiceNumberProvider, ajoutez la vérification d'autorisation au moment de l'exécution au début :
.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
Les méthodes update des classes PushMessageProvider et PushShopProvider doivent également ajouter le code ci-dessus.
Après modification, veuillez ne pas signer et installer après avoir effectué un core patch, sinon toute la fonction d'appel sera endommagée et tous les SMS seront perdus (en raison du mécanisme de sécurité du système).