
CVE-2023-44452、CVE-2023-51698:影响主流Linux发行版的CBT文件解析参数注入漏洞
MATE、Cinnamon、および一部のXfceデスクトップ環境を採用する人気のLinuxオペレーティングシステムに影響を与える、クリティカルなワンクリックRCE/コマンドインジェクションの脆弱性です。
影響を受けるオペレーティングシステム:
Linux Mint Kali Linux(セキュリティ専門家、研究者の間で人気のOS) Parrot OS(セキュリティ専門家、研究者の間で人気のOS) Ubuntu-Mate Xubuntu Fedora Cinnamon Fedora Mate Manjaro Mate Manjaro Cinnamon Ubuntu Kylin(中国公式のUbuntu) Kylin OS V10(中国政府部門で使用されていると言われるOS)
およびその他のMATE、Cinnamon、一部のXfceデスクトップ環境。
影響を受けるソフトウェアコンポーネント: Atrilドキュメントビューア(MATE環境のデフォルトのドキュメントリーダーであり、人気のあるドキュメントリーダーの1つ)およびXreaderドキュメントビューア(Linux Mintのデフォルトのドキュメントリーダー)の最新版を含むすべてのバージョン
脆弱性の概要:
この脆弱性により、リモートの攻撃者はLinux Mint Xreaderの影響を受けるインストール環境上で任意のコードを実行できます。この脆弱性を悪用するにはユーザーの操作が必要であり、ターゲットが悪意のあるページを訪問するか、悪意のあるファイルを開く必要があります。
この特定の欠陥は、CBTファイルの解析に存在します。この問題は、システムコールを実行するためにユーザーが指定した文字列を使用する前に、適切な検証が行われていないことに起因します。攻撃者はこの脆弱性を悪用して、現在のユーザーのコンテキストでコードを実行できます。
この脆弱性は、AtrilおよびXreaderにおいて、コミックブックドキュメント(.cbr、.cbz、.cbt、.cb7)を処理する役割を担う不正なコードセグメントに起因します。コミックブックドキュメントは、画像を含むアーカイブにすぎません。ここでの脆弱性は、TARアーカイブである悪意を持って作成されたCBTドキュメントを使用して悪用できます。
根本原因 - 両方のドキュメントビューアにおける脆弱なコードセグメント(comics-document.c):
static const ComicBookDecompressCommand command_usage_def[] = {
/* RARLABS unrar */
{"%s p -c- -ierr --", "%s vb -c- -- %s", NULL , FALSE, NO_OFFSET},
/* GNA! unrar */
{NULL , "%s t %s" , "%s -xf %s %s" , FALSE, NO_OFFSET},
/* unzip */
{"%s -p -C --" , "%s %s" , NULL , TRUE , OFFSET_ZIP},
/* 7zip */
{NULL , "%s l -- %s" , "%s x -y %s -o%s", FALSE, OFFSET_7Z},
/* tar */
{"%s -xOf" , "%s -tf %s" , NULL , FALSE, NO_OFFSET},
/* UNARCHIVER */
{"unar -o -" , "%s %s" , NULL , FALSE, NO_OFFSET}
};
上記のコードを見ると、解凍に使用されるシェルコマンドがあることがわかります。/* tar */ セクションを見ると、実際には「tar -xOf -tf <tarアーカイブ内の画像>」というシェルコマンドを呼び出しています。これは、CBTドキュメント内の各画像を表示/読み込むためのものです。この動作は、tarプログラムのオプション「--checkpoint-action」を使用して悪用でき、CBTドキュメント内の画像の1つに「--checkpoint-action=EXEC=bash -c "whoami>/tmp/who.txt";.jpg」のような名前を付けることで、ターゲット上で任意のコマンドを実行できます。
この脆弱性は、2017年にEvinceドキュメントビューア(GNOMEのデフォルトのドキュメントリーダー)で既に発見されていました。AtrilとXreaderはEvinceのフォークであるため、この脆弱性はAtrilとXreaderの両方に存在していました。Atrilチームは当時、名前の中に「--checkpoint-action=」を含むCBTファイルが検出された場合にAtrilのプロセスを終了するコードを追加することで、この脆弱性を修正しました。以下がそのパッチです(comics-document.c)(983行目):
extract_argv (EvDocument *document, gint page)
{
ComicsDocument *comics_document = COMICS_DOCUMENT (document);
char **argv;
char *command_line, *quoted_archive, *quoted_filename;
GError *err = NULL;
if (g_strrstr (comics_document->page_names->pdata[page], "--checkpoint-action="))
{
g_warning ("File unsupported\n");
gtk_main_quit ();
}
ご覧のとおり、ページ/ファイル名に「--checkpoint-action=」が含まれている場合、コンソールに「File Unsupported」メッセージを表示して終了します。私はこれが空のファイルまたは非常に小さな画像ファイルでのみ機能することに気づきました。より多くのバイト数を持つ大きなファイルを提供すると、「gtk_main_quit ();」関数が失敗するため、実行が継続され、注入された任意のコマンドが実行されます。
MATEデスクトップ環境、多くのXFCEおよび軽量デスクトップ環境(Kali、Parrot、Xubuntu、Ubuntu Mate、Kylin、Fedora Mate、Manjaro MateなどのOSを含む)では、この脆弱性はリンク/URLを送信するだけで悪用できます。これらのオペレーティングシステム/環境にはAtrilがインストールされており、Atrilにはatril-previewerと呼ばれる追加コンポーネントがあり、ドキュメントを開いたりクリックしたりしなくてもエクスプロイトをトリガーします。攻撃者は、ターゲットユーザーがWebページを訪問すると、作成したCBTファイルを即座にターゲットシステムにダウンロードさせるWebページを作成できます。最近のFirefoxブラウザはデフォルトでユーザーの確認なしに自動ダウンロードを行うため、ユーザーがダウンロードディレクトリに移動するとペイロードが実行され、攻撃者にシェルが渡されます。
Linux Mint(Cinnamonデスクトップ環境)では、Xreaderを使用しておりXreaderにはプレビューアがないため、ターゲットユーザーがドキュメントを開いてペイロードをトリガーする必要があります。
この提出物には、完全に動作するエクスプロイトとデモビデオをzipアーカイブ(doctTar-inject_exploit.zip)に同封しました。
デモビデオでは、シナリオは以下のとおりです: 攻撃者マシン - Kali Linux 被害者マシン - Kali Linux最新版(2023.3) 被害者が私のエクスプロイトスクリプトによって生成された悪意のあるURL/リンクを訪問します
エクスプロイトの依存関係: poppler-utils エクスプロイトスクリプトをLinuxマシン(Kali推奨)で実行する前に、poppler-utilsをインストールしてください。インストール方法: apt install poppler-utils。