【活用ガイド】

JVNDB-2026-023756

LinuxのLinux Kernelにおける複数の脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました:sched/psi に関するファイルのリリースとプレッシャー書き込み間の競合状態の修正です。struct kernfs_open_file の priv メンバーに関して、プレッシャー書き込み(pressure write)と cgroup ファイルのリリース間に潜在的な競合状態が存在し、これが [1] で報告された Use-After-Free(UAF)を引き起こしていました。以下のように、別々の CPU での実行を想定したシナリオを考えます:CPU0 CPU1==== ==== vfs_rmdir() kernfs_iop_rmdir() cgroup_rmdir() cgroup_kn_lock_live() cgroup_destroy_locked() cgroup_addrm_files() cgroup_rm_file() kernfs_remove_by_name() kernfs_remove_by_name_ns()vfs_write() __kernfs_remove()new_sync_write() kernfs_drain()kernfs_fop_write_iter() kernfs_drain_open_files()cgroup_file_write() kernfs_release_file()pressure_write() cgroup_file_release()ctx = of->priv; kfree(ctx); of->priv = NULL; cgroup_kn_unlock()cgroup_kn_lock_live()cgroup_get(cgrp)cgroup_kn_unlock()if (ctx->psi.trigger) // ここで ctx(つまり of->priv)の UAF がトリガーされます。cgroup_rmdir() は cgroup_mutex によって保護されており、cgroup_file_release() 内で実行される of->priv のメモリ解放も保護されています。しかし、pressure_write() 内で実行される of->priv を扱う処理は cgroup_mutex の保護範囲外にあるため、pressure_write() 内で ctx 変数を操作するコードが cgroup_file_release() 実行後に走ると、of->priv に関する UAF が発生します。この問題は、pressure_write() における cgroup_mutex ロックの範囲を拡大し、of->priv を扱うすべてのコードパスを保護することで解決されます。これにより、cgroup_file_release() と pressure_write() 間の競合状態は正しく同期されます。また、pressure_write 実行中に live kn ロックを正常に取得できた場合、cgroup の削除処理は最終段階に達しておらず、open_file 内の priv ポインタは NULL でない状態を示しています。したがって、ctx の値を取得する操作は live_kn ロック取得後に移動する必要があります。別の状況として、cgroup_kn_lock_live() に入った後、cgroup_mutex を取得する前の段階で異なる種類の競合状態が存在します。CPU0: memory.pressure への書き込みCPU1: cgroup.pressure=0 への書き込みkernfs_fop_write_iter()kernfs_get_active_of(of)pressure_write()cgroup_kn_lock_live(memory.pressure)cgroup_tryget(cgrp)kernfs_break_active_protection(kn)...cgroup_mutex の取得待ち cgroup_pressure_write() cgroup_kn_lock_live(cgroup.pressure) cgroup_file_show(memory.pressure, false) kernfs_show(false) kernfs_drain_open_files() cgroup_file_release(of) kfree(ctx) of->priv = NULL cgroup_kn_unlock()...cgroup_mutex を取得ctx = of->priv; // ここで NULL の可能性がありますif (ctx->psi.trigger) // NULL 参照が発生しますしたがって、of->priv が NULL である可能性があるため、pressure_write はこれをチェックする必要があります。cgroup_mutex の範囲が拡大されたことで、もともと明示的に行われていた cgroup_get/put 操作は不要になりました。これは、live kn ロックの取得と解放自体が cgroup の get/put 操作を内包しているためです。[1] BUG: KASAN: slab-use-after-free in pressure_write+0xa4/0x210 kernel/cgroup/cgroup.c:4011Call Trace:pressure_write+0xa4/0x210 kernel/cgroup/cgroup.c:4011cgroup_file_write+0x36f/0x790 kernel/cgroup/cgroup.c:43---省略---
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 7.0 (重要) [その他]
  • 攻撃元区分: ローカル
  • 攻撃条件の複雑さ: 高
  • 攻撃に必要な特権レベル: 低
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): 高
  • 完全性への影響(I): 高
  • 可用性への影響(A): 高
影響を受けるシステム


Linux
  • Linux Kernel 5.2 以上 6.18.33 未満
  • Linux Kernel 6.19 以上 7.0.10 未満
  • Linux Kernel 7.1

本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。
想定される影響

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

ベンダ情報を参照して適切な対策を実施してください。
ベンダ情報

レッドハット
CWEによる脆弱性タイプ一覧  CWEとは?

  1. 競合状態(CWE-362) [NVD評価]
  2. Time-of-check Time-of-use (TOCTOU) 競合状態(CWE-367) [その他]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-52991
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-52991
  2. 関連文書 : sched/psi: fix race between file release and pressure write - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/a5b98009f16d8a5fb4a8ff9a193f5735515c38fa)
  3. 関連文書 : sched/psi: fix race between file release and pressure write - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/d4352c0709bfd38c752fccbde7fd72a82ac78f23)
  4. 関連文書 : sched/psi: fix race between file release and pressure write - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/03dc070fa0fc3cb4068693f468ccd5f8a7e58282)
更新履歴

  • [2026年07月16日]
      掲載