Microsoft の Web レンダリング MSHTML にゼロデイ脆弱性

** 本記事は、Windows zero-day MSHTML attack – how not to get booby trapped! の翻訳です。最新の情報は英語記事をご覧ください。**

現在のところ詳細は不明ですが、Microsoft は、Microsoft MSHTML のリモートコード実行 (RCE ) の脆弱性 (CVE-2021-40444) について、Office ユーザーに注意喚起をしています。

この脆弱性にはまだパッチが当てられておらず、いわゆるゼロデイ脆弱性になっています。ゼロデイ (0 日) とは、「パッチが当てられた 0 日後に攻撃が発生した」ということを意味します。

つまり、攻撃の方が早かったということです。.

現在判明している限り、脆弱性の悪用は以下のような手順で行われます。

  1. 電子メールの添付ファイルや、攻撃者が管理する Web リンクからのダウンロードなどでインターネットから入手した、細工された Office ファイルをユーザーが開きます
  2. 細工されたドキュメントには、ActiveX コントロールがアドオンコードとして埋め込まれています。このコードは、本来コンピューターに無制限にアクセスすることはできません。
  3. 埋め込まれた ActiveX コードは (通常は Web ページの表示に使用される) Windows の MSHTML コンポーネントを起動し、上記の脆弱性を利用して Windows をデスクトップから操作できる程度の権限を自分自身に与え、得た権限を利用して任意のマルウェアを書き込みます。

MSHTML 自体は十全な機能を備えた Web ブラウザではありませんが、Internet Explorer の中核をなす「Web エンジン」を形成しており、HTML ファイルを必要に応じて表示することのできるブラウザ、あるいはブラウザに類似したアプリケーションを作成するために使用できます。

HTML は Web ブラウジングと結びつけられることが多いですが、ブラウザでないアプリでも Web コンテンツをレンダリングして表示するのに活用されています。たとえば、ドキュメントやヘルプファイルを便利で見栄え良く表示したり、ユーザーによるサポートチケットへの記入、提出を補助したりするのに用いられます。

この「最低限の機能を備えたミニブラウザ」というコンセプトは Windows だけでなく Google の Android や Apple の iOS にも見られ、それぞれ Blink および WebKit というコンポーネントが、Microsoft プラットフォームの MSHTML と同等の機能を提供しています。Firefox や Thunderbird などの Mozilla 製品については、Gecko と呼ばれるコンポーネントが対応しています。iOS については興味深いことに、Apple は自社製のブラウザである Safari のコアに WebKit を採用しているだけでなく、他のすべてのベンダーのブラウザや類似したアプリケーションにも WebKit の使用を義務づけています。そのため、iOS 版の Firefox には (半強制的に) WebKit が搭載されています。

ブラウジング以外にも使われる HTML

HTML レンダリングの脆弱性は、ブラウザ本体やユーザーによる Web ブラウジングだけに影響を与えるものではありません。

サイバー犯罪者は、たとえブラウザが開かれていなくても OS の Web レンダリングコードの脆弱性に対して多種多様な攻撃を仕掛け、悪用を試みます。

完全にブラウザのコントロールを奪えるほどの脆弱性ではなかったとしても、別のアプリケーションでその脆弱性を悪用することでアプリをクラッシュさせたり、コントロールを奪ってマルウェアを埋め込んだりできるかもしれません。

CVE-2021-40444 はまさにその例に該当し、ブラウザで直接閲覧する Web ページではなく、Word や Excel などに読み込まれた Office ファイルを介して攻撃が行われます。

Microsoft は Internet Explorer の使用を推奨しておらず、「Microsoft Edge への移行をおすすめしています」と述べていますが、Internet Explorer のコアをなす Web レンダリングエンジン MSHTML の機能および脆弱性は、依然として Windows OS 自体に組み込まれています。

対策

  • 不審なドキュメントは開かないようにしましょう。たとえ届いたメールやドキュメントが自身の興味や仕事の内容、研究内容に関わるものであっても不用意に中身を見ようとはしないでください。たとえメールの内容があなたに関わることであっても、送信者があなたのことを知っている証拠にはなりませんし、信頼に足るということにもなりません。攻撃者は職場の Web サイトや SNS の投稿からあなたの情報を得たのかもしれません。
  • 誘惑に負けて Office の保護ビューを無効化しないようにしましょう。デフォルトの設定では、インターネット経由で入手した Office ドキュメントは、入手経路を問わず、Visual Basic マクロや ActiveX コントロールなどのアクティブコンテンツが実行されないように開かれます。ページの上部に黄色のバーが表示され、危険な可能性のあるドキュメントの機能がアクティブになっていないことが示されているときは、たとえドキュメント本文が保護ビューの解除を促していたとしても [コンテンツを有効化] ボタンを押すのは控えましょう。
  • 外部から入手したすべてのドキュメントに対して保護ビューを一切無効化しないことを検討してください。システム管理者はネットワーク全体のどのユーザーに対しても [コンテンツを有効化] しないように設定することができます。理想的には、外部ドキュメントのいわゆるアクティブコンテンツを一切信頼せず、アクティブコンテンツを有効化しなければ、さまざまな攻撃を回避することができます。
  • MSHTML Web レンダリングエンジンを使用する ActiveX コントロールを無効にしましょう。システム管理者は、ネットワーク全体のレジストリ設定から設定を適用することができます。この設定を行うと、入手したドキュメントに含まれる ActiveX コントロールは、そのドキュメントが保護ビューで開かれているかどうかにかかわらず、全く動作しなくなります。Microsoft も、CVE-2021-40444 に備えてこの設定を行うことを推奨しています。
  • Office による ActiveX の使用を無効化しましょう。Office 上で ActiveX を使用する必要が全くない場合は、完全に無効化することで攻撃を回避できます。
  • Microsoft からのパッチに注目しましょう。次の火曜日 (2021 年 9 月 14 日) は 2021 年 9 月の「パッチチューズデー」です。それまでに本格的な修正プログラムが発表されることに期待しましょう。

有効なグループポリシー設定およびレジストリエントリ

1.Internet Explorer (上述の通り、MSHTML によりコアが形成されています) 内の ActiveX を無効にするには、Microsoft の CVE-2021-40444 に関するセキュリティアップデートガイドに記載されているレジストリの変更方法に従ってください。

上記の修正を適用しており、ソフォス製品を使っている方は以下のようなクエリを送信することで Sophos Live Discover ツールを介して修正が適用されていないネットワーク上のコンピューターを検索できます。

SELECT name, type, data, datetime(mtime, 'unixepoch', 'localtime') AS registryWriteTime,
CASE
   WHEN data = '3' THEN 'ActiveX set to DISABLED as recommended by Microsoft'
   ELSE 'ActiveX setting does not match the Microsoft recommendation'
END AS mitigationStatus
FROM registry
WHERE path LIKE 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\%\1001' 
OR path LIKE 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\%\1004'

2.Windows のローカルグループポリシーエディターで以下の設定を確認しましょう。

スタンドアロンのコンピューターではアプリケーション gpedit.msc を用いて、あるいは Windows ドメインを管理している場合はグループポリシー管理コンソール (Group Policy Management Console) アプリで、ローカルのグループポリシーを変更することができます。

以下の VBA 設定 (VBA は Visual Basic for Applications の略で、「Office マクロコード」とも呼ばれます) は、ActiveX に依存するゼロデイ脆弱性 CVE-2021-40444 に直接関係するものではありませんが、Microsoft Office のセキュリティ対策の一環として検討する価値はあります。

ユーザーの構成 > 管理用テンプレート > 
   Microsoft Office 2016 > セキュリティ設定 >
      すべての ActiveX を無効にする                 <--ActiveX が一切必要ない場合
      Office アプリケーションの VBA を無効にする <--ドキュメントマクロを使わない場合

ユーザーの構成 > 管理用テンプレート >
   Microsoft Excel 2016 > Excel のオプション > セキュリティ > セキュリティ センター
      インターネットから入手した Office ファイル内のマクロの実行をブロックします

ユーザーの構成 > 管理用テンプレート >
   Microsoft Excel 2016 > Excel のオプション > セキュリティ > セキュリティ センター
      インターネットから入手した Office ファイル内のマクロの実行をブロックします
      
ユーザーの構成 > 管理用テンプレート >
   Microsoft Powerpoint 2016 >  Powerpoint のオプション > セキュリティ > セキュリティ センター
      インターネットから入手した Office ファイル内のマクロの実行をブロックします   

ユーザーの構成 > 管理用テンプレート >
   Microsoft Word 2016 >  Word のオプション > セキュリティ > セキュリティ センター
      インターネットから入手した Office ファイル内のマクロの実行をブロックします   

上記の Office の設定はデスクトップやサーバーに Office がインストールされていても、デフォルトでは表示されません。Microsoft の Administrative Templates for Office 365, Office 2019 and Office 2016 files (Office 365、Office 2019 および Office 2016 のための管理用テンプレート) を手動でインストールする必要があります。

上記のファイルをダウンロードし、デスクトップなどに解凍した後、admx ディレクトリとそのサブディレクトリの中身を C:\Windows\Policy Definitions にコピーしてください。


3.gpedit を用いなくても直接コンピューターのすべての ActiveX を無効にできます。Windows のレジストリを自分で編集することに抵抗がなければ、レジストリエディターで以下のエントリを作成してください。

HKEY_CURRENT_USER > SOFTWARE > Policies > Microsoft >   <--このキーははじめから存在しています。
   office > commmon > security >                        <--入れ子状のサブキーの作成には「新規-キー」を使用します。                   
      [DWORD] disableallactivex = 1                     <--「新規- DWORD (32 ビット) 値」を使用してください。

4.CMD.EXE (通常のコマンドプロンプトウィンドウ) から以下のコマンドを使用して該当するレジストリエントリを確認し、設定することができます。

> reg query HKCU\SOFTWARE\Policies\Microsoft\office\common\security ^
    /v disableallactivex 
ERROR: The system was unable to find the specified registry key or value.

> reg add HKCU\SOFTWARE\Policies\Microsoft\office\common\security ^
    /v disableallactivex ^
    /t REG_DWORD /d 1
The operation completed successfully.

> reg query HKCU\SOFTWARE\Policies\Microsoft\office\common\security ^
    /v disableallactivex 
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\office\common\security
    disableallactivex    REG_DWORD    0x1

ソフォスの検出名

電子メール、ファイアウォール、エンドポイント保護製品などのソフォス製品は、今回の脆弱性、および脆弱性を利用して配信されたマルウェアを検知し、ブロックすることができます。

検出された際に製品のログに記載される名称は以下の通りです。

Exp/2140444-A     
Troj/JSExp-W     
Troj/Cabinf-A
Troj/Agent-BHRO
Troj/Agent-BHPO

攻撃者が配信するマルウェアは攻撃ごとに異なる可能性があること、また、特定の Troj/Agent-* ゾンビマルウェアの亜種は、他の方法でも配信される可能性があることに注意してください。

つまり、Exp/2140444-A を利用した攻撃であっても必ず Troj/Agent-BHROTroj/Agent-BHPO がネットワーク上に存在するとは限りません。一方で、Troj/Agent-BHROTroj/Agent-BHPO だけが存在していても、Exp/2140444-A の悪用が原因だとは限りません。