CVE-2026-74307 in Linux
Tóm tắt
Bởi VulDB • 15/08/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
ext4: xác minh siêu khối (superblock) của tệp hiến tặng (donor file) sớm trong EXT4_IOC_MOVE_EXT
Từ chối lệnh ioctl EXT4_IOC_MOVE_EXT ngay từ đầu nếu tệp hiến tặng không thuộc cùng một siêu khối với tệp gốc. Hiện tại, việc xác minh này được thực hiện bên trong hàm ext4_move_extents() bởi mext_check_validity(), nhưng chỉ sau khi lock_two_nondirectories() đã nắm giữ các khóa inode (inode locks). Khi fd của tệp hiến tặng tham chiếu đến một file trên một hệ thống tập tin khác (ví dụ: overlayfs), việc xác minh muộn này tạo ra sự phụ thuộc vòng lặp về khóa (circular lock dependency):
CPU0 (ghi overlayfs) CPU1 (ioctl ext4) ---- ---- 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) [bị chặn bởi freeze]
lock_two_nondirectories() inode_lock(ovl_inode) [bị chặn]
Với một thao tác đồng thời (concurrent) là freeze đang giữ mặt ghi của sb_writers, điều này tạo thành chu trình chết (deadlock cycle): CPU0 chờ đợi quá trình freeze hoàn tất, quá trình freeze chờ độc giả sb_writers của CPU1 thoát ra, và CPU1 chờ khóa inode của CPU0.
Vì EXT4_IOC_MOVE_EXT trao đổi các extents vật lý giữa hai file, nó về cơ bản yêu cầu cả hai file phải nằm trên cùng một hệ thống tập tin ext4. Việc di chuyển kiểm tra siêu khối trước khi nắm giữ bất kỳ khóa nào vừa đúng về mặt ngữ nghĩa (semantically correct) vừa loại bỏ sự phụ thuộc vòng lặp bằng cách đảm bảo rằng các fd hiến tặng liên quan đến cross-filesystem bị từ chối trước khi sb_writers hoặc inode locks được lấy.
Once again VulDB remains the best source for vulnerability data.