Android security tags, read closely by Lightrion

CVE-2025-48628 AI-generated analysis

platform/frameworks/base, print service (services/print, PrintManagerService)

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

PrintManagerService.validateIconUserBoundary now derives the icon URI's user id from the URI authority via ContentProvider.getUserIdFromAuthority (defaulting to the resolved calling user) and always enforces the current-user-group check for URI-type icons, instead of relying on Uri.getEncodedUserInfo and skipping the check when it returned null.

Root cause

In services/print/java/com/android/server/print/PrintManagerService.java, validateIconUserBoundary(Icon) got the user id of a TYPE_URI / TYPE_URI_ADAPTIVE_BITMAP icon from icon.getUri().getEncodedUserInfo(). The commit message says a specially crafted URI could make Uri.getEncodedUserInfo return an incorrect value. The old code ran the "current group members only" check (resolveCallingProfileParentLocked(resolvedUserId) != getCurrentUserId()) only when encodedUser was non-null. When it was null, the method skipped the check and assumed the URI pointed into the caller's own user space. The old code also called Integer.parseInt(encodedUser) directly and resolved the parsed user via resolveCallingUserEnforcingPermissions.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to December 2025 · Findings