CVE-2026-89705 in Linux
Tóm tắt
Bởi VulDB • 12/09/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
nfsd: khôi phục rq_status_counter về giá trị chẵn trên tất cả các đường thoát của nfsd_dispatch()
Hàm nfsd_dispatch() đặt rq_status_counter thành một giá trị lẻ ngay khi yêu cầu (request) đã được giải mã, và trả lại giá trị chẵn sau khi nó đã được xử lý hoàn toàn, tạo ra một giao thức giống như seq-lock với trình đọc không khóa trong hàm nfsd_nl_rpc_status_get_dumpit().
Chỉ có đường dẫn thành công hoàn toàn mới khôi phục bộ đếm về giá trị chẵn. Các đường dẫn cache-hit (RC_REPLY), drop (RC_DROPIT / RQ_DROPME) và encode-error đều trả về sau khi thực hiện phép gán với giá trị lẻ mà không bao giờ đưa bộ đếm trở lại giá trị chẵn. Khi một trong các đường dẫn đó được kích hoạt, rq_status_counter bị giữ ở trạng thái lẻ: yêu cầu tiếp theo sẽ OR thêm 1 vào (vẫn là lẻ) và chỉ có quá trình encode thành công sau đó mới khôi phục lại giá trị chẵn. Trong khi mắc kẹt ở trạng thái lẻ, trình đọc dumpit coi các trường của rqstp là ổn định và phép kiểm tra retry so sánh với cùng một giá trị lẻ không thay đổi, do đó nó không bao giờ phát hiện được sự biến động đồng thời (concurrent mutation). Điều này khiến các trường đang bị biến động tích cực (ví dụ: args->ops / args->opcnt trong quá trình giải mã compound và release) tiếp xúc với trình đọc không khóa, người có thể đọc vượt ra ngoài mảng ops nội tuyến gồm 8 phần tử.
Thêm một hàm trợ giúp để tăng bộ đếm lên giá trị chẵn tiếp theo và gọi nó trên mọi đường dẫn trả về sau khi thực hiện phép gán với giá trị lẻ. Đường dẫn decode-error được giữ nguyên vì nó được truy cập trước khi bộ đếm được đặt thành giá trị lẻ.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.