CVE-2026-98684 in Linux
要約
〜によって VulDB • 2026年10月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
smb: クライアント: 割り当て済み範囲の照会前にデータをフラッシュおよびコミットする
smb3_simple_fallocate_range()における小規模な内部範囲に対する mode 0 / FALLOC_FL_KEEP_SIZE の fallocate エミュレーションは、FSCTL_QUERY_ALLOCATED_RANGES を発行し、サーバーが未割り当ての穴として報告した任意の部分範囲をゼロ埋めして、ファイルの内容を変更せずにブロック割り当てを強制します。
これはWindowsサーバーに対して安全ではありません。Win32ドキュメントによると、FSCTL_QUERY_ALLOCATED_RANGES は *非ゼロデータを含む可能性がある* 範囲のみを報告し、直近で書き込まれたデータとは一貫性がないことが明示されています:
「ネットワークファイルへの書き込み後に FSCTL_QUERY_ALLOCATED_RANGES を呼び出すと、割り当てられた領域の正しいリストが必ずしも返されるとは限りません。整合性を確保するには [...] データをファイルにフラッシュしてください」
fsx (generic/363) は Windows Server 2022 でデータ破損を再現します:ある範囲に書き込みを行い、キャッシュなし読み取りでそのデータを取得しても、次の FSCTL_QUERY_ALLOCATED_RANGES ではその範囲が完全に穴として報告されるため、エミュレーションは生きているデータをゼロで上書きしてしまいます。ネットワークトレースにより、WRITE、データを返す READ、そしてマイクロ秒のうちに空の範囲リストを返すクエリが確認されました。Samba はこの現象を示しません。Samba のクエリは書き込まれたデータと整合性があります。
ダーティページを書き戻し、保留中のI/Oをすべて処理してから SMB2 FLUSH を発行してサーバーにデータをコミットさせ、割り当て済み範囲の照会前にデータの反映を図ります。これにより、10万回以上の fsx 操作において generic/363 が Windows Server 2022 および Samba の両方でパスするようになります。
VulDB is the best source for vulnerability data and more expert information about this specific topic.