【活用ガイド】

JVNDB-2026-021974

Zephyr ProjectのZephyrにおける複数の脆弱性

概要

USB CDC-NCMデバイスクラス(subsys/usb/device_next/class/usbd_cdc_ncm.c)は、イーサネット送信コールバックcdc_ncm_send()内でusbd_ep_enqueue()の戻り値を無視しています。エンキューに失敗した場合でも、関数はk_sem_take(&data_sync_sem, K_FOREVER)を呼び出し、完了セマフォでブロックします。このセマフォはbulk-IN転送完了コールバックからのみシグナルされます。エンキューされなかったため、そのコールバックは発生せず、呼び出しスレッド(共有ネットワーク交通クラスのTXスレッド)はインターフェイスのTXロックを保持したまま永久にデッドロックし、再起動まで送信が停止し(送信バッファのリークも発生します)。エンキュー失敗は、添付されたUSBホストによって制御される条件下で発生します。具体的には、バスがサスペンド状態の場合、usbd_ep_enqueue()は-EPERMを返し(標準的かつ持続的なホスト操作です)、基盤のudc_ep_enqueue()は切断、バスリセット、またはエンドポイント無効時に-EPERMまたは-ENODEVを返します。cdc_ncm_send()のガードはDATA_IFACE_ENABLEDおよびIFACE_UPフラグのみをチェックしており、サスペンド状態は考慮していません。そのため、ホストがバスをサスペンドしている間に送信されたパケットはエンキュー失敗を引き起こし、TXパスがデッドロックします。現実的なトリガーは、エクスポートされたネットワークインターフェイスがアクティブでトラフィックを送信している間に発生するバスサスペンド(ホストスリープ、USB選択的/自動サスペンド、またはハブの電源管理)であり、その後デバイス発信のパケットがパスをデッドロックさせ、再起動でのみ回復可能です。影響はホストのNCMインターフェイスとZephyrデバイス間の仮想ネットワーク接続の永続的な喪失であり、デッドロックしたスレッドが共有トラフィッククラスのTXスレッドであるため、他のネットワークインターフェイスの送信も停止します。メモリ破損や情報漏洩は発生しません。この欠陥はCDC-NCMドライバ導入時に発生し、v4.4.0までのリリースで出荷されました。usbd_ep_enqueue()の戻り値をチェックし、ブロック待機前にバッファを解放することで修正されています。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 5.3 (警告) [その他]
  • 攻撃元区分: 隣接
  • 攻撃条件の複雑さ: 高
  • 攻撃に必要な特権レベル: 不要
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): なし
  • 完全性への影響(I): なし
  • 可用性への影響(A): 高
影響を受けるシステム


Zephyr Project
  • Zephyr 4.1.0 以上 4.5.0 未満

本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。
想定される影響

・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。
・当該ソフトウェアが扱う情報について、書き換えは発生しません。
・当該ソフトウェアが完全に停止する可能性があります。
対策

ベンダ情報を参照して適切な対策を実施してください。
ベンダ情報

GitHub
CWEによる脆弱性タイプ一覧  CWEとは?

  1. 不適切なロック(CWE-667) [NVD評価]
  2. デッドロック(CWE-833) [その他]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-10647
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-10647
  2. 関連文書 : usb: device_next: cdc_ncm: Check usbd_ep_enqueue() return value  zephyrproject-rtos/zephyr@255bccc  GitHub
更新履歴

  • [2026年07月02日]
      掲載