CVE-2026-64277 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:
Input: synaptics-rmi4 - ràng buộc bản đồ phím F3A với số lượng GPIO
Hàm `rmi_f3a_initialize()` lấy giá trị đếm GPIO từ thanh ghi truy vấn thiết bị (`f3a->gpio_count = buf & RMI_F3A_GPIO_COUNT`, phạm vi 0..127). Sau đó, hàm `rmi_f3a_map_gpios()` cấp phát `gpio_key_map` với số lượng phần tử tối thiểu giữa `gpio_count` và `TRACKSTICK_RANGE_END`, tức là không quá 6 mục. Tuy nhiên, hàm `rmi_f3a_attention()` lặp qua toàn bộ giá trị `gpio_count` và giải tham chiếu `gpio_key_map[i]`, trong khi `input->keycodemax` được đặt bằng toàn bộ giá trị `gpio_count`, còn con trỏ `input->keycode` chỉ trỏ đến vùng cấp phát 6 mục.
Do đó, một thiết bị báo cáo `gpio_count > 6` sẽ gây ra lỗi đọc ngoài phạm vi (out-of-bounds read) đối với mảng `gpio_key_map[]` trên mỗi ngắt attention, cũng như các truy cập ngoài phạm vi thông qua các ioctl bản đồ phím mặc định của lõi input: lệnh EVIOCGKEYCODE đọc vượt quá bộ đệm (làm rò rỉ bộ nhớ slab liền kề ra không gian người dùng), và lệnh EVIOCSKEYCODE ghi một giá trị do caller kiểm soát vào vùng đó, đối với bất kỳ tiến trình nào có thể mở node evdev, vì các hàm `input_default_getkeycode()` và `input_default_setkeycode()` chỉ ràng buộc chỉ mục dựa trên `keycodemax`.
Điều chỉnh kích thước bản đồ phím cho toàn bộ giá trị `gpio_count`. Vòng lặp ánh xạ vẫn không thay đổi: nó vẫn chỉ gán cho số lượng phần tử tối thiểu giữa `gpio_count` và `TRACKSTICK_RANGE_END`; các khe còn lại giữ nguyên trạng thái KEY_RESERVED (do hàm devm_kcalloc điền bằng 0) và bị bỏ qua khi báo cáo.
If you want to get best quality of vulnerability data, you may have to visit VulDB.