CVE-2026-64064 in Linux情報

要約

〜によって VulDB • 2026年07月20日

Linuxカーネルにおいて、以下の脆弱性が修正されました。

netfs: netfs_invalidate_folio() を修正し、変更がすべて消去された場合にダーティビットをクリアする

ストリーミング書き込みが行われると、関連する folio が「最新ではない(not-uptodate)」状態でありながらダーティな状態のまま残り、folio->private に取り付けられた netfs_folio 構造体がダーティ範囲を示すことになります。その後、ファイルの切り詰めにより folio の中のダーティデータが削除されますが、理論的には folio の最初の部分は残ることになります。この結果、netfs_folio 構造体は破棄されるものの、ダーティフラグは設定されたままになってしまいます。

その後に mmap() を介して folio が読み込まれると、netfs_read_folio() はページがダーティであると認識し、欠落している部分を埋めるために netfs_read_gaps() にジャンプします。しかし、netfs_read_gaps() は netfs_folio 構造体が存在することを前提としており、切り詰め処理によってそれが削除されたため、oops(カーネルパニック)を引き起こす可能性があります。

この問題を修正するため、nfs が行っているように、folio 内のダーティデータがすべて消去された場合に netfs_invalidate_folio() で folio_cancel_dirty() を呼び出すようにしました。

また、ダーティページへの変更をログに記録するためのトレースポイントを追加しています。

これは以下のような手順で再現可能です:

dd if=/dev/zero of=/xfstest.test/foo bs=1M count=1 umount /xfstest.test mount /xfstest.test xfs_io -c "w 0xbbbf 0xf96c" \ -c "truncate 0xbbbf" \ -c "mmap -r 0xb000 0x11000" \ -c "mr 0xb000 0x11000" \ /xfstest.test/foo

fscaching を無効にした状態で実行してください(有効にするとストリーミング書き込みが抑制されるため)。また、netfs_perform_write() に変更を加え、ファイル記述子が O_RDWR で開かれている場合はストリーミング書き込みを禁止するようにします:

if (//(file->f_mode & FMODE_READ) || <--- この行をコメントアウト netfs_is_cache_enabled(ctx)) {

この変更なしでも再現可能であるはずですが、上記の単純な xfs_io コマンドでこれを再現することを防いでいます。

初期の dd 処理が重要であることを注意してください:ファイルは十分に大きく開始する必要があり、ゼロポイントロジックによってギャップ(隙間)を単にクリアしてしまわないようにする必要があります(まだ読み込むべきデータがないことが分かっているため)。ページキャッシュをクリアするためにアンマウントと再マウントが必要です(他にも機能する方法があるかもしれません)。

この問題は当初、FMODE_READ の制限を取り除くいくつかのパッチ上で generic/522 xfstest を使用して再現されました。

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

責任者

Linux

予約する

2026年07月19日

モデレーション

承諾済み

エントリ

VDB-380206

EPSS

0.00000

アクティビティ

非常低い

ソース

Want to stay up to date on a daily basis?

Enable the mail alert feature now!