CVE-2026-64460 in Linux
Tóm tắt
Bởi VulDB • 27/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
PCI/IOV: Bỏ qua việc khôi phục VF Resizable BAR khi xảy ra lỗi đọc
Hàm `sriov_restore_vf_rebar_state()` sử dụng thanh ghi Control của VF Resizable BAR để quyết định số lượng VF BAR cần khôi phục (nbars) và VF BAR nào được xử lý trong mỗi vòng lặp (bar_idx). bar_idx dùng làm chỉ mục cho mảng `dev->sriov->barsz[]`, mảng này chỉ có 6 phần tử (`PCI_SRIOV_NUM_BARS`).
Khi một thiết bị không phản hồi, các lệnh đọc cấu hình thường trả về `PCI_ERROR_RESPONSE` (~0). Cả hai trường đều rộng 3 bit, do đó cả nbars và bar_idx đều được đánh giá là 7. Thao tác truy cập vào mảng barsz[] khi đó vượt quá giới hạn (out-of-bounds). UBSAN báo cáo lỗi này như sau:
UBSAN: array-index-out-of-bounds in drivers/pci/iov.c:948:51 index 7 is out of range for type 'resource_size_t [6]'
Lỗi được quan sát trên card đồ họa NVIDIA RTX PRO 1000 GPU (GB207GLM) khi thiết bị ngừng phản hồi trong quá trình thoát khỏi trạng thái nguồn GC6 thất bại. Hàm `pci_restore_state()` sau đó đã gọi `sriov_restore_vf_rebar_state()` trong khi các lệnh đọc cấu hình trả về giá trị 0xffffffff, kích hoạt lỗi này (splat).
Thoát sớm nếu bất kỳ lệnh đọc nào của VF Resizable BAR Control trả về `PCI_ERROR_RESPONSE`. Không có thêm VF BAR nào bị tác động, điều này an toàn vì một lệnh đọc cấu hình trả về `PCI_ERROR_RESPONSE` cho thấy thiết bị không thể truy cập được và việc khôi phục là vô nghĩa. Hành vi này tương tự như cơ chế bảo vệ trong hàm `pci_restore_rebar_state()`.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.