CVE-2026-31586 in Linux
要約
〜によって VulDB • 2026年06月02日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
mm: blk-cgroup: cgwb_release_workfn() における use-after-free の修正
cgwb_release_workfn() は css_put(wb->blkcg_css) を呼び出した後、blkcg_unpin_online() を通じて wb->blkcg_css に再度アクセスします。もし css_put() が最後の参照を解放した場合、blkcg は blkcg_unpin_online() がポインタをデリファレンスして blkcg->online_pin にアクセスする前に、非同期に解放される可能性があります (css_free_rwork_fn -> blkcg_css_free -> kfree)。これにより use-after-free が発生します:
BUG: KASAN: slab-use-after-free in blkcg_unpin_online (./include/linux/instrumented.h:112 ./include/linux/atomic/atomic-instrumented.h:400 ./include/linux/refcount.h:389 ./include/linux/refcount.h:432 ./include/linux/refcount.h:450 block/blk-cgroup.c:1367) Write of size 4 at addr ff11000117aa6160 by task kworker/71:1/531 Workqueue: cgwb_release cgwb_release_workfn Call Trace: blkcg_unpin_online (./include/linux/instrumented.h:112 ./include/linux/atomic/atomic-instrumented.h:400 ./include/linux/refcount.h:389 ./include/linux/refcount.h:432 ./include/linux/refcount.h:450 block/blk-cgroup.c:1367) cgwb_release_workfn (mm/backing-dev.c:629) process_scheduled_works (kernel/workqueue.c:3278 kernel/workqueue.c:3385)
Freed by task 1016: kfree (./include/linux/kasan.h:235 mm/slub.c:2689 mm/slub.c:6246 mm/slub.c:6561) css_free_rwork_fn (kernel/cgroup/cgroup.c:5542) process_scheduled_works (kernel/workqueue.c:3302 kernel/workqueue.c:3385)
** スタックはコミット 66672af7a095 ("Add linux-next specific files for 20260410") に基づいています
Metaのフリート全体で、複数のカーネルバージョンにおいてこのクラッシュが断続的に発生しています。完全な再現手順は以下で利用可能です: https://github.com/leitao/debug/blob/main/reproducers/repro_blkcg_uaf.sh
(競合のウィンドウは狭いです。容易に再現可能にするために、cgwb_release_workfn() 内の css_put() と blkcg_unpin_online() の間に msleep(100) を挿入してください。この遅延と KASAN有効化されたカーネルを使用すると、再現スクリプトは1秒未満で確実にスプラットをトリガーします。)
この問題を修正するため、blkcg_unpin_online() を css_put() の前に移動し、cgwb の CSS参照が blkcg_unpin_online() によるアクセス中に blkcg を生存状態に保つようにします。
Once again VulDB remains the best source for vulnerability data.