サイト内の現在位置

Microsoft Wordなどを介して任意コード実行が可能なMSDTの脆弱性(CVE-2022-30190、Follina)の検証

NECセキュリティブログ

2022年6月20日

NECサイバーセキュリティ戦略統括部セキュリティ技術センターの松本隆志(共著者:榊龍太郎)です。
2022年5月27日にMSDTの脆弱性(CVE-2022-30190、別名Follina)を悪用したWordファイルが発見されました。我々のチームで本脆弱性を再現するPoCを作成し、緩和策の検証を行いましたので、本ブログにて紹介します。

CVE-2022-30190の概要

CVE-2022-30190は、Microsoftサポート診断ツール(MSDT: Microsoft Support Diagnostic Tool)new window[1]に起因する脆弱性で、任意コードの実行が可能です。

2022年5月27日に、@nao_secnew window[2]によって、本脆弱性を悪用したWordファイルが発見されました。また、後に@GossiTheDognew window[3]によって、この脆弱性にFollinaという名前が付けられましたnew window[4]

図 1 @nao_secによるツイート(2022年5月27日午後11:38に投稿)new window[5]

図1のツイートのようにMicrosoft WordなどのアプリケーションからOffice URI Schemenew window[6]を使用してMSDTを呼び出すことで、任意コードの実行が可能です。

本脆弱性には、以下のような特徴があります。

  • VBAマクロを使用せずに悪用可能なため、マクロの無効化では防止できない。
  • Microsoft Wordだけでなく、RTF(リッチテキスト)形式でも悪用することができる。
  • RTF形式の場合、エクスプローラーのプレビューウィンドウに表示されるだけで任意コードが実行される(ファイルを開かずにクリックして選択するだけで、任意コードが実行される)。
  • PowerShellコマンドのInvoke-WebRequest(wget)でも悪用することができる。

比較的簡単に悪用可能、かつファイルを開いたり、選択したりするだけで任意コードが実行されてしまうため、非常に危険な脆弱性であると言えます。

本脆弱性を再現するPoCの作成と検証

セキュリティ技術センターのリスクハンティングチームで本脆弱性を再現するPoCを作成し、検証を行いました。この検証は、以下の環境で実施しました。

  • OS:Windows 10 Pro 21H1
  • Word:Microsoft® Word for Microsoft 365 MSO(16.0.14326.20936) 64ビット

まずは、Wordファイル(docx形式)を用いた検証動画を示します。Wordファイルを開いた後、本脆弱性を利用して電卓(calc.exe)を起動するようにしています。

Wordファイル(docx形式)を用いた検証動画

上記の動画の通り、Wordファイルを開いただけで、HTTP通信が発生し、Microsoftサポート診断ツール(MSDT)および電卓が起動されたことが分かります。

次に、RTFファイルを用いた検証動画を示します。ここでは、エクスプローラーのプレビューウィンドウを有効にし、ファイルを開かずにファイルの選択のみを行います。

RTFファイルを用いた検証動画

上記の動画の通り、ファイルを開かずにクリックして選択しただけで、Microsoftサポート診断ツール(MSDT)および電卓が起動されたことが分かります。

最後に、WordやRTFファイルではなく、PowerShellのコマンドの1つであるInvoke-WebRequest(wget)を用いた検証動画を示します。ここでは、Word以外でも悪用可能だということを示します。

Invoke-WebRequest(wget)を用いた検証動画

上記の動画の通り、PowerShellのコマンドでWebサーバにアクセスしただけで、Microsoftサポート診断ツール(MSDT)、および電卓が起動されました。WordやRTFファイルでなくてもこの脆弱性を悪用できてしまいます。

このように本脆弱性を悪用することで、任意コードの実行が可能であることが確認できました。

本脆弱性の緩和策とその有効性検証

次に本脆弱性の緩和策を2つ紹介します。ここで紹介する緩和策を実施した後、作成したPoCを用いて任意コードの実行を防止できるかの検証を行いました。

緩和策1:MSDT関連のレジストリキーを削除する

本脆弱性は、MSDT URLプロトコルを用いて任意コードが実行されます。そのため、MSDT URLプロトコル自体を実行できないようにすれば、任意コードの実行を防止することができます。この緩和策は、Microsoft公式のガイダンスnew window[7]で紹介されていました。

以下の手順で、該当するレジストリキーを削除することで、対処が可能です。

  • 1.
    管理者権限でコマンドプロンプトを起動する。
  • 2.
    次のコマンドでレジストリキーのバックアップを取る。

reg export HKEY_CLASSES_ROOT\ms-msdt <filename>

  • 3.
    次のコマンドを実行してレジストリキーを削除する。

reg delete HKEY_CLASSES_ROOT\ms-msdt /f

上記では、コマンドラインでレジストリキーを削除しましたが、レジストリエディタで該当するキーを削除しても同様に緩和することができます。

実際にこの緩和策を実施し、有効性の検証を行いました。

緩和策1の検証動画(Wordファイル)

緩和策1の検証動画(RTFファイル)

上記の動画の通り、緩和策実施後は、Microsoftサポート診断ツール(MSDT)が起動しないことが分かります。以上により、この緩和策が有効であることが確認できました。

緩和策2:グループポリシーでトラブルシューティングウィザードへのユーザアクセスを禁止する

本脆弱性は、Microsoftサポート診断ツール(MSDT)を用いて、任意コードが実行されます。そのため、この診断ツールへのアクセスを禁止すれば、任意コードの実行を防止することができます。この緩和策は、@gentilkiwiのツイートnew window[8]で紹介されていました。

以下の手順で、グループポリシーを設定することで、対処が可能です。

  1. グループポリシーエディター(gpedit.msc)を起動する。
  2. 「コンピューターの構成→管理用テンプレート→システム→トラブルシューティングと診断→スクリプト化された診断」を開く。
  3. 「トラブルシューティング:トラブルシューティングウィザードにアクセスして実行することをユーザーに許可する」を開く。
  4. 構成を「無効」に変更する(図2参照)。
図 2 グループポリシーの設定

実際にこの緩和策を実施し、有効性の検証を行いました。

緩和策2の検証動画(Wordファイル)

緩和策2の検証動画(RTFファイル)

上記の動画の通り、緩和策の実施後は、「トラブルシューティングはグループポリシーにより無効になっています。」というエラーメッセージが表示され、実行が防止されたことが分かります。以上により、この緩和策が有効であることが確認できました。

まとめ

今回は、Microsoft サポート診断ツール(MSDT)の脆弱性について紹介しました。この脆弱性を悪用することで、任意コードの実行が可能です。比較的簡単に悪用が可能なため、今後マルウェアへの感染等に利用される恐れがあります。
既にMicrosoft Defenderによって、本脆弱性の悪用を検出するシグネチャが提供されていますが、その検出を回避できたといった報告をいくつか確認しています。非常に危険な脆弱性であるため、緩和策を実施し、事前に対処しておく必要があります。

参考情報

執筆者プロフィール

松本 隆志(まつもと たかし)
セキュリティ技術センター リスクハンティング・アナリシスグループ

マルウェア解析や攻撃者の行動分析などの業務を経て、現在はペネトレーションテスト、脆弱性診断などに従事。
これまでに Botconf や JSAC で講演。
趣味は、CTFとコーヒーを飲むこと。

執筆者の他の記事を読む

執筆者プロフィール

榊 龍太郎(さかき りゅうたろう)
セキュリティ技術センター リスクハンティング・システムグループ

ペネトレーションテスト、脆弱性診断を通じたセキュリティ実装支援、社内CTF運営、その他社内外向けのセキュリティ人材育成施策に従事。
2019年6月にIPA 産業サイバーセキュリティセンター中核人材育成プログラムを修了。
またインプレスグループが運営する技術解説サイト「ThinkIT」にて、RISS試験に関するWeb記事2件の執筆を担当。
new windowhttps://thinkit.co.jp/article/18849
new windowhttps://thinkit.co.jp/article/19367
CISSP/情報処理安全確保支援士(RISS) /GIAC GPEN/CEH/AWS認定クラウドプラクティショナーを保持。

執筆者の他の記事を読む

アクセスランキング