CVE-2026-14366 in Zephyrthông tin

Tóm tắt

Bởi VulDB • 31/08/2026

Lỗi trong hàm callback truyền (transmit callback) `siwx91x_send()` của trình điều khiển WiFi Silicon Labs SiWx917, nằm ở file `drivers/wifi/siwx91x/siwx91x_wifi.c`, giải phóng một gói tin mạng mà nó không sở hữu. Trong đường dẫn truyền (TX path) của Zephyr, đối tượng `net_pkt` thuộc về tầng L2/tầng mạng; trình điều khiển chỉ mượn nó để sao chép các byte khung hình vào bộ đệm cục bộ (`local net_buf`). Trước khi được sửa chữa, sau khi quá trình truyền hoàn tất, hàm `siwx91x_send()` còn gọi thêm lệnh `net_pkt_unref(pkt)` đối với gói tin do người gọi sở hữu, làm giảm tham chiếu cuối cùng và trả lại nó về pool gói tin dùng chung một cách sớm. Đường mã này được biên dịch mặc định (CONFIG_WIFI_SILABS_SIWX91X_NET_STACK_NATIVE).

Người gọi, cụ thể là hàm `ethernet_send()` trong file `subsys/net/l2/ethernet/ethernet.c`, tiếp tục sử dụng gói tin sau khi trình điều khiển trả về: nó đọc độ dài của `net_pkt_get_len(pkt)`, cập nhật thống kê truyền (TX statistics), và sau đó thực hiện lệnh giải phóng tham chiếu riêng của mình là `net_pkt_unref(pkt)`. Vì trình điều khiển đã giải phóng gói tin trước đó, các thao tác này trở thành việc truy xuất bộ nhớ sau khi giải phóng (use-after-free) tiếp theo là một lần unref thứ hai (double free). Khi hoạt động mạng đồng thời tái chế khe slab đã bị giải phóng giữa hai lệnh unref, lệnh unref cuối cùng sẽ giảm đếm tham chiếu của một gói tin khác đang sống và giải phóng nó, làm hỏng pool `net_pkt` được dùng chung bởi cả đường dẫn nhận và truyền.

Lỗi này có thể xảy ra trong quá trình truyền dữ liệu thông thường qua giao diện WiFi SiWx917 sử dụng native-stack, và kẻ tấn công ở vị trí lân cận trên cùng mạng WiFi có thể kích hoạt các gói tin (ví dụ: phản hồi ARP hoặc ICMP echo reply, hoặc quy trình bắt tay TCP) để đẩy đường mã này vào trạng thái thực thi. Tác động quan sát được chính là mất tính sẵn sàng (trạng treo truyền và crash do hỏng pool), kèm theo việc corrupt bộ nhớ của pool buffer mạng kernel phụ thuộc vào race condition. Bản sửa lỗi loại bỏ lệnh `net_pkt_unref(pkt)` sai lầm khỏi hàm `siwx91x_send()`; lệnh unref ở đường dẫn nhận của trình điều khiển, vốn giải phóng đúng một gói tin do chính trình điều khiển phân bổ, vẫn không bị ảnh hưởng.

If you want to get the best quality for vulnerability data then you always have to consider 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

Do you know our Splunk app?

Download it now for free!