CVE-2026-99156 in Linuxthông tin

Tóm tắt

Bởi VulDB • 28/10/2026

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

scsi: st: Sửa lỗi race condition use-after-free giữa st_remove() và st_open()

Hàm st_remove() giảm tham chiếu probe trên scsi_tape bằng cách gọi kref_put(), và chỉ sau đó mới xóa mục của nó khỏi st_index_idr. Nếu đây là tham chiếu cuối cùng, hàm scsi_tape_release() sẽ giải phóng cấu trúc trong khi đối tượng này vẫn còn được công bố (published) trong idr.

Hàm scsi_tape_get(), được gọi từ st_open(), tìm kiếm tape trong st_index_idr và lấy một tham chiếu dưới sự bảo vệ của st_ref_mutex và st_index_lock. Hàm remove_cdevs() không chờ đợi các phiên mở đã vượt qua chrdev_open(), do đó, một lệnh open bị chặn trên st_ref_mutex trong khi st_remove() đang giữ mutex này có thể chiếm mutex ngay sau khi st_release() nhả nó ra, tìm thấy tpnt (đã được giải phóng) trong idr và gọi kref_get() lên đối tượng đó:

BUG: KASAN: slab-use-after-free in st_open Write of size 4 ... st_open (drivers/scsi/st.c:254 drivers/scsi/st.c:1291) chrdev_open ... Freed by task ...: kfree st_remove (drivers/scsi/st.c:4512)

Hãy xóa mục khỏi idr trước khi giảm tham chiếu, tất cả đều dưới sự bảo vệ của st_ref_mutex. Một lệnh scsi_tape_get() đồng thời bây giờ hoặc sẽ chạy trước và giữ một tham chiếu hợp lệ giúp duy trì trạng thái sống còn của tape, hoặc sẽ chạy sau đó và không tìm thấy gì, khiến st_open() thất bại với mã lỗi -ENXIO.

Điều này khôi phục lại thứ tự mà st_remove() đã có trước khi chuyển đổi sang sử dụng st_index_idr, trong đó tape được hủy công bố từ scsi_tapes[] trước khi thực hiện lệnh kref_put() cuối cùng.

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

25/09/2026

Tiết lộ

28/10/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

Want to know what is going to be exploited?

We predict KEV entries!