Android security tags, read closely by Lightrion

CVE-2026-0097 AI-generated analysis

platform/packages/modules/Bluetooth: system/stack/smp (Security Manager Protocol), system/stack/btm/btm_sec.cc, system/btif/src/btif_dm.cc

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

In the LE Secure Connections Passkey Display and Key Notification association models, the fix makes the legacy SMP layer wait for both the local user's approval (SMP_SecurityGrant) and the remote device's passkey confirmation before emitting SMP_KEY_READY_EVT. It treats a user rejection as an authentication failure, cancels LE pairing on authentication timeout, and sets the default LE pairing flags (is_le_only/is_le_nc) in btif for passkey notification.

Root cause

In system/stack/smp/smp_keys.cc, smp_process_stk always emitted SMP_KEY_READY_EVT (SMP_KEY_TYPE_STK) as soon as the key was computed. For the SMP_MODEL_SEC_CONN_PASSKEY_DISP and SMP_MODEL_KEY_NOTIF models, no state tied this step to the local user's approval. SMP_SecurityGrant had no handling for these models, so the user's accept or reject did not gate the SMP state machine. Also, btif_dm_ble_key_notif_evt did not set pairing_cb.is_le_only / is_le_nc. In BTM_PAIR_STATE_WAIT_AUTH_COMPLETE, btm_sec_pairing_timeout did not cancel an active LE SMP pairing, so a timeout did not tear that pairing down.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to June 2026 · Findings