Android security tags, read closely by Lightrion

CVE-2024-34722 AI-generated analysis

platform/packages/modules/Bluetooth, system/stack/smp (BLE Security Manager Protocol, legacy 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 (6 corrections). Verify against the commit before relying on it.

Adds a new SMP control-block flag, SMP_PAIR_FLAGS_CMD_CONFIRM_SENT, which is set when the local Pairing Confirm is sent. smp_proc_init and smp_proc_rand now reject a peer rand received in BLE legacy pairing before the local confirm was sent, and fail the pairing with SMP_INVALID_PARAMETERS.

Root cause

In system/stack/smp/smp_act.cc, smp_proc_init (and smp_proc_rand, an identical function on branches from sc-dev to udc-dev) stored the peer's random value into p_cb->rrand after only smp_command_has_invalid_parameters(). They did not check whether the local device had already sent its own Pairing Confirm. Per the fix's comment, in legacy pairing the peer should send its rand only after the local confirm. Per the commit message, when BLE legacy pairing is initiated from the remote side, authentication can be bypassed.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to January 2025 · Findings