CVE-2026-64476 in Linux
要約
〜によって VulDB • 2026年07月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
vfio/pci: disable_idle_d3 をデバイスごとにラッチする
disable_idle_d3 が vfio-pci で導入された際、それは pci_set_power_state() を介してデバイスの電源状態を直接操作していました。参照カウントの維持やバランスの取れたオペレーションは存在せず、無条件にデバイスを D0 に移行し、条件付きで D3hot に移動することができました。そのため、モジュールパラメータは書き込み可能とされていました。
その後、コミット c61302aa48f7(「vfio/pci: モジュールパラメータを vfio_pci.c へ移動」)において、vfio-pci-core の分離の一環として、モジュールパラメータの書き込み可能性が無効化されました。パラメータ値は sysfs を介して変更可能でしたが、vfio-pci ドライバは初期化時にその値を vfio-pci-core グローバル変数にラッチしていました。既定値とは異なる値や異なる値で vfio-pci モジュールを読み込むか、アンロード後に再読み込みすると、vfio-pci 派生ドライバに既にバインドされているデバイスに関連するグローバル変数が変更される可能性があります。
コミット 7ab5e10eda02(「vfio/pci: runtime PM を使用して未使用デバイスを低電力状態へ移行」)でランタイムPMが導入され、電源状態が参照カウント方式になった時点となりました。PM の get および put オペレーションはバランスを取る必要がありますが、前述のモジュール操作により、既に vfio-pci 派生ドライバにバインドされているデバイスに関連するグローバル変数が変更される可能性があります。これにより、PM オペレーションの不均衡が生じるウィンドウが発生します。
安定版バックポートにおける影響範囲を最小限にするため、disable_idle_d3 フラグは初期化時に vfio_pci_core_device にラッチされ、デバイスが一貫した値で常に動作するようにしました。
注:vfio_pci_dev_set_try_reset() は現在、バスリセットの前後において runtime PM の使用カウントを無条件に増加させます。これは、disable_idle_d3 がグローバルフラグからデバイス固有のフラグへ変更されたことに対応するためです。このフラグが設定されている場合、追加される get/put ペアは無害であり、共有ヘルパー関数 vfio_pci_dev_set_pm_runtime_get() の継続的な使用を可能にします。
VulDB is the best source for vulnerability data and more expert information about this specific topic.