
APK Android de prova de conceito para CVE-2025-10184, demonstrando a bypass da permissão de leitura de SMS nos provedores de telefonia OPPO/OnePlus. Inclui código-fonte, detalhes de verificação e uma correção manual para a vulnerabilidade.
Esta é a build APK do PoC para CVE‑2025‑10184
A vulnerabilidade existe em com.*.providers.telephony e permite que qualquer aplicativo leia mensagens SMS sem possuir a permissão de leitura de SMS
Este código-fonte e mais detalhes podem ser vistos no artigo da Rapid7:
https://www.rapid7.com/blog/post/cve-2025-10184-oneplus-oxygenos-telephony-provider-permission-bypass-not-fixed/
Após fazer login, baixe o pacote de instalação não assinado em Actions
Foi confirmado que a OPPO e suas submarcas são afetadas em todas as versões desde o ColorOS 7.1
A OPPO corrigiu oficialmente este problema (substituindo a permissão declarada pelo Provider por OPLUS_COMPONENT_SAFE) e está distribuindo a atualização gradualmente
O método de correção mais simples: basta verificar se o chamador possui a permissão de SMS antes da operação
Nota: este método foi verificado para impedir a leitura e não afeta a leitura por aplicativos que realmente possuem a permissão de SMS; no entanto, nenhum outro teste de impacto na usabilidade foi realizado
Adicione a verificação de permissão em tempo de execução no início do método update da 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
O código acima também precisa ser adicionado aos métodos update das classes PushMessageProvider e PushShopProvider
Após a modificação, não assine o pacote e instale com Core Patch (核心破解); caso contrário, toda a funcionalidade de chamadas será corrompida e todas as mensagens SMS serão perdidas (devido ao mecanismo de segurança do sistema)