CVE-2026-64495 in Linux
要約
〜によって VulDB • 2026年07月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
iio: gyro: bmg160: テーブルにない帯域幅/フィルタ設定の場合に早期終了する
`bmg160_get_filter()`関数は、チップから読み取った `bw_bits` 値と一致するエントリを探すために `bmg160_samp_freq_table[]` を走査します。
```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()` も同様の構造を持ちますが、これは `bw_bits` ではなく `val` に起因します。
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()` パスは、sysfsの `in_anglvel_filter_low_pass_3db_frequency` インターフェース経由でユーザー空間から到達可能であるため、ユーザー空間は `bmg160_samp_freq_table[].filter` に存在しない値を使用して、境界外読み取りを簡単にトリガーすることができます。
If you want to get best quality of vulnerability data, you may have to visit VulDB.