Japan
サイト内の現在位置
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の概要
図1のツイートのようにMicrosoft WordなどのアプリケーションからOffice URI Scheme[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ファイルを開いただけで、HTTP通信が発生し、Microsoftサポート診断ツール(MSDT)および電卓が起動されたことが分かります。
次に、RTFファイルを用いた検証動画を示します。ここでは、エクスプローラーのプレビューウィンドウを有効にし、ファイルを開かずにファイルの選択のみを行います。
上記の動画の通り、ファイルを開かずにクリックして選択しただけで、Microsoftサポート診断ツール(MSDT)および電卓が起動されたことが分かります。
最後に、WordやRTFファイルではなく、PowerShellのコマンドの1つであるInvoke-WebRequest(wget)を用いた検証動画を示します。ここでは、Word以外でも悪用可能だということを示します。
上記の動画の通り、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>
- 3.次のコマンドを実行してレジストリキーを削除する。
reg delete HKEY_CLASSES_ROOT\ms-msdt /f
上記では、コマンドラインでレジストリキーを削除しましたが、レジストリエディタで該当するキーを削除しても同様に緩和することができます。
実際にこの緩和策を実施し、有効性の検証を行いました。
上記の動画の通り、緩和策実施後は、Microsoftサポート診断ツール(MSDT)が起動しないことが分かります。以上により、この緩和策が有効であることが確認できました。
緩和策2:グループポリシーでトラブルシューティングウィザードへのユーザアクセスを禁止する
本脆弱性は、Microsoftサポート診断ツール(MSDT)を用いて、任意コードが実行されます。そのため、この診断ツールへのアクセスを禁止すれば、任意コードの実行を防止することができます。この緩和策は、@gentilkiwiのツイート[8]で紹介されていました。
以下の手順で、グループポリシーを設定することで、対処が可能です。
-
グループポリシーエディター(gpedit.msc)を起動する。
-
「コンピューターの構成→管理用テンプレート→システム→トラブルシューティングと診断→スクリプト化された診断」を開く。
-
「トラブルシューティング:トラブルシューティングウィザードにアクセスして実行することをユーザーに許可する」を開く。
-
構成を「無効」に変更する(図2参照)。
実際にこの緩和策を実施し、有効性の検証を行いました。
上記の動画の通り、緩和策の実施後は、「トラブルシューティングはグループポリシーにより無効になっています。」というエラーメッセージが表示され、実行が防止されたことが分かります。以上により、この緩和策が有効であることが確認できました。
まとめ
今回は、Microsoft サポート診断ツール(MSDT)の脆弱性について紹介しました。この脆弱性を悪用することで、任意コードの実行が可能です。比較的簡単に悪用が可能なため、今後マルウェアへの感染等に利用される恐れがあります。
既にMicrosoft Defenderによって、本脆弱性の悪用を検出するシグネチャが提供されていますが、その検出を回避できたといった報告をいくつか確認しています。非常に危険な脆弱性であるため、緩和策を実施し、事前に対処しておく必要があります。
参考情報
- [1]msdt | Microsoft Docs
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/msdt - [2]
- [3]
- [4]Follina — a Microsoft Office code execution vulnerability
https://doublepulsar.com/follina-a-microsoft-office-code-execution-vulnerability-1a47fce5629e - [5]
- [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]
執筆者プロフィール
松本 隆志(まつもと たかし)
セキュリティ技術センター リスクハンティング・アナリシスグループ
マルウェア解析や攻撃者の行動分析などの業務を経て、現在はペネトレーションテスト、脆弱性診断などに従事。
これまでに Botconf や JSAC で講演。
趣味は、CTFとコーヒーを飲むこと。
執筆者の他の記事を読む
執筆者プロフィール
榊 龍太郎(さかき りゅうたろう)
セキュリティ技術センター リスクハンティング・システムグループ
ペネトレーションテスト、脆弱性診断を通じたセキュリティ実装支援、社内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認定クラウドプラクティショナーを保持。
執筆者の他の記事を読む
アクセスランキング