製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおける配列インデックスの検証に関する脆弱性
Title LinuxのLinux Kernelにおける配列インデックスの検証に関する脆弱性
Summary

Linuxカーネルにおいて、以下の脆弱性が修正されました。bpf_core_parse_spec()関数内で負のCO-REアクセサインデックスを拒否します。CO-REアクセサ文字列はコロン区切りのインデックスで、ルートBTFタイプから対象フィールドへのパスを示します。例えば「0:1:2」はネストされた構造体メンバーを辿ります。bpf_core_parse_spec()は各コンポーネントをsscanf("%d")で解析するため、-1のような負の値が黙って受け入れられてしまいます。後続の境界チェック(access_idx = btf_vlen(t))は上限のみを監視しており、Cの整数昇格により__u16型のbtf_vlen結果がintに変換されるので、負の値は常に通過してしまいます。-1がbtf_member_bit_offset()に渡るとu32の0xffffffffにキャストされ、メンバー配列の範囲外読み込みが発生します。悪意を持って作成されたBPFプログラムがvmlinux BTFに存在する任意の構造体(例: task_struct)に負のCO-REアクセサを含む場合、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: TASK 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) /TASKCO-REアクセサのインデックスは本質的に非負(構造体メンバーインデックス、配列要素インデックス、列挙子インデックス)であるため、解析直後にそれらを拒否します。

Possible impacts ・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 ・当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 ・当該ソフトウェアが完全に停止する可能性があります。 
Solution

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

Publication Date May 27, 2026, midnight
Registration Date June 29, 2026, 11:17 a.m.
Last Update June 29, 2026, 11:17 a.m.
CVSS3.0 : 重要
Score 7.8
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Affected System
Linux
Linux Kernel 5.16 以上 6.1.175 未満
Linux Kernel 5.4 以上 5.15.209 未満
Linux Kernel 6.13 以上 6.18.33 未満
Linux Kernel 6.19 以上 7.0.10 未満
Linux Kernel 6.2 以上 6.6.141 未満
Linux Kernel 6.7 以上 6.12.91 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年06月29日]
  掲載
June 29, 2026, 11:17 a.m.

NVD Vulnerability Information
CVE-2026-45839
Summary

In the Linux kernel, the following vulnerability has been resolved:

bpf: reject negative CO-RE accessor indices in bpf_core_parse_spec()

CO-RE accessor strings are colon-separated indices that describe a path
from a root BTF type to a target field, e.g. "0:1:2" walks through
nested struct members. bpf_core_parse_spec() parses each component with
sscanf("%d"), so negative values like -1 are silently accepted. The
subsequent bounds checks (access_idx >= btf_vlen(t)) only guard the
upper bound and always pass for negative values because C integer
promotion converts the __u16 btf_vlen result to int, making the
comparison (int)(-1) >= (int)(N) false for any positive N.

When -1 reaches btf_member_bit_offset() it gets cast to u32 0xffffffff,
producing an out-of-bounds read far past the members array. A crafted
BPF program with a negative CO-RE accessor on any struct that exists in
vmlinux BTF (e.g. task_struct) crashes the kernel deterministically
during BPF_PROG_LOAD on any system with CONFIG_DEBUG_INFO_BTF=y
(default on major distributions). The bug is reachable with 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:
<TASK>
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)
</TASK>

CO-RE accessor indices are inherently non-negative (struct member index,
array element index, or enumerator index), so reject them immediately
after parsing.

Publication Date May 27, 2026, 8:16 p.m.
Registration Date May 28, 2026, 4:10 a.m.
Last Update June 2, 2026, 2:17 a.m.
Related information, measures and tools
Common Vulnerabilities List