Officeに影響を与える任意コード実行の脆弱性「CVE-2024-7262」と「CVE-2024-7263」を発見し解析しました。その詳細について解説します。Officeに影響する任意コード実行の2つの脆弱性を解析」を再編集したものです。Officeにコード実行の脆弱性(CVE-2024-7262)を発見し、韓国とつながりのあるサイバースパイグループ「APT-C-60」がこの脆弱性を攻撃していることを特定しました。根本原因を分析したところ、欠陥のあるコード(CVE-2924-7263)を悪用できる別の方法も見つかりました。本ブログでは、技術的な詳細について解説します。Officeのコード実行の脆弱性(CVE-2024-7262)を武器化して、東アジア諸国を標的に攻撃していました。この脆弱性の根本原因を分析した結果と武器化の方法を併せて説明します。ESET社の研究者は、このエクスプロイトを調査していく中で、この脆弱性(CVE-2024-7263)を悪用する別の方法も特定しました。概要ESET社は、APT-C-60の活動を調査する中で、このグループが使用している多くのダウンローダーコンポーネントの1つを参照する不審なスプレッドシートドキュメントを発見しました。Officeにあるコード実行の脆弱性が実環境で悪用されていることを特定しました。最終的なペイロードはカスタムバックドアであり、ESET社はこのバックドアをSpyGlaceと命名しました。SpyGlaceは、ThreatBookではTaskControler.dllとして公開されています。WPSのWebサイトによると、このソフトウェアを現在利用しているユーザーは全世界で5億人を超えています。ESET社は協調的な脆弱性開示プロセスに従っていましたが、DBAPPSecurityは武器化された脆弱性の分析を独自に公表し、APT-C-60が中国のユーザーにマルウェアを配信するために脆弱性を悪用していることを確認しています。悪意のある文書(SHA-1:7509B4C506C01627C1A4C396161D07277F044AC6)は、一般的に使用されているXLSスプレッドシート形式のファイルをMHTML形式でエクスポートしたものです。Spreadsheetsアプリケーションを使用してこのエクスポートファイルをクリックすると、特別に細工されたハイパーリンクが隠されており、任意のライブラリが実行されるように設計されています。このMHTMLファイルは通常とは異なる形式になっており、ドキュメントを開くとすぐにファイルがダウンロードされます。この手法を利用して脆弱性を攻撃すると、リモートからコードが実行されます。Spreadsheetsでドキュメントがどのように表示されるかを示しています。行と列にCoremailメールソリューションと書かれた画像があり、この画像がおとりとして使用されています。この画像には悪意のあるハイパーリンクが隠されています。攻撃用のドキュメントには、悪意のあるハイパーリンクが隠された画像が埋め込まれているESET社が協調的な脆弱性開示ポリシーに従っている間に、武器化されたドキュメントがVirusTotalにアップロードされてから本ブログ記事が8月28日に公開されるまでのタイムラインを以下に示します。2024年2月29日:CVE-2024-7262を攻撃するドキュメントがVirusTotalにアップロードされた。2024年3月某日:Kingsoft社は、CVE-2024-7672の脆弱性を秘密裏に修正するアップデート(サイレントパッチ)をリリースし、2024年2月29日に見つかったエクスプロイトが機能しないようにした。Officeリリースが分析され、この修正が遡及的に行われた。Kingsoft社は、この脆弱性を修復するときに行った対策の正確な詳細は積極的に提供していなかった。2024年4月30日:ESET社はVirusTotalにアップロードされた悪意のあるドキュメントを分析し、このドキュメントが、最初に悪用された時点ではゼロデイ脆弱性であったCVE-2024-7262を悪用していることを発見した。Kingsoft社のサイレントパッチは欠陥のあるコードの一部分にしか解決しておらず、残りの欠陥のあるコードは依然として悪用可能であることも判明した。2024年5月25日:ESET社はKingsoft社に連絡を取り、調査結果を報告した。最初の脆弱性にはすでにパッチが適用されていたが、CVE-2022-24934の対応と同じように、CVEに登録し脆弱性を公開するように求めた。2024年5月30日:Kingsoft社はこれらの脆弱性を認め、常に最新情報を提供するとESET社に伝えた。2024年6月17日:ESET社は最新情報を提供するように求めた。2024年6月22日:Kingsoft社は、開発チームは現在もこの問題に取り組んでおり、次のバージョンで修正することを目指していると伝えてきた。2024年7月31日:その後テストを行ったところ、CVE-2024-7263にはサイレントパッチが適用されていた。ESET社は、CVE-2024-7262とCVE-2024-7263を予約しており、公開する準備を行っていることをKingsoft社に通知した。2024年8月11日:DBAPPSecurityチームは独自に調査結果を発表した。2024年8月15日:CVE-2024-7262とCVE-2024-7263が公開された。2024年8月16日:ESET社は、Kingsoft社に最新情報を伝えるように再度要求した。2024年8月22日:Kingsoft社は5月末までにCVE-2024-7263を修正したことを認めたが、これは2024年6月22日に同社の開発チームが「まだこの問題の修正の取り組んでいる」と主張していたことと矛盾している。2024年8月28日:Kingsoft社は両方の脆弱性について認め、パッチを適用したことを明らかにした。Officeを緊急にアップデートするよう警告した。CVE-2024-7262の脆弱性は、攻撃者が指定するファイルパスが適切にサニタイズされておらず、読み込まれるプラグインも検証されていないことに起因していました。Kingsoft社が公開したパッチを分析した結果、さらにロジックのバグを利用してこの脆弱性を悪用する別の方法も見つかりました。CVE-2024-7262このセクションでは、APT-C-60によって悪用されたバグについて説明します。Officeプラグインコンポーネントpromecefpluginhost.exeの制御フローを乗っ取り、任意のコードを実行します。この脆弱性が攻撃で利用され、偽装されたスプレッドシートドキュメントという形で武器化された方法についても説明します。Officeをインストールすると、このソフトウェアは、ユーザーがURIスキームksoqing://で始まるURLをクリックするときに毎回、外部アプリケーションの実行を許可するksoqingと呼ばれる独自のプロトコルハンドラを登録します。Windowsオペレーティングシステムでは、独自のプロトコルハンドラの登録は、レジストリで行われます。"%1"を使用して実行するように指示されます。%1は完全なURLに置換されます。Spreadsheetsアプリケーション(et.exe)の独自のプロトコルksoqingを使用して、ユーザーがハイパーリンクをクリックしたときの処理を図2に示します。Spreadsheetsアプリケーションは、独自のプロトコルksoqingを処理するためにwps.exeを起動する図3に、CVE-2024-7262に対するエクスプロイトの制御フローの概要を示します。CVE-2024-7262のエクスプロイトの制御フローの概要wps.exeが起動されると、qingbangong.dllが読み込まれます。これは、ハイパーリンクの特定のパラメータを解析および検証するコンポーネントです。ESET社が発見したエクスプロイトファイルにある悪意のあるリンクの形式は、ksoqing://type=ksolaunch&cmd=&token=&launchname=promecefpluginhost.exeとなっています。ESET社の分析とテストによると、このリンクによって、攻撃者が指定したbase64エンコードされたコマンドラインで、システムにすでに存在するアプリケーション(この場合、promecefpluginhost.exe)が実行されます。tokenパラメータは、cmdパラメータのエンコードされた値と、文字列_qingLaunchKey_にlaunchnameパラメータをエンコードした値が付けられたものを連結したMD5ハッシュです。Office\\office6\の下にあり、Kingsoft社の有効な証明書で署名された実行ファイルでなければなりません。-JSCefServicePath=がpromecefpluginhost.exeに渡されていることがわかりました。いくつかの初期化処理を行った後で、ksojscore.dllライブラリがロードされ、JSCefServicePathパラメータがデコードされます。これにより、QtのQLibrary::loadメソッドへのパラメータとして渡される文字列が指定されます。このファイルパスは攻撃者が定義できるため、任意のDLLをロードしてコードを実行することが可能です。図4は、攻撃者が制御するJSCefServicePathパラメータがksojscore.dllによって処理される方法を示しています。パラメータJSCefServicePathがデコードされ(左)、QLibrary::loadメソッドの引数として使用される(右)つまり、ksoqingスキームプロトコルを悪用すると、クリックされたときに指定されたリモートファイルパスからライブラリをロードするハイパーリンクを作成することが可能です。APT-C-60はこの脆弱性を武器化して、トロイの木馬のダウンローダーコンポーネント(SHA-1:08906644B0EF1EE6478C45A6E0DD28533A9EFC29)を配信して、攻撃の第一段階として使用します。脆弱性の攻撃この脆弱性を攻撃するためには、攻撃者は標的のコンピューターがアクセス可能な場所、つまりシステムまたはリモートの共有フォルダに悪意のあるライブラリを保存し、そのファイルパスを事前に把握しておく必要があります。この脆弱性のエクスプロイトを開発した攻撃者は、これを実現するためのいくつかの手法を理解していました。MHTML形式を利用したリモートファイルのダウンロードこのエクスプロイトを作成した攻撃者は、サポートされているMHTMLファイル形式の特定の機能を利用して、悪意のあるコンポーネントをダウンロードさせ、システムの予測可能な場所に保存させています。WordやExcelアプリケーションで提供されているエクスポート形式です。これは、ドキュメントを簡単に表示できるようにするHTML、CSS、JavaScriptファイルが含まれる複数のパートから構成されるアーカイブです。Spreadsheetsアプリケーションにリモートファイルをダウンロードさせることができます。imgタグとsrc要素によってローカルに保存されたライブラリを指定するテストファイルの1つを図5に例として示します。Spreadsheets(et.exe)アプリケーションでスプレッドシートドキュメントを開くと、リモートライブラリが自動的にダウンロードされ、ディスクに保存されます。ProcMonで観察されたこの結果を図6に示します。16LEでエンコードされたURLのMD5ハッシュであることがわかりました。ESET社のライブラリのURLはhttp://localhost/Dll1.dllで、MD5ハッシュは914CBE6372D5B7C93ADDC4FEB5E964CDになります。Officeアプリケーションのルートディレクトリと連結されます。ファイルが見つからない場合、promecefpluginhost.exeは、図7に示すように、ほかのパスからライブラリを取得しようとします。Officeアプリケーションのルートディレクトリからの相対パスを使用することができます。攻撃を成功させるための最後の難関があります。勘のいい読者の方は、.dllという拡張子が、promecefpluginhost.exeプロセスがライブラリをロードするときに、ファイル名に追加されていることに気が付かれたのではないでしょうか。図6に示しているように、ダウンロードされるファイルを作成するときにはこの拡張子は追加されません。APIの知識を悪用してこの制限を回避しています。前に説明したように、QLibrary::Loadメソッドは、LoadLibraryWを呼び出すライブラリをロードします。この関数に渡されるlpLibFileNameパラメータのドキュメントには、末尾のドット文字(.)を追加すると、この関数が.dll拡張子を追加できなくなると記載されています。この相対パスにこの文字を追加すれば、ライブラリをロードできます。エクスプロイトの再現ここまで説明してきた攻撃フローをまとめて、このエクスプロイトを再現するために、以下の操作を実行しました。Webサーバーに独自のライブラリをホストするURLのMD5ハッシュを計算するこのハッシュと一致するハイパーリンクを構築するスプレッドシートドキュメントを作成し、ハイパーリンクを挿入し、MHTMLファイルとしてエクスポートするエクスポートしたファイルにimgタグを挿入し、このURLを指定する図8に、ハイパーリンクの作成方法を示します。ハイパーリンクの作成ドキュメントを開くと、ハイパーリンクを一度クリックしただけで脆弱性が攻撃され、ESET社が準備したカスタムライブラリがロードされました。このプロセスを図9に示します。図10にはさらに詳細なプロセスを示しています。ロードされるライブラリのコールスタックの詳細ESET社のライブラリがロードされると、PID、管理者権限の有無、ホストプロセスのファイルパスがログファイルに書き込まれます。Officeのいくつかのバージョンでこのエクスプロイトを再現しました。Officeバージョンを表示するログファイルこの脆弱性は1回クリックするだけで攻撃できるため、エクスプロイトの開発者は、ユーザーを欺き、ドキュメントが通常のスプレッドシートであると信じ込ませるために、スプレッドシートの行と列の画像をスプレッドシートに埋め込んでいました。悪意のあるハイパーリンクは画像にリンクされており、図12で再現しているように、画像のセルをクリックするとエクスプロイトが実行される仕組みになっていました。通常の行と列の画像を埋め込んでおり、ユーザーを騙すために作成されたスプレッドシートこの脆弱性でもう1つの注意しなければならないのは、Windowsエクスプローラーのプレビュー画面で一度クリックするだけでも、この脆弱性が攻撃されることです。Officeバージョンは、2023年8月頃にリリースされた12.2.0.13110から、2024年3月にパッチがリリースされたバージョン12.1.0.16412までです。武器化されたドキュメントは2月に初めてVirusTotalにアップロードされました。PEのタイムスタンプから、いくつかの悪意のあるコンポーネントは2月に作成されたことがわかります。脆弱性の影響を受けるバージョンを特定する過程で、CVE-2024-7262の問題を修正するためにバージョン12.1.0.16412(2024年3月頃にリリース)で導入されたサイレントパッチを分析しました。基本的に、攻撃者が制御していたJSCefServicePath変数を検証するために、promecefpluginhost.exeとksojscore.dllコンポーネントの内部でチェック機能が追加されていました。パッチCefPluginPathU8では、同じような変数への対応が行われていませんでした。最初のチェックは、promecefpluginhost.exeが異なるコマンドライン引数を使用して繰り返し実行するときに行われます。パラメータが前に説明した変数の1つと同じ名前である場合(大文字小文字が区別され比較されます)、図13に示すようにパラメータは破棄されます。コードチェックと渡されたパラメータの破棄その後、jscefservice.dllが保存されているJSCefServicePathのファイルパスを検索します。Office\\office6\addons\kcef\でなければなりません。同じ処理がCefPluginPathU8に対して行われます。Office\\office6\addons\cef\を指定していなければなりません。正しいライブラリを読み込むコード新しいコマンドラインは、受け入れられたコマンドラインパラメータによって構築され、名前付き変数によって識別され取得されたファイルパスが続きます。promecefpluginhost.exeは次にksojscore.dllライブラリをロードし、そのエクスポートCefRenderEntryPointが再構築されたコマンドラインで呼び出されます。両方の名前付き変数がチェックされますが、ここでは大文字小文字は区別されません(図15の2行目を参照)。大文字と小文字が区別されずに変数が使用されるここにロジックの最初の欠陥があります。名前付き変数の少なくとも1文字が大文字または小文字に変更されている場合、大文字と小文字を区別する最初のチェックでは攻撃者が指定したパラメータは拒否されず、コマンドラインは次のようになります。-JSCefServicePath=(最初の変数名の最初の文字Eが小文字から大文字に変化しています)。このようなコマンドラインがksojscore.dllに渡されると、最初の変数だけが使用され、攻撃者が制御する変数が常に有効な変数の前に置かれます。JSCefServicePathファイルパスで指定されるライブラリをロードする前に、2つ目のチェック機能が導入されました。krt::ksafe::KProcess::verifyZhuHaiKingsoftCertSigner関数は、図16に示すように、ライブラリの証明書をチェックし、Kingsoft社が所有するライブラリであることを確認するために呼び出されます。そのため、攻撃者は任意のライブラリをロードすることはできません。ロードされるライブラリのシグネチャのチェックしかし、CefPluginPathU8変数は正しくチェックされません。ここに2つ目の欠陥があります。JSCefServicePathファイルパスを検証した後、ライブラリjscefservice.dllがロードされ、CefPluginPathU8によって提供されたファイルパスは、署名がチェックされずに、文字列liblibcef.dllと連結され、LoadLibraryExWが呼び出されます。CefPluginPathU8変数の少なくとも1文字が変更されている場合、jscefservice.dllは、図17に示すように、変数で指定された攻撃者が制御するファイルパスに保存されたlibcef.dllライブラリをロードします。ライブラリjscefservice.dllは、署名をチェックせず、攻撃者が定義したパスにあるイブラリをロードする脆弱性の攻撃この脆弱性を攻撃するときの主な制限は、ファイルパスに追加される文字列libcef.dllです。このブログの執筆時点では、ファイルをダウンロードしてそのファイル名を選択する方法は見つかっていません。LoadLibraryExWはネットワークパスを指定できるため、ローカルネットワークの共有でライブラリをホストし、変数CefPluginPathU8によってそのライブラリを指定する方法があります。図18のスクリーンショットは、promecefpluginhost.exe(2024年4月下旬にリリースされたバージョン12.2.0.16909)の制御フローが、ネットワークパスを使用して乗っ取られた方法を示しています。Officeバージョンがこれらの脆弱性の影響を受けます。Officeは主にアジア各国で利用されているソフトウェアであり、今回明らかになった攻撃からAPT-C-60グループが、東アジア諸国を標的として侵害することに執着していることが実証されました。Officeアプリケーション内部の研究や、Windowsのロードプロセスの仕組みについての知識が必要です。このエクスプロイトは狡猾であり、ユーザーを騙して正規のスプレッドシートをクリックさせる巧妙な仕掛けを取り入れており、非常に効果的で攻撃が成功する可能性が高くなっています。攻撃者は、MHTMLファイル形式を選択することで、コード実行の脆弱性をリモートからのコード実行の脆弱性へと進化させています。CVE-2024-7263はESET社によって発見されましたが、これはパッチを慎重に検証するプロセスと、中核的な問題が完全に解決されていることの確認が重要であることを示しています。Officeをお使いの方は、ソフトウェアを最新リリースにアップデートすることを強くお勧めします。IOC(セキュリティ侵害の痕跡)IoC(セキュリティ侵害の痕跡)の詳細なリストと検体は、ESETのGitHubリポジトリに掲載されています。ATT&CKフレームワークのバージョン15を使用して作成されています。かたるフィッシングについての注意喚起2024.10.29WESTERをかたるフィッシングについての注意喚起アクセスランキングアクセスランキングスマホがウイルスに感染!?不安に思ったら試したい5つの方法そのウイルス警告は本物ですか?iPhoneが発する警告表示の意味とは?アクセスするだけでも危険な海賊版サイト。ある、キヤノンマーケティングジャパン株式会社が提供しています。