Android security tags, read closely by Lightrion

CVE-2024-43086 AI-generated analysis

platform/frameworks/base, services/core AccountManagerService (accounts)

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 an else-if branch to the authenticator validation loop in AccountManagerService so that when a TABLE_META entry (type -> uid) still has an installed uid but the currently registered authenticator for that type belongs to a different uid, the stale type is marked obsolete, its meta row is deleted, and accounts of that type are purged.

Root cause

In services/core/java/com/android/server/accounts/AccountManagerService.java, the loop that reconciles persisted TABLE_META entries (authToUidEntry: type -> uid) against the currently cached authenticators (knownAuth) only purged an entry when the old uid no longer had any installed or updated package (!knownUids.get(uid)). If the old uid's package was still present (for example the authenticator was disabled rather than uninstalled, per the commit title) and a different uid now registered an authenticator for the same type, the entry fell through without action: the type was not added to obsoleteAuthType, the meta row was not deleted, and the existing accounts of that type were kept while the new authenticator uid was written by insertOrReplaceMetaAuthTypeAndUid. The bulletin rates this High / ID (information disclosure).

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to November 2024 · Findings