Android security tags, read closely by Lightrion

CVE-2023-40089 AI-generated analysis

platform/frameworks/base, DevicePolicyManager / DevicePolicyManagerService (credential manager policy)

AI-generated: written from the bulletin and the fixing diffs by claude-fable-5-1, then checked against the code by claude-opus-5-5 (8 corrections). Verify against the commit before relying on it.

Makes DevicePolicyManager.getCredentialManagerPolicy() user-handle aware. The IDevicePolicyManager call now carries an explicit userId, the service looks up the profile/device owner for that user instead of the Binder caller's user, and cross-user queries require INTERACT_ACROSS_USERS.

Root cause

In DevicePolicyManagerService.java, getCredentialManagerPolicy() took no user argument and resolved the admin with getProfileOwnerOrDeviceOwnerLocked(caller.getUserId()), so it always used the user derived from the Binder calling identity. The client DevicePolicyManager.getCredentialManagerPolicy() did not pass the user of its Context (myUserId()). The policy returned therefore came from the calling user's profile/device owner, not from the user the DevicePolicyManager instance was bound to.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to December 2023 · Findings