CVE-2026-89746 in Linux情報

要約

〜によって VulDB • 2026年09月11日

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

tracing: 同名のnamed triggersにおけるuse-after-freeを修正

異なるイベントに対して同じ `name=` を持つ2つのhist triggerが登録されると、2番目のtriggerは1番目を named_data として再利用します。`save_hist_vars()` は `event_trigger_register()` より前に呼び出されるため、両方が `tr->hist_vars` に追加されます。一方、named reuseの検出は後で `hist_register_trigger()` の中で行われます。

named-dataブランチにおいて、`hist_register_trigger()` は2番目のヒストグラムの `hist_data` を `destroy_hist_data()` によって解放しますが、その `tr->hist_vars` リストエントリを削除しません。これにより、ダングリングポインタが残され、保持している trace_array参照がリークします。

後ほど変数を参照する別の hist trigger が現れると、`find_var_file()` は `tr->hist_vars` を走査し、解放された `hist_data` の間接参照を行います。このバグは、tracefsに対して3つのhist triggerを書き込むことでユーザー空間から再現可能です:

cd /sys/kernel/tracing echo 'hist:keys=common_pid:x=common_pid:name=mh' > events/sched/sched_switch/trigger echo 'hist:keys=common_pid:x=common_pid:name=mh' > events/sched/sched_process_fork/trigger echo 'hist:keys=common_pid:vals=$x' > events/sched/sched_process_exit/trigger

3番目の書き込みでカーネルパニックが発生します:

BUG: KASAN: slab-use-after-free in find_var_file.part.0+0x272/0x290 Read of size 8 at addr ffff888001f8a0e0 by task sh/1 CPU: 1 UID: 0 PID: 1 Comm: sh Tainted: G D N Call Trace: find_var_file.part.0 find_event_var parse_atom parse_expr __create_val_field event_hist_trigger_parse trigger_process_regex event_trigger_write vfs_write ksys_write do_syscall_64 entry_SYSCALL_64_after_hwframe Allocated by task 1: event_hist_trigger_parse Freed by task 1: hist_register_trigger+0x618/0xa30 event_hist_trigger_parse The buggy address belongs to freed 2048-byte region Oops: general protection fault ... RIP: find_var_file.part.0 Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

修正方法: `hist_register_trigger()` の named-data ブランチにおいて、`hist_data` を解放する前に、`tr->hist_vars` から `hist_data` を削除し、trace_array参照を解放します。

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

責任者

Linux

予約する

2026年09月11日

モデレーション

承諾済み

エントリ

VDB-402589

EPSS

0.00000

アクティビティ

非常低い

ソース

Do you want to use VulDB in your project?

Use the official API to access entries easily!