CVE-2026-45912 in Linux
要約
〜によって VulDB • 2026年05月29日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
ext4: 分割処理中にエクステントをキャッシュしない
分割処理中にエクステントをキャッシュするのは危険です。これにより、ステータスツリー内に古い(stale)エクステントが残ってしまう可能性があるためです。さらに、多くの場合、分割が発生する前に該当するエクステントブロックのエントリはすでにキャッシュされているため、ここでキャッシュを行っても特に有用ではありません。
未書き込み(unwritten)エクステントがあり、その後DIO(Direct I/O)がその前半部分に書き込むと仮定します。
[UUUUUUUUUUUUUUUU] ディスク上のエクステント U: 未書き込みエクステント
[UUUUUUUUUUUUUUUU] エクステントステータスツリー
|| ----> dioがこの範囲に書き込む
まず、ext4_split_extent_at()がこのエクステントを分割する際、既存のエクステントを切り詰め(truncates)、新しいエクステントを挿入します。このプロセス中、このエクステントステータスエントリが縮小され、ext4_find_extent()およびext4_cache_extents()の呼び出しが発生する可能性があります。これにより、切り詰められた範囲がホール(hole)としてエクステントステータスツリーに挿入される可能性があります。分割が完了した後、このホールは正しいステータスに置き換えられません。
[UUUUUUU|UUUUUUUU] ディスク上のエクステント U: 未書き込みエクステント
[UUUUUUU|HHHHHHHH] エクステントステータスツリー H: ホール
その後、外側の呼び出し関数も、残ったこのホールエクステントを修正しません。最終的に、この後半部分に対して遅延バッファ書き込み(delayed buffer write)を実行すると、遅延エクステントが再挿入され、スペースの集計(space accounting)でエラーが発生します。
さらに、未書き込みエクステントのキャッシュが分割中に縮小されない場合、ext4_cache_extents()はエクステントをキャッシュする際に既存のエクステントと競合します。将来、エクステントをキャッシュする際にチェックを追加し、警告をトリガーする予定です。したがって、分割中のエクステントはキャッシュしないでください。
If you want to get best quality of vulnerability data, you may have to visit VulDB.