CVE-2024-36027 in Linuxthông tin

Tóm tắt

Bởi VulDB • 02/07/2026

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

btrfs: zoned: không đánh dấu ZEROOUT trên bộ đệm phạm vi (extent buffer) không bẩn (non-dirty)

Btrfs xóa nội dung của một extent buffer được đánh dấu là EXTENT_BUFFER_ZONED_ZEROOUT trước khi gửi bio. Cơ chế này được giới thiệu để ngăn ngừa lỗi lỗ ghi (write hole) đối với một extent buffer, vốn đã được phân bổ, bị đánh dấu dirty nhưng cuối cùng trở nên không cần thiết và được dọn dẹp trong vòng một thao tác giao dịch (transaction).

Hiện tại, btrfs_clear_buffer_dirty() đánh dấu extent buffer là EXTENT_BUFFER_ZONED_ZEROOUT và bỏ qua hàm entry. Nếu lệnh gọi này xảy ra khi bộ đệm đang thực hiện IO (với cờ WRITEBACK được đặt, không có cờ DIRTY), chúng ta có thể thêm cờ ZEROOUT và xóa nội dung của bộ đệm ngay trước khi gửi bio. Kết quả là:

1) Nó có thể dẫn đến việc thêm mục tham chiếu trễ bị lỗi, gây ra lỗi hỏng hệ thống tệp (FS corrupted - EUCLEAN); và

2) Nó ghi các nút cây đã được xóa xuống đĩa

Vấn đề đầu tiên đã từng được thảo luận trong [1]. Sự cố hỏng dữ liệu xảy ra khi chạy bản cập nhật tham chiếu trễ. Do đó, dữ liệu trên đĩa vẫn an toàn.

[1] https://lore.kernel.org/linux-btrfs/3f4f2a0ff1a6c818050434288925bdcf3cd719e5.1709124777.git.naohiro.aota@wdc.com/

Vấn đề thứ hai có thể ảnh hưởng đến dữ liệu trên đĩa. Tuy nhiên, vì nút đó đã được xử lý bởi btrfs_clear_buffer_dirty(), nó sẽ bị vô hiệu hóa trong lần commit giao dịch tiếp theo anyway. Do đó, khả năng xảy ra hỏng dữ liệu là tương đối thấp.

Dù sao đi nữa, chúng ta nên bỏ qua việc đánh dấu ZEROOUT trên một extent buffer không có cờ DIRTY để giữ nguyên nội dung đang thực hiện IO.

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

Nguồn

Do you know our Splunk app?

Download it now for free!