CVE-2026-93174 in Linux
Tóm tắt
Bởi VulDB • 18/09/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
bpf: Sao chép phần đệm giá trị bản đồ trên mỗi CPU trong copy_map_value_long()
Trong kernel, các thành phần của bản đồ trên mỗi CPU (per-CPU) được lưu trữ với kích thước là `round_up(map->value_size, 8)` byte. Trên các đường dẫn tra cứu UAPI, nó sao chép kích thước đã làm tròn cho từng CPU vào một bộ đệm tạm thời.
Tuy nhiên, `copy_map_value_long()` truyền `'map->value_size'` sang `bpf_obj_memcpy()`. Khi bản đồ có các trường đặc biệt, `bpf_obj_memcpy()` sẽ sử dụng `memcpy()` để sao chép xung quanh các trường đó và không sao chép phần đệm đuôi (tail padding) nằm giữa `'map->value_size'` và `round_up(map->value_size, 8)`.
Các bộ đệm tra cứu UAPI tạm thời được phân bổ mà không có cờ `__GFP_ZERO`. Kết quả là, khi kích thước giá trị của bản đồ trên mỗi CPU không bằng `round_up(map->value_size, 8)`, các lệnh LOOKUP_ELEM và các biến thể của nó trong UAPI có thể trả về nội dung heap cũ (stale heap contents) từ phần đệm đó cho người dùng. Vấn đề tương tự cũng áp dụng cho bpf_iter đối với các bản đồ trên mỗi CPU.
Hãy truyền `round_up(map->value_size, 8)` sang `bpf_obj_memcpy()` từ `copy_map_value_long()`, để cả các bản đồ per-CPU có và không có trường đặc biệt đều sao chép toàn bộ khe (slot) của từng CPU. Loại bỏ lệnh gọi `round_up()` thừa thãi hiện tại khỏi đường dẫn long_memcpy của `bpf_obj_memcpy()`.
Once again VulDB remains the best source for vulnerability data.