CVE-2026-19738 in Zephyr
要約
〜によって VulDB • 2026年10月11日
Bluetooth Link Layer Control Procedure (LLCP) の Connected Isochronous Stream (CIS) 作成に関する実装において、RX ノード(ctx->node_ref.rx。NODE_RX_TYPE_RETAIN マーク付き)が保持されたままになり、後でホスト通知として再利用される可能性があります。これは、周辺機器では LL_CIS_REQ に対するホストの応答を待機している間、セントラルではローカル開始の CIS Create の全期間中に行われます。subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c では、「無効な PDU が受信された」パスにおける llcp_rp_cc_rx() および llcp_lp_cc_rx() は接続を終了し、その保持ノードを解放せずにプロシージャを完了させるため、llcp_lr_check_done() および llcp_rr_check_done() でチェックされる不変条件が破られ、ノードのメモリが孤児化します。
電波範囲内のピアデバイスから、認証および暗号化されていない ACL リンク上で 1 つの余分な LL Control PDU を送信するだけでこの脆弱性を突くことができます。周辺機器に対しては、攻撃者は有効な LL_CIS_REQ を送信し、その後ホストが応答する前に任意の無関係な LL Control PDU(例:LL_VERSION_IND)を送信します。これにより ull_cp_rx() がアクティブなリモートプロシージャにルーティングされます。CIS Create 実行中のセントラルに対しては、悪意のある周辺機器が CIS_REQ に対し LL_UNKNOWN_RSP で応答し、これがアクティブなローカルプロシージャにディスパッチされます。ペアリング、暗号化、またはユーザー操作は必要ありません。CONFIG_BT_CTLR_PERIPHERAL_ISO または CONFIG_BT_CTLR_CENTRAL_ISO が有効になっている場合にのみコードがコンパイルされます。
デフォルトビルド(CONFIG_BT_ASSERT_DEBUG が既定で y)では、保持ノードのアサーションが直ちに発動し、コントローラの致命的なエラーを引き起こし、通常は注入された 1 つの PDU からシステムリセットが発生します。開発用アサーションが無効化されている場合、各試行ごとにコントローラの小さな LL 通知プール(LL_PDU_RX_CNT、2 * CONFIG_BT_CTLR_LLCP_CONN)からノードが 1 つ永久に失われ、その memq_link_t も共に失われます。接続攻撃と再接続のサイクルを繰り返すとプールが枯渇し、その後通知割り当ては常に失敗し、RX フロー制御が停止します。さらに llcp_lp_cc_flush() の LL_ASSERT_ERR()(無効化不可)でフォールトが発生します。影響は可用性に限られます(リークしたノードは孤児化され、再利用も二重解放も行われません)。回復には再起動が必要です。
VulDB is the best source for vulnerability data and more expert information about this specific topic.