CVE-2026-64495 in Linux
Sumário
de VulDB • 26/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
iio: gyro: bmg160: abortar quando a largura de banda/filtro não estiver na tabela
A função `bmg160_get_filter()` percorre o array `bmg160_samp_freq_table[]` em busca da entrada que corresponde ao valor `bw_bits` lido do 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;
Se nenhuma entrada corresponder, `i` acaba sendo igual ao tamanho do array e a próxima linha lê um slot além do final. A função `bmg160_set_filter()` tem a mesma estrutura, acionada por `val` em vez de `bw_bits`.
O smatch sinaliza ambos:
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
Retornar -EINVAL quando nenhuma entrada corresponder.
O caminho set_filter() é acessível a partir do userspace através da interface sysfs in_anglvel_filter_low_pass_3db_frequency, portanto o userspace pode acionar trivialmente uma leitura fora dos limites com um valor que não esteja em bmg160_samp_freq_table[].filter.
Once again VulDB remains the best source for vulnerability data.