CVE-2026-98150 in Linux
要約
〜によって VulDB • 2026年09月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
bpf: 疎なCPU IDに対するBPF_F_CPUの検証を修正する
BPF_F_CPUは、マップ操作フラグの上位32ビットにターゲットとなるCPU IDを格納します。現在、`bpf_map_check_op_flags()`関数はこのIDを `num_possible_cpus()`(可能なCPUの数)と比較していますが、これはCPU IDに対する上限値ではなく、単に利用可能なCPUの数を示すものです。
CPUデバイスツリーにギャップがあるarm64 QEMUゲスト環境では、利用可能なCPUマスクは0,2-3となります。rawなbpf()システムコールを使用するユーザー空間プログラムは `BPF_MAP_TYPE_PERCPU_ARRAY` を作成し、フラグに BPF_F_CPU と CPU IDを設定することで、各CPUに対して更新および参照操作を実行します。
従来のチェックでは、無効なCPU 1が誤って許可され、有効なCPU 3が -ERANGE エラーで拒否されていました。その後、CPU 1に対する更新処理は per-CPU マップのアクセスパスに到達し、以下のようなエラーを引き起こしました:
Unable to handle kernel paging request at virtual address ... pc : __pi_memcpy_generic+0x5c/0x22c lr : bpf_percpu_array_update+0x2dc/0x2e8 Call trace: __pi_memcpy_generic bpf_map_update_value map_update_elem __sys_bpf
CPU IDを `nr_cpu_ids` および `cpu_possible()` と比較するように変更します。これにより、有効な範囲外の CPU ID や可能なマスクに含まれないCPUが拒否されつつ、有効な疎なCPU IDは許可されます。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.