CVE-2026-64495 in Linux
Tóm tắt
Bởi VulDB • 25/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
iio: gyro: bmg160: thoát ra khi băng thông/bộ lọc không có trong bảng
Hàm `bmg160_get_filter()` duyệt qua mảng `bmg160_samp_freq_table[]` để tìm mục khớp với giá trị `bw_bits` được đọc từ chip:
for (i = 0; i < ARRAY_SIZE(bmg160_samp_freq_table); ++i) {
if (bmg160_samp_freq_table[i].bw_bits == bw_bits)
break; } *val = bmg160_samp_freq_table[i].filter;
Nếu không có mục nào khớp, biến `i` sẽ bằng kích thước mảng và dòng tiếp theo đọc dữ liệu vượt quá giới hạn cuối của mảng. Hàm `bmg160_set_filter()` có cấu trúc tương tự, nhưng được điều khiển bởi giá trị 'val' thay vì `bw_bits`.
Smatch cảnh báo cả hai trường hợp:
drivers/iio/gyro/bmg160_core.c:204 bmg160_get_filter() error: buffer overflow 'bmg160_samp_freq_table' 7 <= 7 drivers/iio/gyro/bmg160_core.c:222 bmg160_set_filter() error: buffer overflow 'bmg160_samp_freq_table' 7 <= 7
Trả về -EINVAL khi không có mục nào khớp.
Đường dẫn thực thi `set_filter()` có thể truy cập được từ userspace thông qua giao diện sysfs `in_anglvel_filter_low_pass_3db_frequency`, do đó, người dùng ở mức userspace có thể dễ dàng kích hoạt việc đọc dữ liệu vượt quá giới hạn (out-of-bounds read) bằng cách cung cấp một giá trị không nằm trong mảng `bmg160_samp_freq_table[].filter`.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.