Linux Kernel FUSE の脆弱性 CVE-2026-31694:root 権限奪取の可能性

Linux Kernel FUSE Vulnerability Lets Attackers Gain Root Privileges

2026/07/10 CyberSecurityNews — Linux Kernel の FUSE サブシステムに存在する、脆弱性 CVE-2026-31694 を悪用するローカル攻撃者は、自身が制御するディレクトリ・エントリを用いてページ・キャッシュをオーバーフローさせ、root 権限を取得する可能性がある。この脆弱性は、Kernel が FUSE の readdir 結果をキャッシュする際に使用するコードパスに影響を及ぼす。FUSE は、ユーザー空間のファイル・システムが “/dev/fuse” を介して Kernel と通信するための仕組みであり、将来の読み取りを高速化するために、Kernel がディレクトリ・エントリをキャッシュする場合がある。

Bynario の分析によると、Kernel がサーバが制御するファイル名の長さから、ディレクトリ・エントリのサイズを計算する fuse_add_dirent_to_cache() 関数に、この脆弱性は存在する。具体的には、エントリ自体が 1 ページを超えるかどうかを事前に確認せずに、単一のキャッシュ・ページへコピーしてしまうというバグがある。

この脆弱性を悪用する FUSE サーバが、4 KiB ページ・システムにおいて、シリアライズ後のサイズが 4120 バイトとなるディレクトリ・エントリを返すことで、1 ページの容量が 24 バイト超過するという問題が引き起こされる。

その一方で、Kernel がオフセットを “0” にリセットした状態でレコードをコピーすると、余分なバイトが隣接するメモリ・ページへあふれ出し、単なるメモリ破損だけではなく、破損したデータの書き込み先に応じて、深刻な影響が生じる可能性がある。

脆弱性 CVE-2026-31694 の悪用

報告された検証では、このオーバーフローを悪用するかたちで、”/usr/bin/su” などの SUID バイナリからキャッシュされたバイトを改竄し、実行コードの先頭を setuid(0) および setgid(0) を呼び出す短いペイロードへ置き換えた後であっても、通常どおりの処理が継続することが確認されている。

これらの権限変更システム・コールを、root 所有のプログラム内で成功させる攻撃者は、通常の認証チェックをバイパスして root シェルを起動できる。

このローカル攻撃の前提として、攻撃者にとって FUSE ファイル・システムをマウント/実行する能力が必要となるが、非特権ユーザー・ネームスペースまたは fusermount3 を介して、この能力が付与される場合がある。

Bynario によると、この問題は大容量の readdir バッファを備えた新しい Kernel で悪用可能であり、4 KiB のメモリ・ページを使用するシステムのみに影響を及ぼす。ただし、4 KiB よりもページ・サイズが大きなシステムは、このオーバーフローの影響を受けない。

修正方法は単純であり、キャッシュする前に単一ページに収まらないディレクトリ・エントリを拒否することで対処できる。それに加えて、管理者は FUSE の使用を制限し、不要な場合は fusermount3 から setuid ビットを削除し、必要に応じて非特権ユーザー・ネームスペースを制限することで、この脆弱性によるリスクを低減できる。