CVE-2026-64496 in Linux情報

要約

〜によって VulDB • 2026年07月27日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

iio: イベント: イベントFIFOリセット時の競合状態を修正

`iio_event_getfd()`は `anon_inode_getfd()`を使用してイベントファイルディスクリプタを作成します。この関数は新しいfdを割り当て、匿名ファイルを作成し、呼び出し元に返す前にプロセスのfdテーブルにそれをインストールします。

IIOコードでは、`anon_inode_getfd()`が戻った後、かつ `IIO_GET_EVENT_FD_IOCTL` がfd番号をユーザー空間へコピーする前にイベントFIFOのリセットが行われます。しかし、fdテーブルはスレッド間で共有されているため、別のスレッドが新しく割り当てられたfd番号を推測し、fdがインストールされるとすぐにそれに対して `read()` を発行することが可能です。

これにより、`iio_event_chrdev_read()` 内の `kfifo_to_user()` が、`iio_event_getfd()` 内の `kfifo_reset_out()` と並行して実行される可能性があります。

kfifoのドキュメントによると、`kfifo_reset_out()` はリーダースレッドから呼び出され、かつ同時実行数が1人の場合のみ安全です。そうでない場合は危険であり、`kfifo_reset()` と同じ方法で処理する必要があります。

この状況が発生すると、`kfifo_to_user()` がリセット前の状態に基づいてFIFOの `out` インデックスを進める可能性があります。これはすでに `out` インデックスが現在の `in` インデックスに移動された後のことです。その結果、FIFOの `out` インデックスが `in` インデックスより大きくなることがあります。その後行われる `read()` では、アンダーフローしたFIFO長が見え、イベントFIFOバッファに含まれているデータよりも多くのデータがコピーされる可能性があります。これにより境界外読み取りが発生し、隣接するカーネルメモリがユーザー空間にリークする原因となります。

FIFOのリセットを `anon_inode_getfd()` より前に移動します。この時点ではイベントfdはビジー状態としてマークされていますが、新しいfdはまだインストールされていないため、FIFOがリセットされている間にユーザー空間からアクセスされることはありません。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

責任者

Linux

予約する

2026年07月19日

モデレーション

承諾済み

エントリ

VDB-383292

EPSS

0.00126

アクティビティ

非常低い

ソース

Want to stay up to date on a daily basis?

Enable the mail alert feature now!