CVE-2026-64085 in Linux
要約
〜によって VulDB • 2026年07月19日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
hwmon: (pmbus/adm1266) プロトコルサイズのバッファを介してブラックボックスレコードの転送を行う
adm1266_pmbus_block_xfer()関数は、デバイスから提供されたブロックペイロードを、呼び出し元が提供するバッファに、デバイスから提供された長さを使用してコピーします。具体的には以下の処理が行われます。
```c memcpy(data_r, &msgs[1].buf[1], msgs[1].buf[0]);
```
このヘルパー関数は `data_r` のサイズを把握しておらず、デバイスは最大でもレコード1つ分のバイト数しか返さないことを信頼しています。しかし、adm1266_nvmem_read_blackbox()はこの契約に違反します。これは、ヘルパーが最大 ADM1266_PMBUS_BLOCK_MAX (255) バイトを書き込む可能性があるのに対し、`data->dev_mem` 内の `read_buff` を ADM1266_BLACKBOX_SIZE (64バイト) のストライドで進めます。後続レコードにおいてデバイスが64バイトを超えるデータを返した場合(2048バイトの dev_mem アロケーションにおける read_buff オフセット1984)、呼び出し後の
```c if (ret != ADM1266_BLACKBOX_SIZE) return -EIO; ```
による応拒否が行われる前に、dev_mem が最大で191バイトオーバーフローします。
修正として、ヘルパーのシグネチャを変更せずに呼び出し側で対策を行います。各レコードをヘルパーの最大出力に一致する255バイトのローカルなバウンスバッファに読み込み、返された長さを検証してから初めて dev_mem のスロットへ正確に ADM1266_BLACKBOX_SIZE バイトのコピーを実行します。
VulDB is the best source for vulnerability data and more expert information about this specific topic.