CVE-2021-40444 の検証と緩和策・回避策について

はじめに

(2021/09/15) RTFの検証およびWindowsUpdateの検証結果を追加

この記事はゼロデイ攻撃も観測されている、CVE-2021-40444について、PoCおよび緩和策を検証したものである。

今回はRCEによって電卓が起動するdocx文書ファイルを使用したところ、検証結果は次のとおりである。

  • Wordの保護ビューで開く場合、電卓は起動しない
  • グループポリシー設定やレジストリ設定は初めて開いたときは電卓は起動しないが、二回開くと電卓が起動した。

結論としては、保護ビューで開く、もしくは外部への通信が必要となるので、通信しない環境で開く(クローズにした仮想マシン)のがよさそう。 2021年9月の月例アップデートにてパッチが適用されたため、速やかに適用するのがよい。(2021/9/15追記)

また、この文書ファイルだけではないが、安全なことを確認できていないファイルは開かないことが重要である。 (安全と判断するのが難しくはある)

CVE-2021-40444についての簡単なまとめ

CVE-2021-40444については、すでに様々な記事にて解説はされているが、MSHTMLという実行ファイルにかかわる脆弱性であり、実際の攻撃としては、次の手順のものが確認されている。

  • 細工された.docxファイルを開く
  • 細工された.docxファイルが外部にあるHTMLファイルを取得する(通信を行う)
  • 取得したHTMLファイルをMSHTMLが実行し、cabファイルを悪用して攻撃する。

PoCの検証

今回はGithubに挙げられていた下記のPoCで検証した。このPoCでは試すと電卓が起動する。

GitHub - lockedbyte/CVE-2021-40444: CVE-2021-40444 PoC

検証した環境としては次の通り

  • Kali Linux
    • Windows 10で開くdocxファイルの作成
    • 開いたdocxが通信するサーバの役割(python3 -m http.server 80で実現)
  • Windows 10
    • docxを開くやられ環境

実際に実行すると次のようになる。(注:実際に実行した後に位置調整はしている)

f:id:kataware8136:20210912135332p:plain
PoCの検証

緩和策、回避策の検証

ここからはMicrosoftの緩和策、回避策を検証する

緩和策としては、保護ビューおよびApplication Guard for Officeがあるが、Application Guard for OfficeはMicrosoft365 Enterpriseの機能であるため、個人環境の私は検証できていない。

回避策としては、グループポリシーの設定もしくはレジストリの設定となっている。

保護ビューによる緩和策

保護ビューは「インターネットから取得したファイル」「安全でない可能性のある場所のファイル」「Outlookの添付ファイル」に対して制限モードで開く。 どのファイルを保護ビューで開くかは「オプション」→「トラストセンター」→「保護ビュー」で確認できる。

f:id:kataware8136:20210912140539p:plain
保護ビューについて

今回は仮想マシンで検証していたため、PoCで作成したファイルは保護ビューの対象ではないため、ZoneIDを付与して保護ビューで起動するように設定する。

ZoneIDについては次の@soji256氏のブログが参考になる。

ZoneID を付与する方法など - setodaNote

ZoneIDを付与して保護ビューで開いた結果、電卓は起動せず、次の通りとなった。

f:id:kataware8136:20210912141142p:plain
ZoneIDを付与した結果

編集を有効にするボタンを押すと電卓が起動するため、編集を有効にするボタンは押さないようにすることが大切である。

グループポリシーおよびレジストリによる緩和策

グループポリシーおよびレジストリにてActiveXコントロールを無効化するとのこと

グループポリシーの場合、[コンピュータの構成]→[管理用テンプレート]→[Windowsコンポーネント]→[Internet Explorer]→[インターネットコントロールパネル]→[セキュリティページ]の[インターネットゾーン]、[イントラネットゾーン]、[ローカルマシンゾーン]の[署名済みActiveXコントロールのダウンロード]および[未署名のActiveXコントロールのダウンロード]を無効化すればよい。

f:id:kataware8136:20210912143607p:plain
グループポリシーの設定

この設定をしたうえで、文書ファイルを開いた結果、電卓は起動しなかった。

f:id:kataware8136:20210912150747p:plain
グループポリシー設定後に開いた場合

なお、このファイルを閉じて再度文書ファイルを開くと電卓が起動した。

f:id:kataware8136:20210912150938p:plain
グループポリシー設定後の二回開いた場合

また、レジストリの設定は下記の内容のテキストデータを.reg拡張子で保存し、実行する。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0]
"1001"=dword:00000003
"1004"=dword:00000003

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1]
"1001"=dword:00000003
"1004"=dword:00000003

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2]
"1001"=dword:00000003
"1004"=dword:00000003

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3]
"1001"=dword:00000003
"1004"=dword:00000003

レジストリを反映させた後は、再起動を行う。

これを設定した後に文書ファイルを開いたところ、グループポリシー設定時と同様に初めて開いた場合は電卓が起動しなかったが、一度文書ファイルを閉じたあと再度開くと電卓が起動してしまった。

グループポリシーおよびレジストリ設定した後、二回開くと電卓が起動するという点について、なぜ起動してしまうのかは不明。 私の設定が何か間違っている可能性はあるかもしれないが、あまり過信をしてはよくない可能性はある。

RTFの検証結果(2021/9/15追記)

上の節で作成した、docxファイルをrtfに保存しなおして、RTFでのCVE-2021-40444がどうなるかを検証した。

結果としては、docxと同様にRTFファイルを開くと電卓が起動、また@buffaloverflow氏のツイートにあるようにExplorer上のプレビューで開いた場合にも電卓が起動することを確認した。Explorer上のプレビューで起動する動画は次の通り

Windows Update後にどうなるかを調査した結果(2021/9/15追記)

2021年9月の月例アップデートでは、このCVE-2021-40444のパッチが適用される。

Windowsのゼロデイ脆弱性2件に対処 ~Microsoftが2021年9月のセキュリティ更新を発表 - 窓の杜

Security Update Guide - Microsoft Security Response Center

アップデートを適用した後にdocxとRTFを開いてみた(RTFはexplorerでのプレビューも)が、どちらも電卓が起動しないことを確認できた。

まとめ

  • CVE-2021-40444について、電卓を起動するPoCを検証した
  • 緩和策にある保護ビューで開いた場合には電卓が起動しないことを確認した
  • 回避策にあるグループポリシーおよびレジストリ設定の回避策を行った際は、初めて開いた際は電卓は起動しなかった
    • なお、二回開くと電卓が起動したが、この原因・理由については、知識不足故不明

(以下2021/9/15追記) * RTFが使われた場合、開くと電卓が起動する他、Explorer上のPreviewで見ても、電卓が起動することを確認した。 * 2021年9月の月例アップデート適用後にdocxおよびrtfを開いても電卓は起動しなかった。