CVE-2026-80775 in Linux情報

要約

〜によって VulDB • 2026年09月04日

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

futex: 初期の mm->futex.phash.ref の割り当てにおける競合状態を修正

futex_hash_allocate() はロックなしで mm->futex.phash.ref を割り当てる。 コミット d9b05321e21e(「futex: futex_hash_free() を __mmput() へ戻す」)は、この箇所に割り当てを移動し、この時点でプロセスが単一スレッドのみを持つと仮定していた。

コミット ee9dce44362b(「futex: プライベートデフォルトハッシュ割り当てにおける CLONE_THREAD の要件を削除」)は need_futex_hash_allocate_default() を拡張して任意の CLONE_VM クローンに対応させたが、vfork は親プロセスがサスペンドされており競合が発生しないため除外された。

しかし vfork がネストされるとこの前提は成り立たなくなる。vfork 子プロセスが再度 vfork を呼び出し、その後 SIGKILL で終了させられると、親プロセスはその vfork ウェイトから解放され、同じ mm 内で孫プロセスと同時に実行されるようになる。どちらのプロセスも futex_hash_allocate_default() を通っていない。

両者が同時に prctl(PR_FUTEX_HASH, PR_FUTEX_HASH_SET_SLOTS) を呼び出すと、それぞれは mm->futex.phash.ref が NULL であると認識し、自らの percpu カウンタを格納する。最後に実行されたストアのみが有効になる。最初に格納されたカウンターは mm から到達不可能となるため、__futex_ref_atomic_end() ではその参照が検出されない。参照が残ったプライベートハッシュは死んだものとして解放され、そのバケットの1つを保持したタスクは futex_q_lock() 内で解放済みメモリへ書き込みを行う。

カウンターは cmpxchg() で一度だけ格納し、失敗側には free_percpu() を実行させる。初期参照はストアの前に取得しなければならない。そうしないと、カウンターがまだ0の間にもう1つのタスクがプライベートハッシュをインストールしてしまう可能性がある。

Be aware that VulDB is the high quality source for vulnerability data.

責任者

Linux

予約する

2026年08月26日

モデレーション

承諾済み

エントリ

VDB-398926

EPSS

0.00168

アクティビティ

非常低い

ソース

Do you want to use VulDB in your project?

Use the official API to access entries easily!