Officeで発見された謎のゼロデイ脆弱性「Follina」 – その概要と対策

** 本記事は、Mysterious “Follina” zero-day hole in Office – here’s what to do! の翻訳です。最新の情報は英語記事をご覧ください。**

Microsoft Office にリモートコード実行が可能なゼロデイ脆弱性が見つかったというニュースがインターネットを賑わせています。

より正確には「Office ファイルを介して悪用可能なコード実行のセキュリティホール」ですが、それ以外にもこの脆弱性をトリガーしたり悪用したりする方法が存在する可能性があります。

セキュリティ研究者の Kevin Beaumont 氏がこの脆弱性に付けた Follina という名前は極めて恣意的なものですが、公式の CVE 番号がまだ割り振られていないことを考えると [2022-05-30T21:00Z]、今後この名前は定着し、検索する際の便利なキーワードになりそうです。

(最新情報: Microsoft は、この脆弱性に識別子 CVE-2022-30190 を割り当て、これに関するアドバイザリを公開しました [2022-05-22T06:00Z]。)

「Follina」という名前は、感染した Word DOC ファイルのサンプルが Virus Total に 05-2022-0438.doc という名前で掲載されていることから考え出されたものです。05-2022 という数字は、2022年5月という意味であることは明らかですが、0438 は何を意味するのでしょうか。イタリア北西部のベネチアからそれほど遠くないフォリーナ (Follina) という地域の電話番号と同じであったことから、Beaumont 氏は「Follina」と名付けたとのことです。このマルウェアがこの地域で生まれたものであるとは言っていませんし、実際、イタリアとは関連が全くありません。

エクスプロイトの仕組み

大雑把に説明すると、このエクスプロイトは次のように動作します。

  • 電子メールを介するなどして受け取った不正な DOC ファイルをユーザーが開きます
  • このドキュメントは無害に見える https: URL を参照します。すると、この URL がダウンロードされます。
  • この https: URL は、ある HTML ファイルを参照しますが、このファイルには奇妙な JavaScript コードが含まれています。
  • このJavaScriptは、https: の代わりに ms-msdt: という特殊な識別子を持つ URL を参照しています
  • Windows では、ms-msdt: は MSDT ソフトウェアツールキットを起動するための独自の URL タイプです
  • MSDTは、「Microsoft Support Diagnostic Tool」の略語です。
  • この URL を介して MSDT に提供されるコマンドラインによって、信頼できないコードが実行されます。

悪意のある ms-msdt: リンクが呼び出されると、次のようなコマンドライン引数で MSDT ユーティリティが起動されます。msdt /id pcwdiagnostic ...

他のパラメータを指定せずに手動で実行すると、自動的に MSDT がロードされ、次のように無害に見える「Program Compatibility Troubleshooter」が起動されます。

ここでは、トラブルシューティングするアプリを選択したり、サポートに関する質問に回答したり、アプリでさまざまな自動テストを実行したりできます。それでも解決しない場合は、さまざまなトラブルシューティングのデータをアップロードして、Microsoft に問題を報告することができます。

ドキュメントを開いただけで、この PCWDiagnostic ユーティリティが起動するのは意外かもしれませんが、少なくともいくつかのポップアップダイアログが表示され、ユーザーは各ステップで何を実行するかを選択できます。

リモートでの自動スクリプト実行

残念ながら、「Follina」の手法を発見した攻撃者 (実際には、よく理解しないまま、先月さまざまな攻撃でこの手法を使用していたらしい攻撃者) は、MSDT コマンドラインに追加する (奇妙だが危険な) オプションを作り出したようです。

これらのオプションを指定すると、MSDT トラブルシューターをリモートコントロールで操作できるようにします。

攻撃者は、一連のパラメータを細工して、操作を自動実行させるだけでなく (/skip/force オプションなど)、途中で PowerShell スクリプトを呼び出しています。

さらに深刻なのは、この PowerShell スクリプトはディスク上のファイルである必要はなく、暗号化されたソースコード形式で、使用される他のオプションと一緒にコマンドライン自体で提供することができる点です。

このケースの PowerShell は、攻撃者から圧縮形式で提供されたマルウェア実行ファイルを抽出し、起動するために使用されていました。

Huntress の 脅威リサーチャー John Hammond 氏は、CALC.EXE を起動して計算機を表示させることによって、コンピュータ上にすでにある実行ファイルをこの手法で直接読み込むことができることを確認しています。つまり、途中で PowerShell スクリプトを起動するという気付かれやすいアプローチを用いなくても、既存のツールやユーティリティを使用して攻撃を行うことができます。

マクロは不要

この攻撃は、DOC ファイル自体に含まれる URL から参照される不正な ms-msdt: URLを、Word が参照することによって引き起こされます。

Visual Basic for Applications (VBA) Office マクロを使用していないため、Office マクロを完全にオフにしている場合でもこの手法は有効です。

簡単に説明するならば、Office の便利な URL 「機能」と MSDT の診断「機能」を組み合わせることで、クリックするだけで攻撃が実行されるリモートコード実行を引き起こすセキュリティホールが生成されているようです。

つまり、不正なドキュメントを開くだけで、ユーザーが気付かないうちにマルウェアがコンピュータに送り込まれる可能性があります。

事実、John Hammond 氏は、不正なコンテンツを DOC ファイルではなく RTF ファイルにパッケージすることで、さらに直接的な攻撃に変えることができる、と書いています。その場合、クリックして開かなくても、Windows エクスプローラでドキュメントをプレビューするだけで、攻撃を実行させられると同氏は述べています。サムネイルのプレビューペインを表示させるだけで、Windows と Office を混乱させることができます。

対策

マイクロソフト独自の ms-xxxx URL は便利かもしれませんが、特定の種類のファイルが開かれると、あるいはプレビューされただけで自動的にプロセスを起動するように設計されているというのは、明らかにセキュリティ上のリスクです。

ms-msdt: URL と MSDT ユーティリティの間の関係を断ち切る、という回避策があります。これは、コミュニティ内で即座に合意され、その後 Microsoft によって公式に承認された回避策です。

これを実行すると、ms-msdt: URL は特別な意味を持たなくなり、使用しても MSDT.EXE を強制的に実行できなくなります。

この変更は、レジストリエントリ HKEY_CLASSES_ROOT\ms-msdt が存在すれば、これを削除するだけで簡単に行うことができます。(存在しない場合は、この回避策によってすでに保護されていることになります。)

.REG で終わる名前のファイルを作成し、このテキストを含めます。

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\ms-msdt]

次に、この .REG ファイルをダブルクリックして、問題のエントリを削除することができます (マイナス記号は「削除」を意味します)。

また、REGEDIT ユーティリティで HKEY_CLASSES_ROOT\ms-msdt を参照して、[Delete] を押すこともできます。

あるいは、コマンドREG DELETE HKCR\ms-msdt を実行することもできます。

なお、この方法でレジストリを変更するには、管理者権限が必要です。

ms-msdt URL がどうしても必要な場合は、不足するレジストリデータを後で置き換えることができます。

HKEY_CLASSES_ROOT\ms-msdt レジストリキーのバックアップを作成するには、コマンドREG EXPORT HKEY_CLASSES_ROOT\ms-msdt backup-msdt.reg を使用します。

削除したレジストリキーを後で復元するには、コマンドREG IMPORT backup-msdt.reg を使用します。

ちなみに、ソフォスでは ms-msdt URL を見たこともなければ、使用したこともないため、使用している Windows コンピュータでこのレジストリ設定を削除することに何のためらいもありませんでした。

HKCR\ms-msdt レジストリエントリの「ビフォアー」の状態 (削除後に再構築が必要になった場合に備えて)。

ソフォス製品による攻撃の検出・報告の方法

  • ソフォスのエンドポイント製品は、このエクスプロイトを介して実行される既知の攻撃を Troj/DocDl-AGDX として検出し、ブロックします。この検出名を使用して、最初のダウンロードの引き金となる DOC ファイルまたは RTF ファイルと、それに続く HTML ファイルの両方をログで検索することができます。また、 Mal/DocDL-C という名前で検索すると、同様の手法を用いた他の攻撃用ドキュメントを検出することができます。
  • ソフォスのエンドポイント製品は、Exec_39a (T1023) としてこのエクスプロイトをトリガーしようとする試みを検出し、ブロックします。レポートは、システムフォルダ内のプログラム MSDT.EXE に対してログに表示されます。
  • ソフォスのメールおよび Web のフィルタリング製品は、この種の攻撃ファイルを CXmail/OleDl-AG として捕捉します。