Android security tags, read closely by Lightrion

CVE-2025-48598 AI-generated analysis

platform/packages/apps/Settings, biometrics (face enrollment: BiometricEnrollBase, FaceEnroll trampoline, FaceEnrollIntroduction)

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.

Settings biometric enrollment now only honors Intent.EXTRA_USER_ID when the activity was launched by the Settings package itself, and the FaceEnroll trampoline strips EXTRA_USER_ID before forwarding extras from external callers, so a third-party app can no longer steer face enrollment to another user id.

Root cause

BiometricEnrollBase.onCreate read mUserId directly from getIntent().getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId()) with no check on who supplied the intent. The FaceEnroll trampoline (FaceEnroll.kt; the commit message refers to the trampoline added in change Ie469c47005afb941f5646a2f790736362c23c697) copies all extras of its incoming intent into nextIntent via putExtras(intent) and starts the next enrollment activity, so the next activity is started by Settings while carrying extras chosen by an external caller. FaceEnrollIntroduction.launchFaceSettingsActivity also re-read EXTRA_USER_ID from the raw intent and forwarded it to Settings.FaceSettingsInternalActivity. Together these let a caller outside Settings control the user id used in face enrollment flows (bulletin: High, EoP).

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to December 2025 · Findings