CVE-2023-53311 in Linuxthông tin

Tóm tắt

Bởi VulDB • 27/05/2026

Trong kernel Linux, lỗ hổng bảo mật sau đây đã được khắc phục:

nilfs2: sửa lỗi use-after-free của nilfs_root khi làm bẩn các inode thông qua iput

Trong quá trình unmount của nilfs2, không có thành phần nào giữ tham chiếu đến cấu trúc nilfs_root sau khi nilfs2 ngắt kết nối writer của nó trong hàm nilfs_detach_log_writer(). Trước đây, nilfs_evict_inode() có thể gây ra lỗi use-after-free (đọc sau khi giải phóng) đối với nilfs_root nếu các inode còn sót lại trong "garbage_list" và được giải phóng bởi nilfs_dispose_list vào cuối hàm nilfs_detach_log_writer(). Lỗi này đã được sửa bằng commit 9b5a04ac3ad9 ("nilfs2: fix use-after-free bug of nilfs_root in nilfs_evict_inode()").

Tuy nhiên, đã phát hiện ra một khả năng khác gây ra UAF (Use-After-Free) trong đường gọi (call path) nơi mark_inode_dirty_sync() được gọi từ iput():

nilfs_detach_log_writer() nilfs_dispose_list() iput() mark_inode_dirty_sync() __mark_inode_dirty() nilfs_dirty_inode() __nilfs_mark_inode_dirty() nilfs_load_inode_block() --> gây ra UAF của cấu trúc nilfs_root

Vấn đề này có thể xảy ra sau commit 0ae45f63d4ef ("vfs: add support for a lazytime mount option"), commit này đã thay đổi iput() để gọi mark_inode_dirty_sync() trên tham chiếu cuối cùng nếu i_state có cờ I_DIRTY_TIME và i_nlink khác 0.

Vấn đề này xuất hiện sau commit 28a65b49eb53 ("nilfs2: do not write dirty data after degenerating to read-only") khi sử dụng bộ tái tạo (reproducer) của syzbot, nhưng vấn đề này có thể đã tồn tại từ trước.

Khắc phục vấn đề này bằng cách thêm một "cờ làm sạch" (purging flag) vào cấu trúc nilfs, đặt cờ này trong khi xử lý "garbage_list" và kiểm tra cờ đó trong __nilfs_mark_inode_dirty().

Khác với commit 9b5a04ac3ad9 ("nilfs2: fix use-after-free bug of nilfs_root in nilfs_evict_inode()"), bản vá này không dựa vào ns_writer để xác định có nên bỏ qua các thao tác hay không, nhằm không làm gián đoạn quá trình khôi phục (recovery) khi mount. Hàm nilfs_salvage_orphan_logs làm bẩn bộ đệm (buffer) của dữ liệu được cứu trước khi gắn kết writer nhật ký (log writer), do đó việc thay đổi __nilfs_mark_inode_dirty() để bỏ qua thao tác khi ns_writer là NULL sẽ khiến việc ghi khôi phục thất bại. Mục đích của việc sử dụng cờ chỉ dành cho việc dọn dẹp là cho phép thu hẹp các điều kiện như vậy.

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

chịu trách nhiệm

Linux

Đặt trước

16/09/2025

Tiết lộ

16/09/2025

Kiểm duyệt

được chấp nhận

EPSS

0.00149

KEV

không

Các hoạt động

rất thấp

Nguồn

Want to know what is going to be exploited?

We predict KEV entries!