Android security tags, read closely by Lightrion

CVE-2023-45776 AI-generated analysis

platform/packages/modules/Bluetooth, LE Audio broadcaster (system/bta/le_audio/broadcaster/broadcaster.cc, LeAudioBroadcasterImpl)

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.

Adds length checks in LeAudioBroadcasterImpl (system/bta/le_audio/broadcaster/broadcaster.cc) so that the 2-byte StreamingAudioContext LTV value from caller-supplied broadcast subgroup metadata is only read or written when the value vector holds at least 2 bytes.

Root cause

In LeAudioBroadcasterImpl (commit title: CreateAudioBroadcast), each subgroup metadata blob is parsed into an LeAudioLtvMap and the kLeAudioMetadataTypeStreamingAudioContext entry is looked up with ltv.Find. The code then took stream_context_vec.value().data() and, without checking the size, ran UINT16_TO_STREAM (a write, in the PTS multiple-contexts branch) and STREAM_TO_UINT16 (a read, in the general path). Both macros access 2 bytes. If the entry's value was 0 or 1 bytes long, the 2-byte access went beyond the vector's storage: an OOB write at the first site and an OOB read at the second. The fix implies that parsing did not enforce a minimum length for this type.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to December 2023 · Findings