Parallels Desktopの脆弱性、非特権Macユーザーがroot権限を取得可能に

Parallels Desktopに存在する深刻なローカル権限昇格の脆弱性により、非特権のmacOSユーザーや悪意あるプロセスがホストシステムのroot権限を取得できる可能性があることがわかりました。

この問題はCVE-2026-90894として追跡されており、JFrogの脆弱性調査チームに所属するYuval Moravchick氏によって公表されました。この脆弱性は「ParaShells」と名付けられています。

Hacking& Cracking

この脆弱性は、Apple silicon搭載システム上のParallels Desktopバージョン26.4.0、ビルド57513を対象に実証されました。研究者によると、この攻撃には管理者権限も、実行中の仮想マシンも、Parallels署名済みのクライアントアプリケーションも必要ないとのことです。

その代わりに、低権限のローカルユーザーがParallelsの特権を持つホストサービスとやり取りすることで、攻撃者が制御するコードをroot権限で実行できてしまいます。

Parallels Desktopの脆弱性

この脆弱性の中心にあるのは`prl_disp_service`です。これはParallels Desktop内でroot権限で動作するデーモンで、アプライアンスのインストール、仮想マシンの登録、ネットワーク操作といった処理を担当しています。

このサービスは`/var/run/prl_disp_service.socket`にあるUnixドメインソケットを介して通信を行います。影響を受けるインストール環境では、このソケットが誰でも書き込み可能な状態になっており、ローカルの任意のプロセスが接続できてしまう状態でした。

JFrogの研究者らが特定したのは、脆弱なローカルクライアント認証と、アプライアンス展開処理の過程で発生する引数インジェクションに関する一連の問題です。

`PrlSrv_LoginLocal`と呼ばれる仕組みは、リクエスト元のプロセスが本当にParallelsに属しているかを検証する代わりにローカルのピア認証情報に依存していたため、署名されていないクライアントからの接続を受け入れてしまっていたと報告されています。つまり、管理者権限を持たないローカルアカウントであっても、アプライアンスのインストールに関連する特権機能を呼び出せてしまう状態でした。

もう一つの問題は、Parallelsがアプライアンスアーカイブを展開する際のコマンド構築方法にあります。脆弱なコードは、ユーザーが制御可能な仮想マシンの親パスを用いてtar展開コマンドを組み立て、その結果得られた文字列をQtの`QProcess::splitCommand`ルーチンに渡します。攻撃者は親パスの値に引用符を埋め込むことで、`tar`コマンドに渡される引数を改変できてしまいます。

これは従来型のシェルコマンドインジェクションではありません。攻撃者が制御するセミコロンやコマンド置換、連結コマンドをシェルに解釈させる必要はないのです。その代わりに、攻撃者は`tar`用の追加オプションを引数リストに注入します。

Image

研究者らは、アーカイブ処理中に`tar`が外部プログラムを起動できる`–use-compress-program`オプションを悪用する手法を実証しました。`prl_disp_service`がroot権限で`tar`を実行するため、その外部プログラムもroot権限で実行されることになります。

この攻撃の起点は、脆弱なバージョンのParallels Desktopが動作するMacへのローカルアクセスです。攻撃者は細工を施したアプライアンスパッケージを用意し、一般ユーザーとしてディスパッチャに対して認証を行い、改変したインストールパスを渡すことができます。

たとえアプライアンスのインストール処理が後で展開エラーを報告したとしても、注入されたプログラムはその時点ですでに昇格した権限で実行済みである可能性があります。

この危険性は、開発者のワークステーション、共有のトレーニング用システム、そしてParallels Desktopがインストールされている企業のMac環境において、特に大きな意味を持ちます。

侵害されたnpmパッケージ、悪意あるインストーラー、汚染されたCIワークフロー、あるいは標準ユーザーアカウントの下で実行されるその他のコードが、この脆弱性を悪用して基盤となるホストの制御を奪う可能性があります。

管理者は、Parallels Desktop 26.4.0ビルド57513またはそれに類するバージョンが稼働しているシステムを洗い出し、`prl_disp_service.socket`のパーミッションを確認したうえで、ベンダーから提供され次第速やかにアップデートを適用する必要があります。

また組織においては、不審なアプライアンスのインストール活動、予期しない`tar`の子プロセス、異常なroot所有のスクリプト、`sudoers`や`launchd`の永続化設定に対する不正な変更がないか監視することも求められます。

SOCを常に最新の状態に保ち、マルウェアやフィッシングの発生から24時間以内に検知しましょう。 ANYRUNを試して早期検知でインシデントを防ぎましょう。 

翻訳元: https://gbhackers.com/parallels-desktop-flaw/

本記事は gbhackers.com の記事を翻訳・要約したものです。