
Android APK proof-of-concept per CVE-2025-10184, che dimostra l'elusione del permesso di lettura SMS nei provider di telefonia OPPO/OnePlus. Include codice sorgente, dettagli di verifica e una correzione manuale per la vulnerabilità.
Questa è una build APK del PoC per CVE‑2025‑10184
La vulnerabilità risiede in com.*.providers.telephony e consente a qualsiasi app di leggere SMS senza il permesso di lettura degli SMS
Il codice sorgente e ulteriori dettagli sono disponibili nell'articolo di Rapid7:
https://www.rapid7.com/blog/post/cve-2025-10184-oneplus-oxygenos-telephony-provider-permission-bypass-not-fixed/
Dopo aver effettuato l'accesso, scarica il pacchetto non firmato da Actions
È stato confermato che OPPO e i suoi sub-brand, a partire da ColorOS 7.1, sono tutti affetti da questa vulnerabilità
OPPO ha ufficialmente risolto il problema (sostituendo il permesso dichiarato dal Provider con OPLUS_COMPONENT_SAFE) e sta gradualmente distribuendo l'aggiornamento
Il metodo di correzione più semplice: basta verificare che il chiamante disponga del permesso SMS prima di eseguire l'operazione
Nota: questo metodo è stato verificato e impedisce la lettura, senza influenzare la lettura da parte delle app che hanno effettivamente il permesso SMS, ma non sono stati eseguiti altri test sull'impatto dell'usabilità
Aggiungi un controllo di autorizzazione runtime all'inizio del metodo update della classe ServiceNumberProvider:
.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
Lo stesso codice deve essere aggiunto anche ai metodi update delle classi PushMessageProvider e PushShopProvider
Dopo la modifica, non firmare l'APK e installalo con core crack, altrimenti verranno compromesse tutte le funzionalità di chiamata e si perderanno tutti gli SMS (a causa del meccanismo di sicurezza del sistema)