CVE-2026-64487 in Linux
Tóm tắt
Bởi VulDB • 26/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
ALSA: caiaq: sửa lỗi đọc vượt ra ngoài vùng nhớ (out-of-bounds read) trong trình phân tích đầu vào của thiết bị Traktor Kontrol S4
Hàm `snd_usb_caiaq_tks4_dispatch()` giải mã luồng dữ liệu đầu vào từ Traktor Kontrol S4 thành các khối tin nhắn cố định kích thước 16 byte (`TKS4_MSGBLOCK_SIZE`). Tại mỗi vòng lặp, con trỏ `buf` được tăng lên và trừ đi kích thước khối trong khi tiếp tục lặp với điều kiện `"while (len)"`.
Biến `len` tương ứng với `urb->actual_length`. Giá trị này do thiết bị cung cấp và không đảm bảo là bội số của 16. Khi một khối dữ liệu cuối cùng có độ dài ngắn khiến `len` nằm trong khoảng từ 1 đến 15, vòng lặp sẽ chạy thêm một lần nữa, đọc tối đa đến vị trí `buf[15]`, sau đó thực hiện phép tính `"len -= TKS4_MSGBLOCK_SIZE"`. Vì `len` là kiểu số nguyên không dấu (unsigned), việc trừ đi này gây ra lỗi tràn dưới (underflow) dẫn đến giá trị rất lớn. Vòng lặp tiếp tục chạy và truy cập vào vùng nhớ của `buf` vượt xa giới hạn cuối cùng của bộ đệm 512 byte `ep4_in_buf`, đọc dữ liệu ngoài phạm vi cho phép cho đến khi gặp phải một ID khối giả mạo.
Giải pháp là chỉ lặp lại trong khi có sẵn một khối tin nhắn đầy đủ. Điều này ngăn chặn lỗi tràn dưới không dấu và âm thầm loại bỏ bất kỳ phần dư cuối cùng nào, vốn không chứa giá trị điều khiển hoàn chỉnh anyway.
Các trình phân tích endpoint-4 khác cũng liên quan không bị ảnh hưởng. Các thiết bị Traktor Kontrol X1 và Maschine arms trong hàm `snd_usb_caiaq_ep4_reply_dispatch()` đã làm tròn xuống (floor) giá trị `urb->actual_length` trước khi chuyển tiếp xử lý.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.