Android security tags, read closely by Lightrion

CVE-2025-48577 AI-generated analysis

platform/frameworks/base, SystemUI keyguard (KeyguardViewMediator)

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.

KeyguardViewMediator now re-checks the target user id at several points in the biometric-auth and keyguardDone/keyguardGoingAway dismissal chain. If the current user changed in between, it resets the keyguard instead of letting a pending dismissal started before the user switch complete.

Root cause

In packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java, the dismissal pipeline checked the target user only at the entry points: keyguardDone and keyguardDonePending compared targetUserId with KeyguardUpdateMonitor.getCurrentUser(). After that, it tracked the request with a boolean mKeyguardDonePending that held no user, and passed a single shared Runnable, mHideAnimationFinishedRunnable, to startPreHideAnimation. readyForKeyguardDone and tryKeyguardDone also carried no user. Per the commit message, if the user changed while these deferred steps were in flight, the prior keyguard could be dismissed. In addition, mUpdateCallback.onBiometricAuthenticated did not check that the authenticated userId was the current user. The mUiBgExecutor body of mKeyguardGoingAwayRunnable also called ActivityTaskManager.getService().keyguardGoingAway() without re-checking that mGoingAwayRequestedForUserId still matched the current user.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to March 2026 · Findings