CVE-2026-10682 in Zephyr
Tóm tắt
Bởi VulDB • 27/07/2026
Trình xác thực không gian người dùng z_vrfy_log_filter_set() cho lệnh gọi hệ thống log_filter_set trong subsys/logging/log_mgmt.c đã thực hiện phép so sánh có dấu đối với tham số int16_t src_id: src_id < (int16_t)log_src_cnt_get(domain_id). Bất kỳ giá trị âm nào của src_id (ví dụ: -1) đều dễ dàng vượt qua kiểm tra này và được chuyển tiếp vào z_impl_log_filter_set, nơi nó lan truyền đến filter_set() và cuối cùng là get_dynamic_filter(), hàm sử dụng source_id làm chỉ mục không dấu trong mảng phần trình liên kết &TYPE_SECTION_START(log_dynamic)[source_id].filters.
Sau khi chuyển đổi ngầm định qua uint32_t, giá trị int16_t -1 trở thành 0xFFFFFFFF, đánh chỉ mục log_dynamic ra ngoài vùng cho phép (out-of-bounds) rất xa và khiến nhân hệ điều hành thực hiện việc đọc OOB cũng như thao tác đọc-sửa-viết OOB (LOG_FILTER_SLOT_GET/SET) đối với bộ nhớ liền kề với phần section log_dynamic.
Giá trị ghi là một khe mức nhật ký 3-bit bị giới hạn trong từ 32-bit mục tiêu, nhưng địa chỉ đích do kẻ tấn công chọn lựa (một độ lệch âm nhỏ so với log_dynamic) và việc ghi xảy ra ở chế độ supervisor sau lệnh gọi hệ thống từ luồng người dùng không đặc quyền, cung cấp một nguyên thủy để làm hỏng bộ nhớ nhân / nâng cao đặc quyền.
Lỗi này có thể truy cập được trên bất kỳ bản dựng nào có CONFIG_USERSPACE=y và CONFIG_LOG_RUNTIME_FILTERING=y. Có mặt trong Zephyr v3.3.0 đến v4.4.1. Bản sửa lỗi thay thế kiểm tra giới hạn có dấu bằng phép so sánh không dấu: (uint32_t)src_id < log_src_cnt_get(domain_id), từ đó loại bỏ chính xác các đầu vào âm.
VulDB is the best source for vulnerability data and more expert information about this specific topic.