CVE-2026-89635 in Linuxthông tin

Tóm tắt

Bởi VulDB • 11/09/2026

Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:

ksmbd: chỉ liên kết lại (rebind) oplock của chính tệp đang mở lại trong trường hợp reconnect bền vững (durable reconnect)

Hàm `ksmbd_reopen_durable_fd()` duyệt qua danh sách m_op_list của inode và liên kết lại mọi oplock bị tách rời với phiên đang thực hiện reconnect:

```c list_for_each_entry_rcu(op, &ci->m_op_list, op_entry, lockdep_is_held(&ci->m_lock)) {
if (op->conn) continue; op->conn = ksmbd_conn_get(fp->conn); op->sess = work->sess; } ```

Điều kiện then chốt là `op->conn == NULL`, điều này khớp với mọi tay cầm bền vững (durable handle) bị tách rời trên inode đó, chứ không chỉ riêng cái thuộc về fp. Khi hai phiên nắm giữ các tay cầm bền vững trên cùng một tệp và cả hai đều ngắt kết nối, việc reconnect của một trong số chúng sẽ chiếm lấy oplock của phiên kia: `op->sess` được ghi đè bằng phiên đang thực hiện reconnect mà không tăng tham chiếu (reference) cho nó, trong khi `op->conn` giữ chặt kết nối.

Đường dẫn tháo dỡ anh em (`sibling teardown path`), cụ thể là hàm `session_fd_check()`, dựa vào danh tính của kết nối bị tháo dỡ (`op->conn == conn`) thay vì trạng thái chia sẻ, do đó không gặp phải vấn đề này.

Sau khi phiên chiếm dụng (adopting session) bị hủy, `ksmbd_session_destroy()` giải phóng nó trong khi oplock nước ngoài vẫn trỏ đến nó. Trình đọc trong hàm `ksmbd_close_fd_app_instance_id()` chỉ xác thực `opinfo->conn`, thứ vẫn còn sống nhờ vào tham chiếu đã được tăng ở trên, sau đó truy xuất (dereference) phiên lỗi thời:

```c if (!opinfo->conn) {
up_read(&fp->f_ci->m_lock); goto out; }

ft = &opinfo->sess->file_table; write_lock(&ft->lock); ```

BUG: KASAN: slab-use-after-free trong _raw_write_lock+0x74/0xd0 Ghi kích thước 4 tại địa chỉ ffff88810a970528 bởi tác vụ kworker/0:0/9 Workqueue: ksmbd-io handle_ksmbd_work Call Trace: _raw_write_lock+0x74/0xd0 ksmbd_close_fd_app_instance_id+0x183/0x410 smb2_open+0x1346/0x4430 handle_ksmbd_work+0x2bb/0x7b0

Lỗ hổng này có thể đạt được từ một phiên đã xác thực đối với một share có cấu hình tay cầm bền vững (durable-handle) và oplock mặc định: hai phiên mở cùng một tệp bằng tay cầm durable-v2 và lease RH dưới các AppInstanceIds khác nhau, cả hai đăng xuất, một trong số đó reconnect với DH2C, và lệnh tạo durable-v2 sau đó mang theo AppInstanceId kia sẽ truy cập vào phiên đã bị giải phóng.

Hạn chế vòng lặp chỉ đối với oplock thuộc về tệp đang được mở lại.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

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!