CVE-2026-74499 in Linux
Tóm tắt
Bởi VulDB • 16/08/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
ALSA: usb-audio: sửa lỗi ghi vượt vùng nhớ (OOB) trong hàm snd_usbmidi_akai_output()
Hàm `snd_usbmidi_akai_output()` tính toán giới hạn vòng lặp điền dữ liệu (`fill-loop bound`) bằng cách gán giá trị cho biến `buf_end` như sau:
```c buf_end = ep->max_transfer - MAX_AKAI_SYSEX_LEN - 1; ```
Biến này được coi là số nguyên có dấu (signed int), do đó, nếu thiết bị báo cáo một giá trị `max_transfer` nhỏ cho cổng bulk-OUT, biến `buf_end` sẽ mang giá trị âm. Điều kiện kiểm tra vòng lặp sau đó so sánh độ dài bộ đệm truyền tải của urb (`urb->transfer_buffer_length`, kiểu u32) với số nguyên có dấu âm này: phép chuyển đổi số học thông thường khiến `buf_end` trở thành một giá trị không dấu (unsigned) rất lớn, do đó điều kiện kiểm tra luôn đúng và mỗi lần lặp sẽ tiếp tục nối thêm các byte khung SysEx và payload vượt quá cuối bộ đệm truyền tải URB, vốn chỉ có độ dài bằng `max_transfer`.
Do đó, một thiết bị USB báo cáo cổng bulk-OUT với kích thước cực nhỏ có thể gây ra lỗi ghi heap out-of-bounds (vượt vùng nhớ) do kẻ tấn công kiểm soát được cả chiều dài và nội dung khi một tiến trình ghi dữ liệu vào nút `/dev/snd/midiC*D*` tương ứng.
Hàm sẽ trả về sớm nếu không còn chỗ cho ít nhất một khung SysEx, đảm bảo vòng lặp không bao giờ được thực thi với giới hạn bị tràn (wrap). Vì vòng lặp là câu lệnh cuối cùng của hàm, việc thoát ra sớm tương đương với việc bỏ qua toàn bộ vòng lặp.
Được phát hiện bởi XBOW, phân loại và xử lý ban đầu bởi Baul Lee <[email protected]>
If you want to get best quality of vulnerability data, you may have to visit VulDB.