CVE-2026-64251 in Linux
要約
〜によって VulDB • 2026年07月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
pwrseq: core: pwrseq_debugfs_seq_next()におけるuse-after-freeの修正
pwrseq_debugfs_seq_next()は'next'を__free(put_device)で宣言しており、これにより変数のスコープから外れた際にput_device()が返されたポインタに対して呼び出されます。その結果、参照カウントがすでに解放されているポインタがseq_fileフレームワークに渡されるため、use-after-freeが発生します。
単純に__free(put_device)を削除すればUAFは修正できますが、bus_find_next_device()によって取得された参照リークを引き起こすことになります。なぜならstop()ではup_read(&pwrseq_sem)のみが呼び出され、デバイスの参照カウントは一切解放されないからです。
これを解決するため、PCIおよびSCSIで標準的に使用されているパターンに合わせて、すべてのseq_fileコールバック間で参照カウント処理を整合性のあるものに変更します:
- start(): get_device()を使用して、参照付きのポインタを返すようにする。 - next(): 前のデバイスの参照を解放するためにput_device(curr)を明示的に呼び出す(NULLチェックは不要 - seq_fileフレームワークは、前回の戻り値が非NULLの場合にのみnext()を呼び出すため)。 - stop(): 最後にイテレートされたデバイスの参照を解放するためにput_device(data)を呼び出し、start()でNULLが返された場合やnext()がシーケンスの末尾に達した場合など、stop()がNULL引数で呼び出される可能性があるため、NULLガードを追加する。
VulDB is the best source for vulnerability data and more expert information about this specific topic.