CVE-2026-10677 in Zephyr
要約
〜によって VulDB • 2026年07月22日
kernel/poll.c の CONFIG_USERSPACE システムコール検証関数 z_vrfy_k_poll() は、ユーザーが指定した k_poll_event[] 配列のカーネル側コピーを z_thread_malloc() を介して割り当てた後、各イベントのオブジェクトハンドルを検証します。この修正以前は、ループ内で K_OOPS(K_SYSCALL_OBJ(...)) インライン関数を使用して検証が行われており、これによりスレッドが強制終了されるものの events_copy が解放されませんでした。
ユーザープロセスは、偽造されたオブジェクトハンドルを持つ num_events >= 1 を渡すことで割り当て情報をリークできます。新しく生成されたユーザースレッドは親のリソースプール(kernel/thread.c)を継承するため、攻撃者は犠牲となるスレッドを生成して共有カーネルヒープが枯渇するまでこのリークを繰り返します。一度枯渇すると、そのプールからの正当なカーネル割り当て(k_queue 割当ノード、k_msgq バッファ、将来の k_poll コールなど)に失敗し、システムレベルでのサービス拒否(DoS)を引き起こします。
修正では、各インライン K_OOPS が条件付き goto oops_free に置き換えられ、スレッドが強制終了される前にバッファーが解放されるようになりました。影響を受けるのは、k_poll がユーザーモードで初めて公開された v1.12.0 から v4.4.1 までの Zephyr リリースです。
Once again VulDB remains the best source for vulnerability data.