LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性
タイトル LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。ext4に関しては、umountと競合する際のupdate_super_work内のuse-after-freeを修正しました。コミット b98535d09179("ext4: fix bug_on in start_this_handle during umount filesystem")では、アンマウント中に/proc/fs/ext4/xx/mb_groupsの読み取りで新しいエラー作業がキューに追加されるのを防ぐために、ext4_unregister_sysfs()をs_sb_upd_workのフラッシュより前に移動しました。しかし、これによりupdate_super_workがext4_notify_error_sysfs() - sysfs_notify()を呼び出し、kobject_del()によって解放された後のkobjectのkernfs_nodeにアクセスしてしまうuse-after-freeが発生しました。本修正では、解体順序を変更する代わりに、ext4_notify_error_sysfs()がs_kobj.state_in_sysfsをチェックしてsysfsが既に解体済みであることを検出し、その場合はsysfs_notify()の呼び出しをスキップするようにしました。専用のmutex(s_error_notify_mutex)がext4_notify_error_sysfs()とext4_unregister_sysfs()内のkobject_del()間のTOCTOU競合を防止しています。

想定される影響 当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
対策

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

公表日 2026年4月22日0:00
登録日 2026年5月11日11:01
最終更新日 2026年5月11日11:01
CVSS3.0 : 重要
スコア 7.8
ベクター CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
影響を受けるシステム
Linux
Linux Kernel 5.10.114 以上 5.11 未満
Linux Kernel 5.15.38 以上 5.15.203 未満
Linux Kernel 5.17.6 以上 5.18 未満
Linux Kernel 5.18
Linux Kernel 5.18.1 以上 6.1.168 未満
Linux Kernel 6.13 以上 6.18.21 未満
Linux Kernel 6.19 以上 6.19.11 未満
Linux Kernel 6.2 以上 6.6.131 未満
Linux Kernel 6.7 以上 6.12.80 未満
Linux Kernel 7.0
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年05月11日]
  掲載
2026年5月11日11:01

NVD脆弱性情報
CVE-2026-31446
概要

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

ext4: fix use-after-free in update_super_work when racing with umount

Commit b98535d09179 ("ext4: fix bug_on in start_this_handle during umount
filesystem") moved ext4_unregister_sysfs() before flushing s_sb_upd_work
to prevent new error work from being queued via /proc/fs/ext4/xx/mb_groups
reads during unmount. However, this introduced a use-after-free because
update_super_work calls ext4_notify_error_sysfs() -> sysfs_notify() which
accesses the kobject's kernfs_node after it has been freed by kobject_del()
in ext4_unregister_sysfs():

update_super_work ext4_put_super
----------------- --------------
ext4_unregister_sysfs(sb)
kobject_del(&sbi->s_kobj)
__kobject_del()
sysfs_remove_dir()
kobj->sd = NULL
sysfs_put(sd)
kernfs_put() // RCU free
ext4_notify_error_sysfs(sbi)
sysfs_notify(&sbi->s_kobj)
kn = kobj->sd // stale pointer
kernfs_get(kn) // UAF on freed kernfs_node
ext4_journal_destroy()
flush_work(&sbi->s_sb_upd_work)

Instead of reordering the teardown sequence, fix this by making
ext4_notify_error_sysfs() detect that sysfs has already been torn down
by checking s_kobj.state_in_sysfs, and skipping the sysfs_notify() call
in that case. A dedicated mutex (s_error_notify_mutex) serializes
ext4_notify_error_sysfs() against kobject_del() in ext4_unregister_sysfs()
to prevent TOCTOU races where the kobject could be deleted between the
state_in_sysfs check and the sysfs_notify() call.

公表日 2026年4月22日23:16
登録日 2026年4月25日4:05
最終更新日 2026年4月27日23:16
関連情報、対策とツール
共通脆弱性一覧