Android security tags, read closely by Lightrion

CVE-2025-48634 AI-generated analysis

platform/frameworks/base, WindowManagerService (services/core/java/com/android/server/wm), window relayout

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

Adds a permission-based sanitizer (sanitizePrivateFlags) to WindowManagerService relayout so that a client cannot newly set PRIVATE_FLAG_TRUSTED_OVERLAY / PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY without INTERNAL_SYSTEM_WINDOW, or PRIVATE_FLAG_INTERCEPT_GLOBAL_DRAG_AND_DROP without MANAGE_ACTIVITY_TASKS.

Root cause

In WindowManagerService's relayout path (the block that calls displayPolicy.adjustWindowParamsLw(win, attrs) and then sanitizeFlagSlippery / sanitizeSpyWindow), the caller-supplied attrs.privateFlags were taken as-is, while attrs.flags (FLAG_SLIPPERY), attrs.inputFeatures (spy window) and the systemUiVisibility disable bits (hasStatusBarPermission) were checked against caller permissions. Therefore a client that already owns a window could, on a subsequent relayout, add the private flags PRIVATE_FLAG_TRUSTED_OVERLAY, PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY or PRIVATE_FLAG_INTERCEPT_GLOBAL_DRAG_AND_DROP to its window without holding INTERNAL_SYSTEM_WINDOW or MANAGE_ACTIVITY_TASKS. The bulletin rates this High / EoP.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to March 2026 · Findings