【活用ガイド】

JVNDB-2026-007879

LinuxのLinux Kernelにおけるリソースのロックに関する脆弱性

概要

Linuxカーネルにおいて以下の脆弱性が修正されました。btrfsのメタデータのwritepages時にダーティメタデータ閾値を厳密に要求しない問題がありました。balance_dirty_pages()のio_schedule_timeout()で1000以上のプロセスが待機し、システムハングおよびカーネルコアダンプを引き起こしたという内部報告があります。カーネルはv6.4ベースですが、根本的な問題はv6.18以前のすべての上流カーネルに該当します。原因はJan Karaによるダーティページのバランス動作に関する知見に基づき、このcgroupのダーティリミットが実質的な問題の原因でした。そのcgroupはメモリが少なく、ダーティリミットは約16MBに設定されていました。ダーティスロットリングは誰もダーティリミット以上のダーティメモリを作らないように強制するため、タスクがページをダーティ化すると、periodically balance_dirty_pages()に入り、ダーティ化を遅らせるためにそこでスリープします。システムが既にダーティリミットを超えている場合(グローバルまたは実行中のタスクのcgroup内)、ダーティページ数がリミット以下になるまでタスクはbalance_dirty_pages()から抜けられません。今回のケースではcgroupがメモリ少なく、ダーティリミットは16MBに設定されていました。cgroupのタスクがbtrfsのbtree inode内で約28MB分のページをダーティ化しており、それが事実上そのcgroup内の唯一のダーティページでした。つまり、そのcgroupのダーティページを減らす唯一の方法はbtrfs btree inodeのダーティページを書き戻すことでした。そしてそれが完了した後に初めてプロセスはbalance_dirty_pages()から抜けられます。btrfsの部分に戻ると、btree_writepages()はダーティなbtree inodeページの書き戻しを担当しています。問題は、btree inodeのダーティバイト数が32MBの内部閾値以下の場合は書き戻しを行わない内部閾値が存在することです。この動作はできるだけ多くのメタデータをバッチ処理し、書き戻したツリーブロックを再度COWするのを防ぐためのものでした。この32MiBの内部閾値は既存の28MiBのダーティページサイズより大きいため、書き戻しが発生せず、btrfsとcgroup間でデッドロックが発生しました。具体的には、btrfsはより多くのダーティページになるまでbtree inodeを書き戻さず、cgroup/MMはbtrfs btree inodeのダーティページの増加を許さないため、btree inodeにアクセスするプロセスはダーティページ数が減るまでスリープ状態になります。根本原因の解析に対しJan Karaに感謝します。改善策として、カーネルコミットb55102826d7d("btrfs: set AS_KERNEL_FILE on the btree_inode")以降、btrfs btree inodeページはroot cgroupにのみ計上され、このcgroupはbtrfsの32MiB閾値より大幅に大きなリミットを持つため、最新カーネルには影響がありません。しかし、現行のLTSカーネルはすべてこの問題の影響を受けており、AS_KERNEL_FILEの全体的なバックポートは適切でない可能性があります。新しいカーネルでもbtrfsの固定閾値よりもcgroup/MMのシステム全体のメモリ使用状況管理の方が優れているケースが多いため、btree_writepages()の内部閾値を廃止することが望ましいです。btrfs_btree_balance_dirty()内の内部呼び出しはすでに内部閾値チェックを行っているため影響はありませんが、btree_writepages()の外部呼び出しに対しては、内部btrfs閾値を無視して要求に応じて書き戻しを行い、btree inodeのダーティページバランシング時のデッドロックを回避します。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 2.6.29 以上 6.18.9 未満
  • Linux Kernel 6.19

想定される影響

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

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

CWEによる脆弱性タイプ一覧  CWEとは?

  1. 不適切なロック(CWE-667) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-23157
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-23157
  2. 関連文書 : btrfs: do not strictly require dirty metadata threshold for metadata writepages - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/629666d20c7dcd740e193ec0631fdff035b1f7d6)
  3. 関連文書 : btrfs: do not strictly require dirty metadata threshold for metadata writepages - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/4e159150a9a56d66d247f4b5510bed46fe58aa1c)
更新履歴

  • [2026年03月19日]
      掲載