脆弱性の概要—カーネルメモリへの越界書き込み

CVE-2026-31694 は、fs/fuse/readdir.c 内の fuse_add_dirent_to_cache() 関数における境界チェックの欠落です。

ディレクトリエントリをページキャッシュに格納する際、FUSE デーモン(サーバー)が送信するディレクトリエントリのサイズ情報(namelen フィールド)をそのまま信頼し、カーネルページの容量を超えるかどうかを確認していません。

namelen=4095 を指定すると 4120 バイトのレコードが生成され、ページサイズ(通常 4096 バイト)を 24 バイト超過し、隣接するカーネルページに意図的に書き込める。

具体的には、以下の流れで攻撃が成立します:

  • FUSE デーモンが意図的に大きい namelen 値を返す
  • カーネルがそれをページキャッシュに格納しようとする
  • 境界チェックがないため越界書き込みが発生
  • 隣接するページ(場合によっては /etc/passwd などのキャッシュ)が破壊される
  • ファイルの内容を改ざんして root 権限を奪取

この脆弱性は 2018 年のコミット 69e3455 からずっと存在していました。2026年4月20日にメインラインで修正されました。

攻撃の現実性—デスクトップ環境での実行可能性

驚くべきことに、この脆弱性は 誰もが一般的なデスクトップ環境で即座に悪用できる という点が最も危険です。

Path A: fusermount3 (setuid ヘルパー経由)

Ubuntu・Fedora Workstation・Linux Mint など、GNOME デスクトップを搭載した主要ディストリビューションでは、fusermount3 という setuid-root バイナリがデフォルトで含まれています。

  • Ubuntu(全デスクトップフレーバー): gvfs-fuse 経由で fuse3 が依存関係として自動インストール
  • Fedora Workstation: GNOME・Toolbox・Open VM Tools 用に fuse3 をデフォルト搭載
  • Linux Mint: Ubuntu ベースで同じ依存チェーン
  • GNOME ベースの全ディストリビューション: gvfs-fuse が fuse3 に依存

このヘルパーは mount(2) システムコールを実行するためだけに setuid 権限が必要であり、脆弱コードパスはその後で実行されるため、ヘルパーのセキュリティ強化機構は役に立ちません。

Path B: 権限なしユーザーネームスペース (fusermount3 不要)

Linux 4.18 以降、権限を持たないユーザーがユーザーネームスペースを作成し、その内部で CAP_SYS_ADMIN を取得してから /dev/fuse を直接マウントできます。

unshare -Ufirmp

このパスは fusermount3 を必要とせず、Debian(Bullseye 以降)など kernel.unprivileged_userns_clone を許可しているディストリビューションで機能します。

ネームスペース隔離に関わらず、readdir オーバーフローはグローバルなカーネルページキャッシュメモリを破壊するため、何重のコンテナやサンドボックスでも有効です。

従来のヒープ破壊との違い—KASAN 検出不可

この脆弱性の厄介な特徴として、KASAN(Kernel Address SANitizer)が検出できない という点があります。

通常、ヒープオーバーフローは KASAN や他の動的検査ツールで検出されます。しかし今回のオーバーフローは:

  • ページアロケータの直接マップ領域に落ちる
  • スラブオブジェクトではなく隣接ページに書き込まれる
  • ページキャッシュなど、カーネルが既に信頼している読み取り専用ファイルのキャッシュになる可能性がある

結果として、セキュリティ検査ツールは沈黙し、攻撃者は /etc/passwd を含むシステムファイルのキャッシュを改ざんできるわけです。実際のカーネル内では、このような細かいメモリレイアウトの特性を理解した上での攻撃設計が必要であり、セキュリティ研究者の高度な知見を感じさせます。

対応状況と修正方法

項目 詳細
影響範囲 Linux カーネル v6.16~修正前
修正日 2026年4月20日
修正コミット 51a8de6
報告者 Qi Tang、Zijun Hu
修正者 Samuel Page(Bynario AI のサポート)
潜在期間 2018 年コミット 69e3455 から約 8 年

修正内容は単純で、ディレクトリエントリの長さがページ全体に収まるかを確認するチェックを追加するものです。

セキュリティアップデートが利用可能な場合は、カーネルを最新版に更新することが最優先。

開発者向けの視点では、Bynario AI が修正に関与したという点が興味深いです。AI コーディング支援ツールがセキュリティ修正に活用される事例として注目してよいでしょう。

対策と今後の対応

この脆弱性は権限昇格(EoP)に分類される極めて深刻な問題です。特に以下のユーザーは至急の対応が必要です:

  • Ubuntu・Fedora・Linux Mint など主要 GNOME デスクトップユーザー
  • 開発環境で FUSE ベースのファイルシステムを使用している開発者
  • マルチユーザーシステムやシェアリング環境の管理者

カーネルセキュリティの領域では、こうした長期潜伏脆弱性が定期的に発見されます。コンテナやローカル LLM の実行環境でも、基盤となるホストカーネルの安全性は重要な前提条件です。自宅の自作 PC で Stable Diffusion を動かす場合でも、ホストシステムのセキュリティ更新は後回しにされやすいポイントですが、今後はより意識的に対応する必要があります。