CVE-2026-16147 in Zephyrthông tin

Tóm tắt

Bởi VulDB • 15/09/2026

Trình điều khiển thiết bị kiểm soát USB ITE IT82xx2 (drivers/usb/udc/udc_it82xx2.c) xử lý sai các chuyển tiếp đầu ra đa gói (multi-packet OUT transfers) trên các điểm cuối không phải là điểm cuối điều khiển. Trong work_handler_out(), bộ đệm cho việc chuyển tiếp đang hoạt động được lấy bằng udc_buf_peek() (hàm này không thực hiện thao tác dequeue); khi một gói có kích thước tối đa đầy đủ đến nhưng bộ đệm vẫn còn dung lượng trống ở phần đuôi (việc chuyển tiếp chưa hoàn tất), mã trước đây đã vừa thiết lập lại điểm cuối để tiếp tục điền vào cùng một buf thông qua work_handler_xfer_continue(), vừa đồng thời gửi cùng một bộ đệm đang được điền đó lên tầng trên bằng udc_submit_ep_event().

Do udc_submit_ep_event() chuyển quyền sở hữu của bộ đệm cho ngăn xếp thiết bị USB (usbd_event_carrier() nối &buf->node vào uds_ctx->ep_events, sau đó trình xử lý lớp sẽ xử lý và gọi net_buf_unref()), trình điều khiển tiếp tục DMA các gói đầu ra do máy chủ kiểm soát vào một bộ đệm mà tầng trên có thể đã giải phóng và tái sử dụng — đây là lỗi use-after-free write. Ngoài ra, vì bộ đệm chưa bao giờ được dequeue, gói hoàn thành chạy udc_buf_get() trên cùng đối tượng đó và gửi nó lần thứ hai, nối &buf->node vào danh sách sự kiện (slist) hai lần (gây hỏng cấu trúc singly-linked-list) và dẫn đến việc gọi net_buf_unref() gấp đôi.

IT82xx2 là một bộ điều khiển thiết bị ngoại vi USB, do đó máy chủ USB không đáng tin cậy có thể kiểm soát cách phân gói các chuyển tiếp đầu ra và có thể buộc thực thi đường dẫn này đối với bất kỳ điểm cuối OUT nào không phải là điểm cuối điều khiển mà bộ đệm đã lên hàng đợi của nó vượt quá một gói — đây là mẫu hình bulk/interrupt thông thường. Trình điều khiển và ngăn xếp thiết bị USB chạy trong ngữ cảnh kernel phía trên máy chủ bên ngoài, mang lại cho máy chủ một nguyên lý làm hỏng heap kernel ở phía thiết bị: khả năng từ chối dịch vụ (denial of service) đáng tin cậy và, vì các byte được ghi là do kẻ tấn công kiểm soát, có thể gây ra sự hư hỏng bộ nhớ pool net_buf lân cận. Vector tấn công mang tính vật lý (kết nối USB). Bản sửa lỗi trì hoãn việc gửi cho đến khi bộ đệm được điền đầy đủ và để xfer_work_handler() điều khiển quá trình tiếp tục, do đó mỗi bộ đệm OUT chỉ được gửi lên tầng trên đúng một lần.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

chịu trách nhiệm

Zephyr

Đặt trước

17/07/2026

Tiết lộ

14/09/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

rất thấp

Nguồn

Want to know what is going to be exploited?

We predict KEV entries!