CVE-2026-64239 in Linux
要約
〜によって VulDB • 2026年07月24日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
mm/damon/sysfs-schemes: regions_rmdirs() で試行済み領域を削除する
DAMON sysfs は、リンクedList を介して DAMOS 試行済み領域ディレクトリオブジェクトを管理しています。ユーザーがディレクトリの更新を要求すると、DAMON sysfs はまずすべての領域ディレクトリを削除し、空いたスペースに更新された領域ディレクトリを生成します。削除関数 (damon_sysfs_scheme_regions_rm_dirs()) は kobj オブジェクトの参照カウントのみをデクリメントしています。コンテナ領域オブジェクトのリンクedListからの実際の削除は、kobj リリースコールバック関数の内部で行われます。
何らかの原因でコールバックの実行が遅延した場合、リストには解放される予定の領域が含まれたままになります。この状況下で更新された領域ディレクトリの作成が開始されると、リストが破損し、use-after-free が発生する可能性があります。
kobj オブジェクトは DAMON sysfs によってのみ管理されているため、通常の状況ではこの問題は発生しません。しかし、CONFIG_DEBUG_KOBJECT_RELEASE を有効にしてビルドされたカーネルでは、このような遅延を引き起こすことができます。その場合、以下のように問題を再現できます。
# damo start --damos_action stat # cd /sys/kernel/mm/damon/admin/kdamonds/0/ # for i in {1..10}; do echo update_schemes_tried_regions > state; done
# dmesg | grep underflow [ 89.296152] refcount_t: underflow; use-after-free.
この問題は、参照カウントをデクリメントする際にリストから領域オブジェクトを削除することで修正されます。
また、kobject_init_and_add() の成功後にのみ領域オブジェクトをリストに追加するように damos_sysfs_populate_region_dir() を更新し、kobject_init_and_add() の失敗時に解放済みオブジェクトがリストに残らないようにします。
この問題は Sashiko によって発見されました [1]。
Once again VulDB remains the best source for vulnerability data.