← Notes

CVE-2026-43062: Bluetooth L2CAP Type Confusion in l2cap_ecred_reconf_rsp()

Overview

CVECVE-2026-43062
Componentnet/bluetooth/l2cap_core.c (l2cap_ecred_reconf_rsp())
Introduced15f02b910562
Fix8c5c181c2693
ClassCWE-843 (Type Confusion)
CVSS v3.17.1 (High) -- CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:L
Found and patched byLukas Johannes Moeller (@JohannesLks)

TL;DR

The ECRED reconfiguration response parser casts packet data to the wrong response structure. That makes the length check too strict and reads the result field from offset 6 even though the real response is a 2-byte structure. The result is a remotely triggerable Bluetooth protocol-state bug rather than a proven memory-corruption primitive.

Root Cause

The vulnerable handler uses the connection response type:

struct l2cap_ecred_conn_rsp *rsp = (void *) data;

if (cmd_len < sizeof(*rsp))   // 8 bytes
    return -EPROTO;

result = __le16_to_cpu(rsp->result); // offset 6

The packet being parsed is an ECRED reconfiguration response:

struct l2cap_ecred_reconf_rsp {
    __le16 result;
};

That mismatch creates two separate parser errors: valid 2-byte responses are rejected, and longer attacker-controlled packets can steer the result value through bytes that are not the result field.

Impact

  • Remote Bluetooth peer can disrupt ECRED MTU/MPS reconfiguration without pairing.
  • No out-of-bounds access is required for exploitation; the bug is type confusion and state-machine correctness.
  • Security severity is lower than a kernel memory corruption issue, but the finding is still worth publishing because it sits in unauthenticated Bluetooth parsing and had a one-line, high-confidence fix.

Fix

- struct l2cap_ecred_conn_rsp *rsp = (void *) data;
+ struct l2cap_ecred_reconf_rsp *rsp = (void *) data;

After the type correction, sizeof(*rsp) matches the wire format and rsp->result is read from the correct offset.