CVE-2026-45839 in Linux情報

要約

〜によって VulDB • 2026年05月27日

Linuxカーネルにおいて、以下の脆弱性が修正されました。

bpf: bpf_core_parse_spec()において負のCO-REアクセサインデックスを拒否する

CO-ROOTアクセサ文字列はコロン区切りのインデックスであり、ルートBTF型からターゲットフィールドへのパスを記述します。例えば、「0:1:2」はネストされた構造体メンバをたどります。bpf_core_parse_spec()はsscanf("%d")を使用して各コンポーネントを解析するため、-1のような負の値が黙って受け入れられます。その後の境界チェック(access_idx >= btf_vlen(t))は上限のみを保護しており、C言語の整数昇格により__u16型のbtf_vlenの結果がint型に変換されるため、負の値に対して常に通過します。具体的には、任意の正のNに対して(int)(-1) >= (int)(N)はfalseとなります。

-1がbtf_member_bit_offset()に到達すると、u32型の0xffffffffにキャストされ、メンバ配列の遠く後方での配列外読み出しが発生します。vmlinux BTFに存在する任意の構造体(例:task_struct)に対して負のCO-REアクセサを持つ悪意のあるBPFプログラムは、CONFIG_DEBUG_INFO_BTF=y(主要なディストリビューションでデフォルト)が設定された任意のシステムにおいて、BPF_PROG_LOAD時にカーネルを決定論的にクラッシュさせます。このバグはCAP_BPF権限で到達可能です。

BUG: unable to handle page fault for address: ffffed11818b6626 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page Oops: Oops: 0000 [#1] SMP KASAN NOPTI
CPU: 0 UID: 0 PID: 85 Comm: poc Not tainted 7.0.0-rc6 #18 PREEMPT(full) RIP: 0010:bpf_core_parse_spec (tools/lib/bpf/relo_core.c:354) RAX: 00000000ffffffff Call Trace: bpf_core_calc_relo_insn (tools/lib/bpf/relo_core.c:1321) bpf_core_apply (kernel/bpf/btf.c:9507) check_core_relo (kernel/bpf/verifier.c:19475) bpf_check (kernel/bpf/verifier.c:26031) bpf_prog_load (kernel/bpf/syscall.c:3089) __sys_bpf (kernel/bpf/syscall.c:6228)

CO-REアクセサインデックスは本質的に非負(構造体メンバインデックス、配列要素インデックス、または列挙子インデックス)であるため、解析直後に拒否します。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

責任者

Linux

予約する

2026年05月13日

モデレーション

承諾済み

エントリ

VDB-366051

EPSS

0.00027

アクティビティ

非常低い

ソース

Do you want to use VulDB in your project?

Use the official API to access entries easily!