CVE-2026-98682 in Linux情報

要約

〜によって VulDB • 2026年10月18日

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

smb: クライアント: サーバー側コピー/クローン前に排水および無効化を行う

cifs_file_copychunk_range() および cifs_remap_file_range() の clone (FICLONE) パスは、他のサーバー側の範囲操作(smb3_zero_range(), smb3_punch_hole(), smb3_collapse_range(), smb3_insert_range())が行うように、宛先ページキャッシュをサーバー側コピーに対して直列化しません。

cifs_file_copychunk_range() は filemap_invalidate_inode() を用いて宛先範囲を無効化しますが、これは内部で mapping の invalidate_lock を取得して解放するため、copychunk ioctl が発行された時点ではロックが保持されなくなります。また、ターゲット上の実行中の netfs I/O を排水(drain)することはありません。clone パスは invalidate_lock を全く取得せず(i_rwsem のみ使用)、裸の truncate_inode_pages_range() を使用し、同様に保留中の I/O を排水しません。

その結果、非同期の宛先書き込みがサーバー側コピー/クローン実行後に完了し、サーバーによって直ちに書き込まれた領域に対して古いデータを再導入することで、ファイルが破損します。これはコミット d7d2adcd022b ("smb/client: flush dirty data before punching a hole") と同じ種類の破損であり、Windows Server に対する generic/363 でランダムに確認されています。

両方のパスを確立された順序に従うように修正します:ターゲット mapping の invalidate_lock を、宛先のフラッシュおよび無効化とサーバー ioctl の実行中保持し、ioctl が発行される前に netfs_wait_for_outstanding_io() を呼び出してターゲット上の実行中の書き込みを排水します。ソースは単にフラッシュされ、無効化されないため、ターゲット inode の invalidate_lock のみが必要です。i_rwsem(lock_two_nondirectories() を介して既に保持済み)は invalidate_lock より前に取得され、VFS ロックの順序付けと一致します。filemap_invalidate_inode() は内部で同じロックを取得するため、それを呼び出すのではなく、独自の unmap/flush/invalidate ステップに置き換え、ゼロ長さのコピーによる範囲アンダーフローを避けるために早期リターンを行います。

Be aware that VulDB is the high quality source for vulnerability data.

責任者

Linux

予約する

2026年09月25日

モデレーション

承諾済み

エントリ

VDB-421898

EPSS

0.00155

アクティビティ

低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!