CVE-2026-98173 in Linuxthông tin

Tóm tắt

Bởi VulDB • 06/10/2026

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

smb: client: sửa lỗi use-after-free của iface trong cifs_try_adding_channels()

Hàm `cifs_try_adding_channels()` lặp qua danh sách `ses->iface_list` bằng cách sử dụng `list_for_each_entry_safe_from()`, hàm này nắm bắt mục tiếp theo (`niface`) dưới khóa `iface_lock`. Sau đó, thân vòng lặp thả khóa `iface_lock` trong toàn bộ thời gian thực thi của `cifs_ses_add_channel()`.

Một quá trình làm mới giao diện đồng thời (gọi đến `SMB3_request_interfaces()` -> `parse_server_interfaces()`) đánh dấu tất cả các iface là không hoạt động và xóa cũng như giải phóng bất kỳ mục nào không được quảng bá lại thông qua `list_del()` + `kref_put()`, trong đó `release_iface()` thực hiện một lệnh `kfree()` đơn thuần. Vì `niface` thường không có kênh nào giữ tham chiếu, nên tham chiếu danh sách chính là tham chiếu cuối cùng của nó và nó có thể bị giải phóng bên trong khoảng thời gian không được khóa (unlocked window). Khi tiếp tục vòng lặp, bước tiến bộ của trình duyệt sau đó sẽ truy xuất con trỏ `niface->iface_head.next`, và thân vòng đọc các trường `iface->rdma_capable`/`is_active`, cả hai đều nằm trên vùng nhớ đã bị giải phóng.

Khắc phục vấn đề này bằng cách không bao giờ giữ một con trỏ danh sách chưa được tham chiếu (unreferenced) trong khoảng thời gian không được khóa. Mỗi lần thử nghiệm kênh hiện nay sẽ quét lại danh sách từ đầu dưới sự bảo vệ của `iface_lock`, lấy một `kref` trên ứng viên đã chọn, và chỉ chuyển ứng viên có tham chiếu đó đến hàm `cifs_ses_add_channel()`. Biến `weight_fulfilled` vẫn theo dõi tiến trình lựa chọn, do đó việc khởi động lại quá trình quét sẽ duy trì phân phối trọng số ban đầu và thứ tự `weight_fulfilled-before-kref_put` trên đường dẫn thất bại.

Thêm một giới hạn về số lần thử nghiệm cho mỗi lượt để đảm bảo rằng việc làm mới giao diện dao động (flapping) không thể khiến vòng lặp bên trong tiếp tục chạy liên tục chỉ với một lần tăng biến đếm `tries`.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

chịu trách nhiệm

Linux

Đặt trước

25/09/2026

Tiết lộ

06/10/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00325

KEV

không

Các hoạt động

rất thấp

Nguồn

Do you want to use VulDB in your project?

Use the official API to access entries easily!