Android security tags, read closely by Lightrion

CVE-2026-0045 AI-generated analysis

platform/packages/modules/Bluetooth, BTM security manager (system/stack/btm/btm_sec.cc); on 15/16 also BTA JV RFCOMM client (system/bta/jv/bta_jv_act.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 (5 corrections). Verify against the commit before relying on it.

In the Bluetooth stack's btm_sec_is_upgrade_possible (system/stack/btm/btm_sec.cc), the fix makes the function return true when a link key is known, the service requires authentication in the relevant direction and the peer's bond is temporary; the code comment says this is meant to trigger pairing.

Root cause

btm_sec_is_upgrade_possible() sets is_possible = false as soon as the device record has BTM_SEC_LINK_KEY_KNOWN. It sets it back to true only when a MITM upgrade is both required (BTM_SEC_OUT_MITM / BTM_SEC_IN_MITM) and feasible given the link key type and IO capabilities. It never looked at the bond type. So if the peer was bonded only temporarily (p_dev_rec->is_bond_type_temporary()) and the service's security_required contained BTM_SEC_OUT_AUTHENTICATE or BTM_SEC_IN_AUTHENTICATE, the function still returned false (no upgrade possible). On Android 16 a partial check already existed, but it was gated behind the aconfig flag upgrade_temp_bonding_on_auth_req and tested only BTM_SEC_OUT_AUTHENTICATE, which left the responder (incoming) direction unhandled.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to June 2026 · Findings