
# CVE-2025-10184용 Android APK 개념 증명 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가 손실됩니다 (시스템 보안 메커니즘 때문).