CVE-2026-64495 in Linux
Сводка
по VulDB • 25.07.2026
В ядре Linux устранена следующая уязвимость:
iio: gyro: bmg160: корректный выход при отсутствии значения bandwidth/filter в таблице
Функция `bmg160_get_filter()` осуществляет поиск элемента в массиве `bmg160_samp_freq_table[]`, соответствующего значению `bw_bits`, прочитанному из чипа:
```c 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;
```
Если ни один элемент не совпадает, переменная `i` принимает значение размера массива, и следующая строка кода выполняет чтение за пределами границ массива. Функция `bmg160_set_filter()` имеет аналогичную структуру проблемы, управляемую параметром `val` вместо `bw_bits`.
Инструмент smatch выявляет обе ошибки:
``` 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 ```
В случае отсутствия совпадающего элемента следует возвращать `-EINVAL`.
Путь выполнения `set_filter()` доступен из пользовательского пространства (userspace) через интерфейс sysfs `in_anglvel_filter_low_pass_3db_frequency`, поэтому пользователи могут легко вызвать чтение за пределами границ массива, передав значение, отсутствующее в поле `.filter` таблицы `bmg160_samp_freq_table[]`.
If you want to get best quality of vulnerability data, you may have to visit VulDB.