CVE-2026-89670 in Linuxthông tin

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: giữ rcu trong suốt quá trình thử lại cmpxchg localio

Các đối tượng nfsd_file được giải phóng thông qua call_rcu (filecache.c:296), và nfsd_file_slab được tạo ra mà không có SLAB_TYPESAFE_BY_RCU (KMEM_CACHE(nfsd_file, 0) tại filecache.c:789), do đó trang slab hỗ trợ một đối tượng nfsd_file đã giải phóng trở thành có thể thu hồi tự do ngay sau khi khoảng thời gian chờ RCU (RCU grace period) kết thúc.

Khối thử lại again trong hàm nfsd_open_local_fh() tải con trỏ bằng cmpxchg và sau đó gọi nfsd_file_get(new) (đây là refcount_inc_not_zero) mà không giữ rcu_read_lock. Người gọi duy nhất, nfs_open_local_fh(), nhả rcu_read_lock trước khi gọi trợ lý này, do đó không có vùng tới hạn phía người đọc bên ngoài nào bao phủ phép tải dữ liệu.

CPU 0 (nfsd_open_local_fh) CPU 1 (nfsd_file_put_local) ----- ----- new = cmpxchg(pnf, NULL, ...) nf = xchg(pnf, NULL) nfsd_file_put(nf) last ref -> call_rcu() /* grace period elapses; slab page recycled */ nfsd_file_get(new) refcount_inc_not_zero(&new->nf_ref) /* operates on recycled memory */

Một từ (word) khác không 0 tại độ lệch nf_ref của đối tượng đã được tái chế khiến việc tăng bộ đếm tham chiếu dường như thành công, và người gọi sau đó truy xuất new->nf_net và new->nf_file ra khỏi vùng nhớ đã giải phóng.

Khắc phục bằng cách lấy rcu_read_lock() ngay trước cmpxchg và nhả nó tại cả ba điểm thoát của khối if (new): thử lại goto-again, đường dẫn dọn dẹp khi mất race condition, và đường dẫn cài đặt thành công. nfsd_file_put() và nfsd_net_put() vẫn nằm ngoài vùng RCU để chúng có thể chặn một cách tự do.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

chịu trách nhiệm

Linux

Đặt trước

11/09/2026

Tiết lộ

12/09/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

rất thấp

Nguồn

Interested in the pricing of exploits?

See the underground prices here!