Android security tags, read closely by Lightrion

CVE-2025-22422 AI-generated analysis

platform/frameworks/base (android.hardware.biometrics BiometricPrompt/PromptInfo, SystemUI biometrics AuthController/AuthContainerView/AuthDialog) and platform/packages/apps/Settings (password/BiometricFragment)

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

SystemUI's AuthController now dismisses a BiometricPrompt owned by Settings' ConfirmDeviceCredentialActivity when the top activity has a different class name. It does this by carrying the owning activity's class name in PromptInfo and comparing it with the top task's component, instead of comparing package names only.

Root cause

In packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java, the task-stack-change handler evicted the current biometric dialog only when runningTasks.get(0).topActivity.getPackageName() differed from mCurrentDialog.getOpPackageName() and the client was not system. When an app uses createConfirmDeviceCredentialIntent(), Settings' ConfirmDeviceCredentialActivity (via BiometricFragment) requests the prompt, so the client package is Settings. If the app then switches to Settings, the top package still equals the client package and the prompt is not cancelled. Per the commit message, this leaves 'settings activity showing background bp'.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to April 2025 · Findings