JVNDB-2026-027509 | |
Zephyr ProjectのZephyrにおける複数の脆弱性 | |
| 概要 | |
Zephyrのカーネルパイプ実装において、kernel/pipe.c内のユーザースペースシステムコール検証関数z_vrfy_k_pipe_init()は、すでに初期化されたカーネルオブジェクトを要求するK_SYSCALL_OBJ()を使用していましたが、本来はすでに初期化済みのオブジェクトを拒否するK_SYSCALL_OBJ_NEVER_INIT()を使うべきでした。その結果、CONFIG_USERSPACEビルド環境において、k_pipeオブジェクトへのアクセス権を持つ権限の低いユーザースレッドが、すでに使用中のパイプをk_pipe_initシステムコールで再初期化できてしまいます。z_impl_k_pipe_init()は無条件にリングバッファをリセットし、pipe->waitingを0に設定し、さらに2つの待機キュー(pipe->dataとpipe->spaceに対するz_waitq_init)を再初期化しますが、パイプで現在ブロックされているスレッドの起床や管理は行いません。そのため、k_pipe_read()/k_pipe_write()で既に保留状態にあるスレッドは「孤児」状態となり、依然として保留中(pending)のままで、pended_onはクリアされた待機キューを指し、qnode_dlistリンクは(再初期化された)組み込みリストヘッドに対して古い状態のまま残ります。この孤立した待機スレッドが後にタイムアウトまたは起床されると、スケジューラはその古いノードに対してsys_dlist_remove()を呼び出し、先祖の参照が切れたprev/nextポインタを介してカーネルの待機キューやスケジューラ構造に書き込みを行います。その結果、リストの破損(攻撃者が誘発可能な不正なカーネル書き込み)、起床処理の喪失、無期限のスレッドブロック、そして無言のデータ損失を招いてしまいます。この脆弱性により、権限の低いユーザースレッドが他のスレッドやパーティションと共有されるカーネルオブジェクトの状態を破損させることが可能となっていました。修正は検証関数を既存のk_msgq_initと同様にK_SYSCALL_OBJ_NEVER_INIT()に変更し、ユーザースレッドが使用中のパイプを再初期化できないように行われました。この脆弱性を含むコードはv4.1.0から出荷され、v4.4.0まで残存していました。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 7.1 (重要) [その他]
| |
| 影響を受けるシステム | |
|
| |
Zephyr Project | |
本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。 | |
| 想定される影響 | |
・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
ベンダ情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
GitHub | |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/07/14 |
| 登録日 | 2026/08/10 |
| 最終更新日 | 2026/08/10 |



