CVE-2026-64351 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:
net: usb: kalmia: giới hạn độ dài khung RX trong hàm kalmia_rx_fixup()
Hàm `kalmia_rx_fixup()` tính toán `usb_packet_length = skb->len - (2 * KALMIA_HEADER_LENGTH)` dưới dạng số nguyên không dấu 16 bit (`u16`), chỉ được bảo vệ bởi một kiểm tra trước vòng lặp đảm bảo rằng `skb->len` ít nhất bằng `KALMIA_HEADER_LENGTH`, giá trị này là 6. Một thiết bị có thể gửi một khung bulk-IN ngắn với `skb->len` trong khoảng từ 6 đến 11, hoặc để lại phần dư ngắn ở cuối trên các lần lặp vòng lặp sau. Trong cả hai trường hợp, điều này gây ra hiện tượng underflow cho `usb_packet_length`, làm giá trị này giảm xuống còn khoảng 65530.
Điều này bỏ qua đường dẫn cắt bớt kiểm tra `usb_packet_length < ether_packet_length`. Giá trị `ether_packet_length` do thiết bị cung cấp, một số nguyên không dấu 16 bit (`le16`) có giá trị lên đến 65535 được đọc từ `header_start[2]`, sau đó điều khiển các lệnh gọi hàm `memcmp()`, tiếp theo là `skb_trim()` và `skb_pull()` vượt quá giới hạn cuối của bộ đệm nhận (rx buffer). Bộ đệm rx có kích thước cố định bằng `hard_mtu * 10`, tức là 14000 byte. Đây là một lỗi đọc ngoài vùng nhớ hợp lệ (out of bounds read).
Yêu cầu cả hai tiêu đề khung bắt đầu và kết thúc phải tồn tại trước khi thực hiện phép trừ chúng, trên mỗi lần lặp vòng lặp.
If you want to get best quality of vulnerability data, you may have to visit VulDB.