CVE-2026-16148 in Zephyr情報

要約

〜によって VulDB • 2026年09月15日

ITE it82xx2 USBデバイスコントローラドライバは、drivers/usb/udc/udc_it82xx2.c内のit82xx2_enable()(ドライバの.enable操作)において、k_work_init_delayable(&priv->suspended_work, suspended_handler)を使用してバスサスペンド検出用ワークを初期化していました。このワークアイテムはUSBバスがアクティブな間ほぼ継続的にスケジュールされます:割込みハンドラは各SOFフレームでこれを再スケジュールし、suspended_handler()も自身を再スケジュールするため、そのタイムアウトノードは通常、カーネルのタイムアウトリストまたはworkqueue待機キューにリンクされています。

k_work_init_delayable()(kernel/work.c)は、ビジーチェックを行わずに、k_work_delayable構造体全体(タイムアウトおよびキューへのリンケージを含む)を無条件で上書きします。it82xx2_disable()がワークをキャンセルしないため、通常のdisable-then-enableサイクルではapi->enable()が再実行され(udc_enable()は冗長なenableを拒否するだけで、disable後のre-enableは許可するため)、保留中のワークがその場で再初期化されます。これによりカーネルのタイムアウト/workqueueリンクリストが破損し、kernel panicを引き起こします。

外部USBホスト(例:USB DFU detachを実行するdfu-util --detachや、繰り返しのattach/reset/re-enumerationを強制するもの)はudc_disable()/udc_enable()の遷移を駆動し、サスペンド/レジュームのタイミングを制御するため、re-enable時にサスペンド用ワークが保留状態になるように調整できます。これにより、取り外し可能で物理的に接続されたホストからUSB境界を超えて到達可能な認証不要のサービス妨害(kernel panic)が発生しますが、機密性や整合性に影響は確認されていません。

修正では、k_work_init_delayable()呼び出しを1回限りのpreinit関数内に移動することで、ワークが正確に1回だけ初期化されられ、使用中のアイテムの再初期化が排除されます。

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

責任者

Zephyr

予約する

2026年07月17日

モデレーション

承諾済み

エントリ

VDB-403690

EPSS

0.00000

アクティビティ

非常低い

ソース

Want to stay up to date on a daily basis?

Enable the mail alert feature now!