
CVE-2026-7867(udisks2)向けの武器化されたローカル権限昇格エクスプロイト。as-userマウントスプーフィングを使用してPolicyKitをバイパスし、rootシェルを取得します。
as-user Spoofing → Authorization Bypass → Root-context Mount → LPECVE-2026-7867 は、udisks2 におけるローカル権限昇格の脆弱性であり、Filesystem.Mount D-Bus メソッド、as-user オプション、fstab 管理のマウントフロー、および不適切な認可処理に関連します。
このプライベートリポジトリには、管理された実験環境で問題を検証するために使用された技術的な調査ノートと PoC スクリプトが含まれています。
この脆弱性は以下によって発見・報告されました。
| Azizcan Daştan | azqzazq1 |
| Özlem Ozan | oz7oz7 |
割り当てられた CVE は以下の通りです。
CVE-2026-7867
この脆弱性は、実際の D-Bus 呼び出し元 UID と、as-user マウントオプションによって生成される計算/実効 UID との間の不適切な信頼関係に起因します。
脆弱なフローでは、権限のないローカルユーザーがマウント実行パスに影響を与え、期待される PolicyKit 認可動作なしで、ファイルシステムマウントが特権(ルート)コンテキストで実行される可能性があります。
根本的なバグは、単に「ユーザー制御のマウントオプション」ではありません。
本当の問題は次のとおりです。
udisks2は、fstab マウント認可および実行中に、元の呼び出し元 ID と計算されたas-userID を一貫して区別できない。
| フィールド | 値 |
|---|---|
| CVE | CVE-2026-7867 |
| 製品 | udisks2 |
| コンポーネント | Filesystem.Mount |
| 攻撃タイプ | ローカル権限昇格 |
| プリミティブ | as-user スプーフィング |
| セキュリティ境界 | D-Bus 呼び出し元 ID → 特権マウント実行 |
| 認可レイヤー | PolicyKit / fstab マウント認可 |
| ベンダー | Red Hat / udisks アップストリーム |
| ステータス | パッチ進行中 / 協調開示 |
| 予定修正リリース | udisks 2.11.2 |
脆弱なロジックは、udisks2 内の fstab マウント処理パスに関連しており、特にマウント要求に以下の要素が含まれる場合に関係します。
Filesystem.Mount
as-user
x-udisks-auth
user
users
関連するセキュリティ上重要な領域は以下のとおりです。
D-Bus 呼び出し元 ID
↓
as-user オプション処理
↓
fstab 認可ロジック
↓
PolicyKit 決定フロー
↓
ルートコンテキストマウント実行
┌─────────────────────────────┐
│ 権限のないローカルユーザー │
└──────────────┬──────────────┘
│
│ Filesystem.Mount
│ as-user の影響を受ける
▼
┌─────────────────────────────┐
│ udisks2 / udisksd │
│ 特権システムデーモン │
└──────────────┬──────────────┘
│
│ fstab ロジックが
│ user/auth オプションを評価
▼
┌─────────────────────────────┐
│ 認可ギャップ │
│ mount_other_user が │
│ スキップされたパスで強制 │
│ されない │
└──────────────┬──────────────┘
│
│ ルートコンテキストブランチに到達
▼
┌─────────────────────────────┐
│ ファイルシステムがマウント │
│ 期待された認可フローなしで │
└──────────────┬──────────────┘
│
│ 影響はマウントフラグに依存
▼
┌─────────────────────────────┐
│ ローカル権限昇格 │
│ 管理されたラボで検証済み │
└─────────────────────────────┘
脆弱な動作は、ID 混乱バグに起因します。
システムには複数の ID 概念があります。
実際の D-Bus 呼び出し元 UID
計算された as-user UID
実効マウント UID
udisksd デーモン特権コンテキスト
脆弱なフローでは、これらの ID を一貫して強制できません。
具体的には:
mount_other_user が as-user の使用により true になる可能性があるx-udisks-auth、user、users などの fstab オプションが認可パスに影響を与えるmount_other_user チェックがそのブロック外で確実に強制されないその結果、ローカル権限境界バイパスが発生します。
x-udisks-auth の問題x-udisks-auth オプションは、管理 PolicyKit 認可フローを強制することを目的としています。
期待される動作:
マウント要求
↓
呼び出し元としてマウント試行
↓
権限/認証失敗
↓
PolicyKit filesystem-fstab チェック
↓
管理者承認
↓
認可された特権アクションとしてマウント
脆弱な動作:
as-user の影響を受けるマウント要求
↓
計算された ID が実行に影響
↓
マウントが早すぎる成功
↓
PolicyKit 認可パスが期待通りに到達しない
↓
特権マウント状態が達成される
これにより、脆弱なパスにおける x-udisks-auth を中心としたセキュリティモデルが信頼できなくなります。
期待されるモデル:
権限のないユーザー
↓
D-Bus マウント要求
↓
PolicyKit / fstab 認可
↓
制限されたマウント動作
破られたモデル:
権限のないユーザー
↓
as-user スプーフィング付き D-Bus マウント要求
↓
認可ロジックの不一致
↓
ルートコンテキストマウント実行
このバグは、影響を受けるサービスが昇格された権限で実行されるため、特に深刻です。
悪用に成功すると、権限のないローカルユーザーが、期待される認可プロンプトなしで、udisks2 経由でファイルシステムをルートコンテキスト実行パスにマウントできる可能性があります。
ファイルシステムとマウントフラグに応じて、影響には以下が含まれる場合があります。
これはローカル脆弱性です。
関連する条件は以下のとおりです。
| 条件 | 必須 |
|---|---|
| ローカルユーザーアクセス | はい |
脆弱な udisks2 バージョン | はい |
as-user 機能が存在する | はい |
| 適切な fstab 管理マウントターゲット | はい |
| 脆弱な認可パス | はい |
| リモートアクセス | いいえ |
.
├── README.md
├── disk2root.sh ← メインエクスプロイト(自己完結型 LPE)
└── poc/
├── setup_lpe_env.sh ← ラボ環境のセットアップ
├── f2_mount_as_user_bypass.sh
├── f2_check_nosuid.sh
├── f2_suid_test.sh
├── f2_final.sh
└── cleanup_lpe_env.sh
disk2root.sh自己完結型の武器化されたエクスプロイト。独自の SUID ルートペイロードをビルドし、準備されたディスクイメージを作成し、as-user=root polkit バイパスを介してマウントし、ルートシェルにドロップします。
オプション 1 — root として実行(SSH を含むあらゆる環境で動作):
./disk2root.sh
スクリプトは自動的に次の処理を行います。
debugfs 経由で uid=0 mode=4755 のバイナリを注入x-udisks-auth 付きの fstab エントリを追加su 経由で権限のないユーザーにドロップas-user=root を使用して Filesystem.Mount を呼び出し(polkit バイパス)昇格元のユーザーを指定する場合:
./disk2root.sh testuser
ユーザーが指定されていない場合、スクリプトはシステム上の最初の通常ユーザーを選択するか、一時的なユーザーを作成します。
オプション 2 — 権限のないユーザーとして実行(デスクトップ / アクティブセッション):
./disk2root.sh
アクティブな polkit セッション(デスクトップログイン、GNOME/KDE)があるシステムでは、スクリプトは完全に自己完結型です。udisksctl または D-Bus LoopSetup を介して独自のループデバイスを作成し、as-user=root を介してマウントし、事前設定なしで昇格します。
オプション 3 — 権限のないユーザーとして実行(SSH、セットアップ後):
環境がすでに準備されている場合(例:root として poc/setup_lpe_env.sh を実行した、または以前に root として ./disk2root.sh を実行した)、権限のないユーザーでも再エクスプロイトできます。
./disk2root.sh
スクリプトは脆弱な fstab エントリを自動的に検出して使用します。
./disk2root.sh --cleanup
すべてのアーティファクト(fstab エントリ、ループデバイス、マウントポイント、一時ユーザー)を削除します。
権限のない状態で実行すると、スクリプトは複数のパスを順番に試行します。
[A] 自己完結型
ペイロードをビルド → ext4 イメージを作成 → debugfs で SUID バイナリを注入
→ ループセットアップ(python3 GIO / udisksctl) → as-user=root でマウント
✓ デスクトップセッションで動作
[B] Fstab フォールバック
/etc/fstab で x-udisks-auth / user / users エントリをスキャン
→ as-user=root でマウント → マウントされた fs 上の SUID バイナリを検索
✓ 環境が準備されている場合、SSH で動作
╔═════════════════════════════════════════════════════╗
║ CVE-2026-7867 — disk2root ║
║ udisks2 as-user polkit bypass → LPE root shell ║
╚═════════════════════════════════════════════════════════╝