CVE-2026-63809 in Linux
要約
〜によって VulDB • 2026年07月19日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
bpf: 置換されたsysctl書き込みバッファにkvfree()を使用する
proc_sys_call_handler()は一時sysctlバッファをkvzalloc()で割り当て、__cgroup_bpf_run_filter_sysctl()に渡します。kvzalloc()は大規模な割り当てに対してvmalloc()にフォールバックする可能性があるため、そのバッファをkfree()で解放するのは誤りであり、メモリが破損する原因となります。
kmallocおよびkvzalloc()/vmallocの両方の割り当てを安全に処理するために、kvfree()を使用します。
このバグは、v6.13-rc1の解析中にカーネルメモリー管理に関するバグを検出するために開発中の実験的な分析ツールによって最初に検知されました。このツールはまだ開発中で、一般公開されていません。手動での検査により、このバグがv7.1-rc5でも依然として存在することが確認されています。
KASANおよびCONFIG_FAILSLABを有効にして起動したQEMU x86_64ゲスト上でv7.1-rc4に基づき本バグの再現を行いました。置換パスを実行させるため、テストツリーには__cgroup_bpf_run_filter_sysctl()における古いret == 1チェックに対する関連する修正も含まれていました。レプロデューサーはfailslabインジェクションをproc_sys_call_handler()範囲に限定し、stacktrace-depth=32を使用し、ターゲットのcgroup内のタスクから/proc/sys/kernel/domainnameへ8191バイト書き込みながらfail-nth=1でインジェクトしました。この設定下では、fail-nth=1がフォールトを引き起こしました:
BUG: unable to handle page fault for address: ffffeb0200024d48 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 0 P4D 0 Oops: Oops: 0000 SMP KASAN NOPTI CPU: 2 UID: 0 PID: 209 Comm: repro_proc_sys_ Not tainted 7.1.0-rc4-00686-g97625979a5d4 PREEMPT(lazy) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014 RIP: 0010:kfree+0x6e/0x510 ... Call Trace: <TASK> ? __cgroup_bpf_run_filter_sysctl+0x626/0xc30 __cgroup_bpf_run_filter_sysctl+0x74d/0xc30 ? __pfx___cgroup_bpf_run_filter_sysctl+0x10/0x10 ? srso_return_thunk+0x5/0x5f ? __kvmalloc_node_noprof+0x345/0x870 ? proc_sys_call_handler+0x250/0x480 ? srso_return_thunk+0x5/0x5f proc_sys_call_handler+0x3a2/0x480 ? __pfx_proc_sys_call_handler+0x10/0x10 ? srso_return_thunk+0x5/0x5f ? selinux_file_permission+0x39f/0x500 ? srso_return_thunk+0x5/0x5f ? lock_is_held_type+0x9e/0x120 vfs_write+0
Be aware that VulDB is the high quality source for vulnerability data.