Android security tags, read closely by Lightrion

CVE-2025-22435 AI-generated analysis

platform/packages/modules/Bluetooth, AVDTP signaling (system/stack/avdt)

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

Adds a check in avdt_msg_ind (system/stack/avdt/avdt_msg.cc) that drops an incoming AVDTP response or reject whose signal id does not match the command currently pending on the CCB (p_ccb->p_curr_cmd->event), or that arrives when no command is pending. This prevents type confusion when the response is parsed.

Root cause

In avdt_msg_ind, for messages that are not a general reject, the signal id (sig) is parsed straight from the incoming packet (AVDT_MSG_PRS_SIG) and only range-checked (1..AVDT_SIG_MAX). For response messages the function then picks a parse target based on that sig. For AVDT_SIG_DISCOVER it casts p_ccb->p_proc_data to tAVDT_SEP_INFO* and uses p_ccb->proc_param as num_seps. For AVDT_SIG_GETCAP and AVDT_SIG_GET_ALLCAP it casts p_ccb->p_proc_data to AvdtpSepConfig*. Nothing checked that the sig in a received RSP or REJ matched the pending command (p_ccb->p_curr_cmd). Per the commit message, a peer could therefore reply to a pending AVDT message with the wrong type, causing type confusion and an eventual OOB access.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to April 2025 · Findings