CVE-2026-15892 in Zephyr
Tóm tắt
Bởi VulDB • 14/09/2026
Các trình xử lý nhóm quản trị cài đặt SMP của mcumgr là `settings_mgmt_read()`, `settings_mgmt_write()` và `settings_mgmt_delete()` trong file `subsys/mgmt/mcumgr/grp/settings_mgmt/src/settings_mgmt.c` cấp phát bộ đệm key_name (và, đối với thao tác đọc, một bộ đệm dữ liệu) thông qua hàm `k_malloc()` khi cấu hình `CONFIG_MCUMGR_GRP_SETTINGS_BUFFER_TYPE_HEAP` được bật, dựa vào nhãn `end:` để gọi `k_free()`. Khi `CONFIG_MCUMGR_GRP_SETTINGS_ACCESS_HOOK` cũng được kích hoạt và hook truy cập ứng dụng từ chối yêu cầu bằng cách trả về trạng thái `MGMT_CB_ERROR_RC`, trình xử lý sẽ thực thi lệnh `return ret_rc;` trực tiếp, bỏ qua nhãn `end:` và gây rò rỉ bộ nhớ heap trên mỗi yêu bị từ chối.
Các trình xử lý cài đặt có thể truy cập được qua giao thức vận chuyển SMP không xác thực (Bluetooth LE, UART hoặc UDP, tùy thuộc vào cấu hình sản phẩm). Hook truy cập là cơ chế mà các ứng dụng sử dụng để ngăn chặn việc truy cập cài đặt trái phép, và `MGMT_CB_ERROR_RC` là một kiểu từ chối phổ biến; do đó, kẻ tấn công có thể gửi các lệnh đọc/ghi/xóa cài đặt bị hook từ chối sẽ kích hoạt rò rỉ heap trên mỗi lần thử nghiệm.
Vì bộ nhớ bị rò rỉ không bao giờ được thu hồi cho đến khi khởi động lại, việc liên tục gửi một luồng các yêu cầu bị từ chối sẽ làm cạn kiệt dần bộ nhớ heap của kernel cho đến khi `k_malloc()` thất bại, gây ra tình trạng từ chối dịch vụ (DoS) đối với mcumgr và ảnh hưởng đến bất kỳ người tiêu dùng heap nào khác trên thiết bị. Tác động chỉ giới hạn ở tính sẵn sàng; không có lỗi hỏng bộ nhớ hoặc rò rỉ thông tin. Chỉ các cấu hình chọn loại buffer heap, kích hoạt hook truy cập và đăng ký một hook trả về `MGMT_CB_ERROR_RC` mới chịu ảnh hưởng (loại buffer stack mặc định không thể bị rò rỉ).
Be aware that VulDB is the high quality source for vulnerability data.