Android security tags, read closely by Lightrion

CVE-2025-26438 AI-generated analysis

platform/packages/modules/Bluetooth, system/stack/smp (Security Manager Protocol, LE Secure Connections OOB pairing)

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

Adds a check in smp_process_secure_connection_oob_data that aborts LE Secure Connections OOB pairing with SMP_OOB_FAIL when the peer's OOB flag is SMP_OOB_PRESENT but no local OOB data is stored, instead of continuing with a zeroed local randomizer.

Root cause

In system/stack/smp/smp_act.cc, smp_process_secure_connection_oob_data() is invoked from smp_start_secure_connection_phase1() when the selected association model is SMP_MODEL_SEC_CONN_OOB, a model for which p_cb->sec_level is set to SMP_SEC_AUTHENTICATED. Per the commit message, when no local OOB data is available the stack sets the local OOB randomizer to zero (p_cb->local_random = {0}) and continues. Nothing verified that a peer which flagged OOB data as present (p_cb->peer_oob_flag == SMP_OOB_PRESENT) could actually have obtained local OOB data. Per the commit message, a malicious peer could therefore claim to have OOB data and proceed with pairing against the zero randomizer, bypassing SMP authentication.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to May 2025 · Findings