CVE-2026-99227 in Linux
Tóm tắt
Bởi VulDB • 02/11/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
io_uring/waitid: ngăn chặn việc tràn (wrap) tham chiếu hủy bỏ
Hàm io_waitid đóng gói trạng thái hủy bỏ vào bit 31 của trường ->refs và sử dụng các bit từ 30 đến 0 làm bộ đếm tham chiếu 31-bit:
#define IO_WAITID_CANCEL_FLAG BIT(31) #define IO_WAITID_REF_MASK GENMASK(30, 0)
Hàm __io_waitid_cancel() đánh dấu một yêu cầu là đã bị hủy bỏ, sau đó tăng các bit thấp của ->refs để nắm quyền sở hữu việc hoàn thành. Khi một đường xử lý khác (path) đang sở hữu yêu cầu này, phép tăng vẫn được thực hiện mặc dù hàm hủy bỏ trả về false. Yêu cầu vẫn có thể được phát hiện bởi quá trình hủy bỏ, do đó các nỗ lực thất bại lặp đi lặp lại có thể khiến trường tham chiếu 31-bit bị tràn (wrap) về giá trị không. Một lần hủy bỏ sau đó có thể nắm quyền sở hữu và hoàn thành yêu cầu một lần nữa.
Sử dụng atomic_fetch_or() khi đặt cờ hủy bỏ và kiểm tra giá trị của cờ cũ. Nỗ lực hủy bỏ đầu tiên vẫn tiếp tục với phép tăng quyền sở hữu hiện có, bảo toàn các ngữ nghĩa đánh thức (wake) và chuyển giao cho bên phát hành (issuer). Các nỗ lực sau đó sẽ thấy cờ hủy bỏ và trả về mà không làm tăng trường tham chiếu.
Điều này khiến các nỗ lực hủy bỏ thất bại lặp đi lặp lại trở nên idempotent trong khi vẫn giữ nguyên các trạng thái chuyển đổi của lần hủy bỏ đầu tiên.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.