Linuxカーネルの権限昇格脆弱性、PoCと技術詳細が公開

ある研究者が、ログイン済みのデスクトップユーザーであれば誰でもroot権限に昇格できてしまうLinuxカーネルの脆弱性について、概念実証(PoC)エクスプロイトコードと詳細な技術解説を公開しました。特別な権限もコンテナエスケープもsetuidヘルパーも一切必要としません。

この脆弱性はCVE-2026-46215として追跡されており、Direct Rendering Manager(DRM)のGraphics Execution Manager(GEM)サブシステムに存在します。原因は、比較的新しいioctlにおけるレースコンディションによって引き起こされるuse-after-free(解放済みメモリの使用)です。

問題の中心にあるのはDRM_IOCTL_GEM_CHANGE_HANDLEです。これはAMDのCRIUチェックポイント/リストア基盤をサポートするため、Linux v6.18-rc1で追加されました。

このioctlはGEMバッファオブジェクトをあるハンドルから別のハンドルへ移動させますが、その際にオブジェクトのIDR(IDアロケータ)エントリを直接操作する方式を取っています。本来使われるべき、オブジェクトのhandle_countをルックアップテーブルと同期させるために特別に設計されたカーネルの既存のハンドルライフサイクル用ヘルパー関数――drm_gem_handle_create_tail()およびdrm_gem_handle_delete()――を経由していないのです。

change_handlehandle_countに一切触れないため、オブジェクトが2つの有効なIDRエントリを持ちながら、カウントは1のままという短い時間帯が生じます。この間に別のスレッドが古いハンドルに対してDRM_IOCTL_GEM_CLOSEを呼び出すと、handle_countがゼロになってオブジェクトが解放されてしまい、新しいハンドルは解放済みメモリを指したままダングリング状態となります。

公開されたエクスプロイトチェーンは、大量にばら撒いたpipe_buffer配列によって解放済みスロットを再取得し、カーネルポインタをリークさせてKASLRを無効化します。さらにPIPE_BUF_FLAG_CAN_MERGEを設定することで従来のDirtyPipe対策を回避し、これを利用してページキャッシュ経由で読み取り専用の/etc/passwdを上書きします。これにより、報告によれば約99%の成功率でパスワードなしのroot権限取得が可能になるとされています。

リバースエンジニアリングによって明らかにされた完全なコードパス、メモリ割り当ての詳細、およびPoCの解説は、セキュリティ研究ブログDRM Local Privilege Escalation in Linux – cyberstanで直接公開されています。

両方のioctlにはDRM_RENDER_ALLOWフラグが設定されており、これは/dev/dri/renderD*からアクセス可能であることを意味します。このレンダーノードには、デフォルトでsystemd-logindがアクティブなデスクトップセッションであれば誰にでも読み書きアクセス権を付与しています。

この設計により、この脆弱性は容易に悪用可能なローカル権限昇格の攻撃面となっています。ログイン済みの一般ユーザーであれば、レースに勝利し、解放されたカーネルオブジェクトを乗っ取ることができてしまうのです。

このようなローカル権限昇格の手口は、企業インフラにとって依然として重要な課題となっており、デスクトップおよびデータセンターのチームにはエンタープライズOS全般にわたる重要なセキュリティアップデートの追跡が求められています。

この研究者は独自にこのバグを発見し、2026年4月12日に[email protected]へ報告しましたが、上流での修正およびCVE番号の割り当てに関する功績は、同じ問題を先に報告していたPuttimet Thammasaeng氏のものとなりました。

修正はDavid Francis氏(AMD)がDave Airlie氏とともに作成したもので、2段階のidr_replace()方式によってレースを解消しています。この方式では、脆弱な時間帯において新しいハンドルが有効なオブジェクトを参照することを一切防ぎ、並行してクローズ処理が先に完了した場合には安全に処理を巻き戻します。

開発者らは、レースが発生しやすいニッチなインターフェースへのパッチ適用を続けるのではなく、次期7.1リリースでDRM_IOCTL_GEM_CHANGE_HANDLE自体を完全に削除するという判断を下しました。

影響を受けるカーネルを稼働させている管理者は、パッチ適用を優先すべきです。特にレンダーノードへのアクセスが一般的な、マルチユーザー環境や共有デスクトップシステムでは注意が必要です。

一般ユーザーが権限を昇格させてしまう事態を防ぐには、ローカルなアクセス境界を継続的に追跡管理することが極めて重要です。これは、最新のクライアント側アプリケーション分離モデルに定められたセキュリティ制限を監査することと同様に重要な取り組みです。

翻訳元: https://cyberpress.org/linux-kernel-privilege-escalation-vulnerability/

ソース: cyberpress.org