CVE-2026-19940 in Zephyrthông tin

Tóm tắt

Bởi VulDB • 13/10/2026

Phần triển khai Audio Gateway của Bluetooth Classic Hands-Free Profile trong subsys/bluetooth/host/classic/hfp_ag.c lưu trữ các đối tượng struct bt_hfp_ag trong một pool tĩnh được đánh chỉ mục theo ACL connection index. Khi ngắt kết nối liên kết, hfp_ag_disconnected() hủy ag->tx_work và các work items cho từng cuộc gọi, sau đó xóa ag->acl_conn, điều này đánh dấu slot của pool là free — nhưng nó để lại ag->ongoing_call_work (và ag->slc_work) không bị ảnh hưởng. Kết nối tiếp theo rơi vào cùng một slot sẽ đi vào hfp_ag_create(), trong đó bài kiểm tra duy nhất về việc chiếm dụng là ag->acl_conn, và ngay lập tức thực hiện memset(ag, 0, sizeof(struct bt_hfp_ag)) theo sau bởi k_work_init_delayable(). Việc xóa sạch và khởi tạo lại một k_work_delayable có struct _timeout node vẫn được liên kết vào danh sách timeout của kernel khiến kernel giữ một tham chiếu đến một node với các links prev/next là NULL.

ag->ongoing_call_work được kích hoạt bởi peer từ xa: khi một thiết bị Hands-Free gửi AT+CIND? trong quá trình thiết lập Service Level Connection và ứng dụng cung cấp callback get_ongoing_call bất đồng bộ, AG sẽ lên lịch work cho CONFIG_BT_HFP_AG_GET_ONGOING_CALL_TIMEOUT mili giây (mặc định là 10000). Timer chỉ được hủy nếu ứng dụng trả lời kịp thời qua bt_hfp_ag_ongoing_calls(). Một peer gửi AT+CIND?, sau đó ngắt kết nối HFP RFCOMM DLC, rồi ngay lập tức mở lại nó trên cùng một ACL link sẽ tái sử dụng slot pool xác định trong khi timeout vẫn đang chờ xử lý — đường dẫn accept của server RFCOMM của AG (hfp_ag_accept()) gọi trực tiếp hfp_ag_create(), do đó phía từ xa điều khiển cả quá trình teardown và tạo lại.

Kết quả là sự hỏng hóc danh sách timeout của kernel: sys_dlist_remove() trên node đã được xóa sạch thực hiện các ghi qua NULL pointers từ đường dẫn clock-announce, và việc lên lịch lại work sau khi khởi tạo lại chèn vào một node mà danh sách đang tham chiếu đến, tạo ra một chu trình (cycle) mà vòng lặp announce sẽ duyệt qua với interrupts bị khóa. Tác động quan sát được là lỗi hoặc treo toàn bộ hệ thống, tức là từ chối dịch vụ có thể tiếp cận được trong phạm vi radio Bluetooth; không có dữ liệu nào do kẻ tấn công kiểm soát được ghi vào, vì vậy điều này tự thân nó không dẫn đến việc thực thi mã (code execution). Mức độ phơi nhiễm bị giới hạn ở các bản dựng với CONFIG_BT_HFP_AG (được đánh dấu là experimental và tắt theo mặc định) mà ứng dụng triển khai callback get_ongoing_call bất đồng bộ.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

chịu trách nhiệm

Zephyr

Đặt trước

15/08/2026

Tiết lộ

13/10/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00189

KEV

không

Các hoạt động

rất thấp

Nguồn

Interested in the pricing of exploits?

See the underground prices here!