Compact
true
担当領域:セキュリティ技術センター リスクハンティング・アナリシスグループ
マルウェア解析や攻撃者の行動分析などの業務を経て、現在はペネトレーションテスト、脆弱性診断などに従事。これまでに Botconf や JSAC で講演。趣味は、CTFとコーヒーを飲むこと。

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

CVE-2022-30190の概要

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

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

図 1 @nao_secによるツイート(2022年5月27日午後11:38に投稿)[5]
図 1 @nao_secによるツイート(2022年5月27日午後11:38に投稿)[5]
https://twitter.com/nao_sec/status/1530196847679401984
100

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

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

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

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

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

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

<video-js data-account="4598493582001" data-player="bfEzXAqVm" data-embed="default" controls="" data-video-id="6307666535112" data-playlist-id="" data-application-id=""></video-js><script src="https://players.brightcove.net/4598493582001/bfEzXAqVm_default/index.min.js"></script>
Wordファイル(docx形式)を用いた検証動画
100
false
false
16:9

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

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

<video-js data-account="4598493582001" data-player="bfEzXAqVm" data-embed="default" controls="" data-video-id="6307670103112" data-playlist-id="" data-application-id=""></video-js><script src="https://players.brightcove.net/4598493582001/bfEzXAqVm_default/index.min.js"></script>
RTFファイルを用いた検証動画
100
false
false
16:9

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

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

<video-js data-account="4598493582001" data-player="bfEzXAqVm" data-embed="default" controls="" data-video-id="6307669612112" data-playlist-id="" data-application-id=""></video-js><script src="https://players.brightcove.net/4598493582001/bfEzXAqVm_default/index.min.js"></script>
Invoke-WebRequest(wget)を用いた検証動画
100
false
false
16:9

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

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

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

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

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

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

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

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

reg export HKEY_CLASSES_ROOT\ms-msdt <filename>
1
1

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

reg delete HKEY_CLASSES_ROOT\ms-msdt /f
1
1

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

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

<video-js data-account="4598493582001" data-player="bfEzXAqVm" data-embed="default" controls="" data-video-id="6307670295112" data-playlist-id="" data-application-id=""></video-js><script src="https://players.brightcove.net/4598493582001/bfEzXAqVm_default/index.min.js"></script>
緩和策1の検証動画(Wordファイル)
100
false
false
16:9
<video-js data-account="4598493582001" data-player="bfEzXAqVm" data-embed="default" controls="" data-video-id="6307670104112" data-playlist-id="" data-application-id=""></video-js><script src="https://players.brightcove.net/4598493582001/bfEzXAqVm_default/index.min.js"></script>
緩和策1の検証動画(RTFファイル)
100
false
false
16:9

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

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

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

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

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

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

<video-js data-account="4598493582001" data-player="bfEzXAqVm" data-embed="default" controls="" data-video-id="6307669912112" data-playlist-id="" data-application-id=""></video-js><script src="https://players.brightcove.net/4598493582001/bfEzXAqVm_default/index.min.js"></script>
緩和策2の検証動画(Wordファイル)
100
false
false
16:9
<video-js data-account="4598493582001" data-player="bfEzXAqVm" data-embed="default" controls="" data-video-id="6307667728112" data-playlist-id="" data-application-id=""></video-js><script src="https://players.brightcove.net/4598493582001/bfEzXAqVm_default/index.min.js"></script>
緩和策2の検証動画(RTFファイル)
100
false
false
16:9

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

まとめ

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

参考情報

[1] msdt | Microsoft Docs
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/msdt

[2] https://twitter.com/nao_sec

[3] https://twitter.com/GossiTheDog

[4] Follina — a Microsoft Office code execution vulnerability
https://doublepulsar.com/follina-a-microsoft-office-code-execution-vulnerability-1a47fce5629e

[5] https://twitter.com/nao_sec/status/1530196847679401984

[6] Office URI Schemes | Microsoft Docs
https://docs.microsoft.com/en-us/office/client-developer/office-uri-schemes

[7] Guidance for CVE-2022-30190 Microsoft Support Diagnostic Tool Vulnerability
https://msrc-blog.microsoft.com/2022/05/30/guidance-for-cve-2022-30190-microsoft-support-diagnostic-tool-vulnerability/

[8] https://twitter.com/gentilkiwi/status/1531384447219781634

執筆者プロフィール

執筆者
original
50

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

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

執筆者
original
50

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

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