CVE-2026-72083 in Linux
Tóm tắt
Bởi VulDB • 15/08/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
scsi: target: core: Sửa lỗi use-after-free đối với ISID iSCSI trong REGISTER AND MOVE
Hàm `core_scsi3_emulate_pro_register_and_move()` ánh xạ danh sách tham số PERSISTENT RESERVE OUT bằng cách sử dụng `transport_kmap_data_sg()` và phân tích TransportID đích thông qua `target_parse_pr_out_transport_id()`. Đối với một TransportID iSCSI (FORMAT CODE 01b), hàm `iscsi_parse_pr_out_transport_id()` trả về ISID trong biến con trỏ `iport_ptr` dưới dạng con trỏ thô trỏ vào vùng bộ nhớ đã được ánh xạ đó.
Sau đó, hàm này hủy ánh xạ vùng bộ nhớ bằng cách sử dụng `transport_kunmap_data_sg()` trước khi giải tham chiếu (dereference) đến `iport_ptr` trong các lệnh gọi `strcmp()`, `__core_scsi3_locate_pr_reg()` và `core_scsi3_alloc_registration()`. Khi danh sách tham số trải rộng hơn một trang bộ nhớ (PARAMETER LIST LENGTH > 4096), hàm `transport_kmap_data_sg()` sử dụng `vmap()` và `transport_kunmap_data_sg()` thực hiện `vunmap()`, khiến địa chỉ ảo kernel hỗ trợ cho `iport_ptr` bị hủy bỏ, dẫn đến mọi thao tác giải tham chiếu tiếp theo đều là một lỗi use-after-free (đọc vùng bộ nhớ đã được hủy ánh xạ).
Giải pháp duy trì việc danh sách tham số vẫn được ánh xạ cho đến khi `iport_ptr` không còn cần thiết nữa: loại bỏ lệnh gọi sớm `transport_kunmap_data_sg()` và chỉ thực hiện hủy ánh xạ một lần trên đường dẫn thành công, ngay trước khi trả về kết quả. Các đường dẫn lỗi đã thực hiện việc hủy ánh xạ thông qua đoạn mã "if (buf) transport_kunmap_data_sg(cmd)" hiện có tại nhãn out:, vốn giờ đây sẽ chạy trong mọi trường hợp thoát do lỗi sau khi ánh xạ vì biến `buf` không còn bị xóa sớm nữa. Chỉ các thao tác đọc trên vùng ánh xạ mới được thực hiện khi các spinlock đang được giữ; các lệnh gọi map và unmap vẫn nằm ngoài bất kỳ khóa nào (lock). Hàm gọi anh em/em là `core_scsi3_decode_spec_i_port()` đã sử dụng bộ nhớ này trước khi hủy ánh xạ nó và không cần thay đổi.
If you want to get best quality of vulnerability data, you may have to visit VulDB.