公開日:2022/05/09 最終更新日:2022/05/09

JVNVU#92669710
Qt製Windowsアプリケーションにおける権限昇格の脆弱性

概要

The Qt Companyが提供するQtを使って作成されたWindowsアプリケーションには、qt_prfxpath値のハードコーディングに起因する権限昇格の脆弱性が存在します。

影響を受けるシステム

以下のQt開発環境およびデプロイツールwindeployqtを使用して作成されたアプリケーション

  • Qt 5.14より前のバージョン
  • windeployqt、commit:c2952ff8df1e18fe0120d8b29901b0b794afccc7以降を取り込んでいないバージョン

詳細情報

The Qt Companyが提供するQtはマルチプラットフォーム向けアプリケーションフレームワークです。 Qtで作成されたWindowsアプリケーションでは、 Qt開発ツールのインストールパスがqt_prfxpathにハードコードされており、当該アプリケーションはこれらのパスから必要なモジュールをロードしようとします。

qt_prfxpathが指しているディレクトリは、例えばQtのWindowsインストーラーの初期設定ではC:\Qt\のサブディレクトリとなっており、Windowsシステムの一般ユーザがこのディレクトリを作成して悪意あるファイルを置き、Qtアプリケーションに読み込ませることが可能となっている場合があります。

想定される影響

Qtで作成されたWindowsアプリケーションが特権を使用して実行される場合、Windowsシステムの一般ユーザがqt_prfxpathが指しているディレクトリに悪意をもったファイルを用意しておくことで、当該Qtアプリの権限で任意のコードを実行させる可能性があります.

対策方法

Qtを利用したWindowsアプリケーションの開発者は、以下のどちらかを実施してください。

Qtをアップデートしてアプリケーションを作成し直す
The Qt Companyが提供する情報をもとに、Qt開発環境を最新版へアップデートし、アプリケーションを作成し直してください。
Qtプロジェクトによると、Qt 5.14 以降では本脆弱性の対策が行われているとのことです。

最新のwindeployqtツールを使ってアプリケーションを作成し直す
Qt開発環境を最新版に更新できない場合でも、アプリケーションのパッケージ化を行うツールwindeployqt
commit:c2952ff8df1e18fe0120d8b29901b0b794afccc7以降を含む最新版を使用することで、Qt5Core.dllに含まれるqt_prfxpathの値を削除できるとのことです。

参考情報

  1. CERT/CC Vulnerability Note VU#411271
    Qt allows for privilege escalation due to hard-coding of qt_prfxpath value

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

関連文書

JPCERT 緊急報告
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE
JVN iPedia