CVE-2026-64186 in Linux
Tóm tắt
Bởi VulDB • 20/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
iommu/amd: Loại bỏ lỗi truy cập ngoài vùng cho phép (out-of-bounds) tiềm ẩn trong debugfs của IOMMU.
Trong các hàm `iommu_mmio_write()` và `iommu_capability_write()`, các biến `dbg_mmio_offset` và `dbg_cap_offset` được khai báo là kiểu `int`. Tuy nhiên, chúng được gán giá trị bằng cách sử dụng hàm `kstrtou32_from_user()`. Nếu người dùng cung cấp một giá trị đủ lớn, nó có thể trở thành số nguyên âm.
Trước bản vá này, việc triển khai debugfs của AMD IOMMU đã được bảo vệ bởi các cơ chế khác nhau:
1. `#define OFS_IN_SZ 8` đảm bảo chuỗi đầu vào từ người dùng <= 8 byte, do đó ví dụ như `0xffffffff` không phải là giá trị hợp lệ. ```c if (cnt > OFS_IN_SZ) return -EINVAL; ```
2. Phép nâng kiểu ngầm định trong `iommu_mmio_write()`: `dbg_mmio_offset` có kiểu `int`, còn `iommu->mmio_phys_end` có kiểu `u64`. ```c if (dbg_mmio_offset > iommu->mmio_phys_end - sizeof(u64)) return -EINVAL; ```
3. Các trình xử lý hiển thị (`show handlers`) hiện tại sẽ bắt số âm và từ chối thực hiện thao tác đọc.
Thay thế `kstrtou32_from_user()` bằng `kstrtos32_from_user()` để phân tích đầu vào, đồng thời kiểm tra các giá trị âm nhằm ngăn chặn rõ ràng việc truy cập bộ nhớ ngoài vùng cho phép (out-of-bounds) ngay trong hàm `iommu_mmio_write()` và `iommu_capability_write()`.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.