Android: Local privilege escalation in Android DevicePolicyManagerService (hasAccountsOnAnyUser logic error) (CVE-2025-48633) #shorts
Summary
Welcome to today’s security podcast. We’ll be unpacking CVE-2025-48633, a locally exploitable logic flaw in Google Android’s DevicePolicyManagerService. This issue allows an attacker to add a Device Owner after provisioning without user interaction or extra privileges, enabling local privilege escalation. It’s one of two high-severity flaws under targeted exploitation in Google’s December patch rollout.
Product details
The vulnerability affects Google Android versions 13, 14, 15, and 16. It resides in the Android Framework’s DevicePolicyManagerService component, specifically in the hasAccountsOnAnyUser function. All devices running these Android releases are impacted until they receive the December security updates from Google.
Vulnerability type summary
CVE-2025-48633 is classified as an information disclosure and local privilege escalation vulnerability. It stems from a logic error in the code that checks for existing accounts on user profiles, allowing unauthorized elevation of app permissions to full Device Owner status.
Details of the vulnerability
In the hasAccountsOnAnyUser method of DevicePolicyManagerService.java, a flawed conditional lets an attacker bypass normal provisioning checks. By invoking this method locally, a malicious app can register itself as a Device Owner post-provisioning. Once granted Device Owner privileges, the attacker gains broad control over device policies, including enforcing restrictive settings, installing or removing apps, and potentially exfiltrating sensitive data. No special execution privileges or user consent are needed, making exploitation straightforward on an unpatched device.
Conclusion
CVE-2025-48633 underscores the importance of timely patching. If you manage or use Android 13 through 16 devices, apply Google’s December security update immediately. Restrict installation of untrusted apps and monitor device-owner assignments to reduce risk. Stay tuned to this podcast for further security bulletins and best practices.
Watch the full video on YouTube: CVE-2025-48633
Remediation and exploitation details
This chain involves the following actors
- Attacker: Local unprivileged user or malicious application seeking privilege escalation
- Victim: Device user or organization relying on Android device policy controls
This following systems are involved
- Android DevicePolicyManagerService (Enforces device administration policies and owner assignments): Validates and assigns Device Owner status during provisioning
- Android Provisioning Framework (Initial device setup and assignment of management roles): Calls hasAccountsOnAnyUser to check for existing accounts before owner assignment
Attack entry point
- hasAccountsOnAnyUser logic: A conditional check in DevicePolicyManagerService.java that fails to block post-provisioning owner assignment
Remediation actions
Exploitation actions
Gain a foothold to call device policy methods without elevated privileges
- Context.bindService(new Intent("android.app.DevicePolicyManager"), serviceConnection, Context.BIND_AUTO_CREATE);
Trigger the logic error that always returns false for existing accounts
- dpmProxy.hasAccountsOnAnyUser(userHandleAll);
Exploit bypassed check to register as Device Owner without user confirmation
- dpmProxy.setDeviceOwner(adminComponentName, "com.attacker.package", userHandleCurrent);
Use DEVICE_MGMT commands to confirm owner-level rights
- boolean isOwner = dpmProxy.isDeviceOwnerApp("com.attacker.package");
Related Content
NOTE: The following related content has not been vetted and may be unsafe.
- https://android.googlesource.com/platform/frameworks/base/+/d00bcda9f42dcf272d329e9bf9298f32af732f93
- https://source.android.com/security/bulletin/2025-12-01
- [2025-12-02] Google patches 51 Android vulnerabilities, including two high-severity flaws under targeted exploitation.
- [2025-12-08] A vulnerability in Google Android 13/14/15/16 allows for local privilege escalation via the hasAccountsOnAnyUser function in DevicePolicyManagerService.java.
- [2025-12-05] Two new vulnerabilities in the Android Framework, CVE-2025-48633 and CVE-2025-48572, are being actively exploited, posing risks to global organizations.