Android security tags, read closely by Lightrion

CVE-2025-48649 AI-generated analysis

platform/frameworks/base, ActivityManagerService / PackageManagerService / permission (resetRuntimePermissions)

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 (4 corrections). Verify against the commit before relying on it.

Threads a restorePregrantedPermissions flag from ActivityManager through ActivityManagerService, PackageManagerService and PermissionManagerServiceImpl so that an app clearing its own data (public ActivityManager.clearApplicationUserData()) no longer gets default- or role-granted runtime permissions re-granted by the system, while callers holding CLEAR_APP_USER_DATA keep the old restoring behaviour.

Root cause

ActivityManagerService.clearApplicationUserData permits a caller without CLEAR_APP_USER_DATA when the target package has the caller's own uid (applicationInfo.uid == uid). That path calls IPackageManager.clearApplicationUserData after Binder.clearCallingIdentity, which in PackageManagerService.clearApplicationUserDataLIF calls mPermissionManager.resetRuntimePermissions(pkg, userId). In PermissionManagerServiceImpl.resetRuntimePermissionsInternal, every permission carrying FLAG_PERMISSION_GRANTED_BY_DEFAULT or FLAG_PERMISSION_GRANTED_BY_ROLE was unconditionally re-granted via grantRuntimePermissionInternal(..., Process.SYSTEM_UID, ...). As a result the public, unprivileged ActivityManager.clearApplicationUserData() let an app have previously pregranted runtime permissions restored for itself, which the bulletin rates as a High EoP.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to June 2026 · Findings