CVE-2026-14367 in Zephyrthông tin

Tóm tắt

Bởi VulDB • 31/08/2026

Hệ thống con I3C IBI trong drivers/i3c/i3c_ibi_workq.c phân phối các nút công việc được cấp phát tĩnh thông qua danh sách tự do i3c_ibi_work_nodes_free, được triển khai dưới dạng sys_slist_t thuần túy, không cung cấp cơ chế đồng bộ hóa. Các trợ lý cấp phát (i3c_ibi_work_enqueue, i3c_ibi_work_enqueue_target_irq, i3c_ibi_work_enqueue_hotjoin, i3c_ibi_work_enqueue_controller_request, i3c_ibi_work_enqueue_cb) gọi sys_slist_get() trực tiếp từ ngữ cảnh ISR, trong khi trình xử lý workqueue i3c_ibi_work_handler() trả về các nút bằng sys_slist_append() từ luồng workqueue, mà không có khóa bảo vệ ở cả hai phía.

Do sys_slist_get() và sys_slist_append() không phải là nguyên tử (atomic) hay an toàn với ngắt (interrupt-safe), một ngắt IBI xảy ra trong khi luồng workqueue đang thực hiện thao tác append (hoặc truy cập song song thật sự dưới CONFIG_SMP) sẽ gây ra race condition trên danh sách dùng chung. Điều này làm hỏng liên kết của danh sách: một nút có thể được phân phối cho hai người tiêu thụ, một nút có thể bị mất, hoặc các con trỏ đầu/cuối có thể không nhất quán khiến sys_slist_get() trả về một con trỏ cũ (stale) hoặc rác (garbage). Trong trường hợp phân phối kép, lệnh memcpy(ibi_node, ibi_work, sizeof(*ibi_node)) tiếp theo sẽ ghi đè lên một nút vẫn đang trong quá trình xử lý; một con trỏ rác biến cùng lệnh memcpy đó thành một thao tác ghi vượt ra ngoài vùng cho phép (out-of-bounds write).

Race condition này được kích hoạt bởi lưu lượng bus I3C — các ngắt IBI, hot-join và yêu cầu thay đổi vai trò bộ điều khiển bắt nguồn từ các thiết bị đích trên bus, và I3C hỗ trợ việc kết nối nóng (hot-joining) của các thiết bị. Một kẻ tấn công kiểm soát một ngoại vi I3C trên bus chip-to-chip của bo mạch có thể tạo ra các ngắt tần suất cao được định thời để va chạm với thao tác giải phóng bộ nhớ. Việc khai thác yêu cầu quyền truy cập vật lý vào bus và thắng được cửa sổ thời gian hẹp; tác động thực tế nhất là một vụ sập hoặc treo hệ thống (từ chối dịch vụ - DoS), trong khi việc làm hỏng bộ nhớ có thể xảy ra nhưng khó kiểm soát.

Bản sửa lỗi bao bọc tất cả các thao tác sys_slist_get()/sys_slist_append() trên danh sách tự do bằng các trợ lý mới ibi_work_alloc()/ibi_work_free(), mỗi cái được bảo vệ bởi một k_spinlock (ibi_work_lock), đóng cửa race condition giữa ngữ cảnh ISR và luồng.

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

01/07/2026

Tiết lộ

31/08/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

thấp

Nguồn

Might our Artificial Intelligence support you?

Check our Alexa App!