CVE-2026-82389 in Zephyrinfo

Zusammenfassung

von VulDB • 26.10.2026

In der Rolle des Audio-Gateways (Audio Gateway) im Bluetooth Classic Hands-Free Profile wird durch `hfp_ag_create()` in `subsys/bluetooth/host/classic/hfp_ag.c` eine SDP-Entdeckung (Service Discovery Protocol) zum Peer gestartet, die den eingebetteten Knoten `ag->sdp_param._node` in die Warteschlange der ausstehenden Anfragen des SDP-Clients in `subsys/bluetooth/host/classic/sdp.c` einfügt. Wenn der nachfolgende Aufruf von `bt_rfcomm_dlc_connect()` fehlschlägt, wird das gesamte AG-Objekt durch `memset()` bereinigt (auf Null gesetzt), während dieser Knoten noch verknüpft ist und `ag->slc_work` möglicherweise weiterhin in der System-Warteschlange (`work queue`) wartet. Eine bereits gestartete SDP-Entdeckung kann nicht abgebrochen werden – `bt_sdp_discover_cancel()` ist zwar im öffentlichen Header deklariert, hat aber keine Implementierung –, sodass die Anfrage mit auf Null gesetzten Zeigern für Funktion, Pool und UUID in der Liste verbleibt.

Der RFCOMM-Kanal, der an `bt_hfp_ag_connect()` übergeben wird, stammt aus dem eigenen SDP-Hands-Free-Datensatz des Peers im normalen AG-Ablauf (`bt_sdp_get_proto_param()` führt keine Bereichsvalidierung durch, und `samples/bluetooth/classic/handsfree_ag` übergibt den Wert direkt weiter). Daher zwingt ein entferntes BR/EDR-Gerät innerhalb der Funkreichweite, das einen RFCOMM-Kanal außerhalb des gültigen Bereichs 0x01..0x1e ankündigt, deterministisch dazu, dass `bt_rfcomm_dlc_connect()` fehlschlägt und die Bereinigung (`wipe`) ausgelöst wird. Das Auslesen des SDP-Datensatzes des Peers erfordert keine Pairing-Verbindung; der Peer kann den Fehler auch auslösen, indem er das ACL (Access Control Link) abbricht oder zur richtigen Zeit ein RFCOMM DLC auf demselben DLCI (Data Link Identifier) konkurrierend startet.

Wenn der SDP-Client seine Warteschlange von Anfragen weiterverarbeitet, dereferenziert `sdp_client_discover()` die auf Null gesetzten Parameter – `net_buf_alloc(param->pool, …)` mit einem NULL-Pool und `param->uuid->type` –, und die Ergebnisbenachrichtigungspfade rufen über den NULL-Parameter `params->func`. Das Auf-Null-Setzen eines verknüpften Knotens kürzt auch die Warteschlange hinter einem veralteten Endzeiger (`tail pointer`) ab, und das erneute Scharfschalten des freigegebenen AG-Slots hängt denselben Knoten erneut an und kann eine sich selbst durchlaufende Liste erzeugen, die den Bluetooth-RX-Thread blockiert. Die Auswirkung ist ein Absturz oder Hängen des Bluetooth-Stacks; der geschriebene Wert ist eine konstante Null an einer festen statischen Adresse, sodass kein angreiferkontrollierter Schreibzugriff verfügbar ist.

Nur Builds mit `CONFIG_BT_CLASSIC` und `CONFIG_BT_HFP_AG`, die die Audio-Gateway-Rolle verwenden, sind betroffen.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Zuständig

Zephyr

Reservieren

28.08.2026

Veröffentlichung

26.10.2026

Moderieren

akzeptiert

Eintrag

VDB-426524

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!