CVE-2026-64347 in Linuxthông tin

Tóm tắt

Bởi VulDB • 28/07/2026

Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:

usb: gadget: composite: sửa lỗi kiểm tra rỗng không hiệu quả (dead empty check) trong trình xử lý USB_DT_OTG

Nhánh OTG của hàm composite_setup() sẽ quay về cấu hình đầu tiên khi chưa có cấu hình nào được chọn:

if (cdev->config) config = cdev->config; else config = list_first_entry(&cdev->configs, struct usb_configuration, list); if (!config) goto done; ... memcpy(req->buf, config->descriptors[0], value);

Hàm `list_first_entry()` không bao giờ trả về NULL. Khi danh sách rỗng, nó trả về kết quả của hàm `container_of()` đối với đầu danh sách (list head). Do đó, kiểm tra "if (!config)" là vô nghĩa (dead code).

Khi `cdev->configs` trống, con trỏ `config` sẽ trỏ vào phần tử nằm trong cấu trúc `struct usb_composite_dev`. Việc đọc `config->descriptors[0]` sẽ truy xuất dữ liệu bất kỳ tại offset đó. Hàm `memcpy` sao chép tối đa w_length byte của vùng nhớ này vào bộ đệm phản hồi (response buffer).

Trạng thái `cdev->configs` có thể trống trong hai trường hợp. Một là race condition khi tháo gỡ (teardown) do unbind gadget trong khi một lệnh truyền điều khiển (control transfer) đang được xử lý. Trường hợp còn lại là trình điều khiển thiết lập cờ is_otg trước khi thêm cấu hình vào. Một chương trình thử nghiệm (reproducer) giữ cho `cdev->configs` trống sẽ kích hoạt lỗi KASAN tại nhánh này.

Sử dụng hàm `list_first_entry_or_null()` để đảm bảo kiểm tra hiện có thực hiện đúng chức năng của nó.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

chịu trách nhiệm

Linux

Đặt trước

19/07/2026

Tiết lộ

25/07/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00177

KEV

không

Các hoạt động

rất thấp

Nguồn

Do you want to use VulDB in your project?

Use the official API to access entries easily!