Android security tags, read closely by Lightrion

CVE-2024-32896 AI-generated analysis

platform/frameworks/base, RecoverySystemService / android.security.AndroidKeyStoreMaintenance; platform/system/sepolicy, system_server keystore2 policy

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

RecoverySystemService.rebootRecoveryWithCommand() now destroys all KeyMint keys via the new AndroidKeyStoreMaintenance.deleteAllKeys() (IKeystoreMaintenance.deleteAllKeys) before rebooting to recovery when the command contains "--wipe_data", with a matching SELinux allow for system_server, so FBE-encrypted data becomes unrecoverable even if the recovery data wipe is interrupted or skipped.

Root cause

Before the fix, a factory reset request through RecoverySystemService.rebootRecoveryWithCommand() only wrote the command (including "--wipe_data") into the BCB via setupOrClearBcb(true, command) and then called PowerManager.reboot(REBOOT_RECOVERY), leaving data destruction to recovery after the reboot. The Keystore/KeyMint keys that protect the synthetic password blobs (used by LockSettingsService to derive FBE keys) and the keys protecting DE and metadata encryption keys (used by vold) stayed intact until recovery ran. Per the commit messages, if the recovery wipe was interrupted or skipped, the FBE-encrypted data could still be recovered.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2024 · Findings