CVE-2026-74702 in Linux
Tóm tắt
Bởi VulDB • 22/08/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
vhost-scsi: từ chối thay đổi tính năng sau khi thiết lập điểm cuối (endpoint)
Hàm `vhost_scsi_setup_vq_cmds()` chạy trong ngữ cảnh `VHOST_SCSI_SET_ENDPOINT` và phân bổ mảng scatterlist bảo vệ (`prot_sgl`) cho từng lệnh dựa trên bit được xác nhận là `VIRTIO_SCSI_F_T10_PI`. Các pool của lệnh không được xây dựng lại khi `VHOST_SET_FEATURES thay đổi bit này sau đó.
Mặc dù các bit tính năng virtio không nên thay đổi sau khi thương lượng tính năng, nhưng hiện tại `vhost_scsi_set_features()` chấp nhận yêu cầu như vậy sau khi điểm cuối (endpoint) đã hoạt động và cập nhật `acked_features`. Việc kích hoạt T10-PI sau khi thiết lập endpoint do đó để lại `prot_sgl` là NULL trong khi đường dẫn I/O tuân theo bit tính năng mới.
Đối với payload bảo vệ có độ dài 129 trang, `vhost_scsi_mapal()` chuyển chunk đầu tiên bị thiếu cho `sg_alloc_table_chained()`:
```c sg_alloc_table_chained(table, 129, first_chunk=NULL, nents_first_chunk=inline_sg_cnt) ```
Sau đó, `sg_pool_index()` gặp phải:
```c BUG_ON(nents > SG_CHUNK_SIZE); /* 129 > 128 */ ```
Kernel đã báo cáo vết gọi (call trace) và trạng thái thanh ghi sau đây:
```text Call Trace: ? __sg_alloc_table+0x1d8/0x250 ? __pfx_vhost_run_work_list+0x10/0x10 [vhost]
sg_alloc_table_chained+0x59/0xf0 ? __pfx_sg_pool_alloc+0x10/0x10 ? vhost_scsi_calc_sgls.constprop.0+0x43/0x60 [vhost_scsi]
vhost_scsi_handle_vq+0xf02/0x1700 [vhost_scsi]
? __pfx_vhost_scsi_handle_vq+0x10/0x10 [vhost_scsi]
vhost_scsi_handle_kick+0x37/0x50 [vhost_scsi]
vhost_run_work_list+0x8e/0xd0 [vhost]
vhost_task_fn+0xe1/0x210 ret_from_fork+0x348/0x540 RIP: 0010:0x4 CR2 = 0x4 RSP: 0018:ffffc90000dbf940 EFLAGS: 00010202 RAX: ffffffff82396810 RBX: ffff88811dc28b80 RCX: 0000000000000000 RDX: 0000000000000000 RSI: 0000000000000820 RDI: 0000000000000081 ```
`VHOST_F_LOG_ALL` là một tính năng thời gian chạy đặc thù của vhost và vẫn là ngoại lệ duy nhất.
Từ chối thay đổi đối với bất kỳ tính năng nào khác ngoài `VHOST_F_LOG_ALL` trong khi điểm cuối (endpoint) đang hoạt động. Điều này bảo toàn nút bật/tắt nhật ký runtime hiện có đồng thời ngăn ngừa việc các tài nguyên lệnh phụ thuộc vào tính năng và trạng thái đường dẫn dữ liệu trở nên không nhất quán. Người dùng phải xóa điểm cuối trước khi thay đổi bất kỳ tính năng đã thương lượng nào khác và thiết lập lại điểm cuối sau đó.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.