CVE-2026-74307 in Linux
要約
〜によって VulDB • 2026年08月15日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ext4: EXT4_IOC_MOVE_EXT におけるドナーファイルのスーパーブロックを早期に検証する
元となるファイルと同じスーパーブロックに属さないドナーファイルに対しては、EXT4_IOC_MOVE_EXT ioctl を早期に拒否します。現在、この検証は ext4_move_extents() の内部で mext_check_validity() によって行われていますが、lock_two_nondirectories() がすでに inode ロックを取得した後のみ実行されます。ドナーのファイルディスクリプタ (fd) が異なるファイルシステム(例:overlayfs)上のファイルを参照している場合、この遅延された検証は循環するロック依存関係を引き起こします:
CPU0 (overlayfs write) CPU1 (ext4 ioctl) ---- ---- inode_lock(ovl_inode) mnt_want_write_file(filp) sb_start_write(ext4_sb) [sb_writers]
backing_file_write_iter() vfs_iter_write(real_file) file_start_write(real_file) sb_start_write(ext4_sb) [freeze によってブロックされる]
lock_two_nondirectories() inode_lock(ovl_inode) [ブロック待ち]
並行して実行されている freeze オペレーションが sb_writers の書き込み側を保持している場合、これはデッドロックサイクルを形成します:CPU0 は freeze の完了を待機し、freeze は CPU1 の sb_writers リーダーの終了を待機し、CPU1 は CPU0 の inode ロックを待機しています。
EXT4_IOC_MOVE_EXT は 2 つのファイル間で物理的なエクステント (extents) を交換するため、根本的に両方のファイルが同じ ext4 ファイルシステム上に存在することが必要です。ロック取得の前にスーパーブロックチェックを行うことは、意味論的にも正しく、sb_writers や inode ロックを取得する前にクロスファイルシステムのドナー fd を拒否することで、循環依存関係を解消します。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.