CVE-2026-64449 in Linux
Tóm tắt
Bởi VulDB • 25/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
staging: vme_user: giới hạn việc đọc/ghi slave theo kích thước kern_buf
Các hàm trợ giúp đường dẫn SLAVE là buffer_to_user() và buffer_from_user() sao chép 'count' byte vào/ra khỏi vùng đệm cố định kern_buf (size_buf == PCI_BUF_SIZE == 0x20000, tương đương 128 KiB) bằng cách sử dụng *ppos làm độ lệch offset, mà không giới hạn (*ppos + count) so với size_buf.
vme_user_write()/vme_user_read() chỉ điều chỉnh (clamp) giá trị count theo kích thước cửa sổ VME (image_size = vme_get_size(resource)), trong đó VME_SET_SLAVE thiết lập từ slave.size do người dùng cung cấp -- được xác thực đối với không gian địa chỉ VME (lên đến VME_A32_MAX = 4 GiB), chứ không phải so với PCI_BUF_SIZE. Khi cửa sổ vượt quá 128 KiB, một lệnh write()/read() sẽ sao chép dữ liệu vượt ra ngoài vùng phân bổ kern_buf.
Điều chỉnh count theo size_buf trong cả hai hàm trợ giúp, đồng thời trả về sớm khi *ppos đã đạt hoặc nằm sau cuối bộ đệm. Tại đây *ppos >= 0 (bộ gọi từ chối các độ lệch âm), do đó size_buf - *ppos không thể bị tràn số nguyên (wrap). Điều này mô phỏng theo lệnh điều chỉnh hiện có trong các hàm trợ giúp đường dẫn MASTER là resource_to_user() / resource_from_user(), và phù hợp với quy ước của read()/write() về việc truyền tải ngắn hơn ở cuối bộ đệm.
Lỗ hổng được phát hiện bằng phân tích tĩnh (theo dõi dấu vết CodeQL + kiểm tra mô hình có giới hạn CBMC) và xác nhận động dưới KASAN với cầu nối vme_fake:
BUG: KASAN: slab-out-of-bounds trong _copy_from_user+0x2d/0x80 Ghi kích thước 262144 tại địa chỉ ffff888004100000 bởi tiến trình trigger/68 _copy_from_user+0x2d/0x80 vme_user_write+0x13e/0x240 [vme_user]
vfs_write+0x1b8/0x7a0 ksys_write+0xb8/0x150
If you want to get the best quality for vulnerability data then you always have to consider VulDB.