Windows ExplorerはInternet Explorerとは違う(キリ)
またも新たな脆弱性…。
「Type 1 Font Parsing Remote Code Execution Vulnerability」ですか…
この脆弱性は、 Adobe Type Manager Libraryに存在しており、悪意ある細工がなされたファイルが置かれたフォルダをExplorerで開くと、コードが実行される「かも」という剣呑な代物。なぜ「かも」としているのか?については後述する。
- ADV200006 | Type 1 Font Parsing Remote Code Execution Vulnerability
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV200006 (こちらは英語版)
https://portal.msrc.microsoft.com/ja-jp/security-guidance/advisory/ADV200006 (こちらは日本語版(2020年3月25日 03:02追記))
なぜこれが「Remote Code Execution」なのか?
「Remote Code Execution」となってはいるが、この脆弱性を悪用しても、リモートから攻撃者が自由に攻撃対象をつっつけるわけではない。
何らかのファイルをメールでもWebでもいいから攻撃対象に細工したファイルを保存なりダウンロードさせ、当該ファイルを含むフォルダをWindows Explorerで開かせると攻撃が成立する。
このため攻撃者は、以下の3つの段階を経る必要がある。
- 攻撃用ファイルを作成する
- 攻撃対象がダウンロードし、ファイルの内容を確認したくなるような場所に配置する
- 攻撃対象がWindows Explorerで、当該ファイルの所在を確認するように仕向ける(コマンドプロンプトでdirコマンドなどで確認というのはダメw)
ということで、この脆弱性が使えるようになるためには、必ず「Windows Explorer」が介在する必要がある。
なんか多くの人が使うファイルを(別途)改ざんして、この脆弱性を利用するようなものに仕立て上げ、ダウンロードさせるということができれば、とりあえず成立するようなものなので、そういう観点に立てば「リモートからコードが実行可能である」と言えるのだろう。
「Windows Explorer」 is not 「Internet Explorer」(!)
上記のアドバイザリを見てると、Mitigationのところに「Windows Explorer」と出てくるが、Windows Explorerは「Internet Explorerとは別物」である*1。
Windows Explorerとは、Windowsのシェルの1つである。そう。フォルダアイコンをダブルクリックすると起動するアレである。
そんな勘違いをするドジは自分だけだと信じたいが、そういうわけにもいかないのと、仮に自分がまた間違えそうになった時のために、これを一応残しておく*2。
「Type 1 Font Parsing Remote Code Execution Vulnerability」を軽減するための具体的な方法
脆弱性の話を書いて恐怖を煽るのは本意ではないが、2020年3月24日深夜の時点でまだ脆弱性修正がリリースされていないので、軽減策を書いておこう。
上記のリンクは、これを書いている時点で英語版しかなく、しかも「英語版Windows」での対処方法しか書かれていないので(当然)、日本語Windowsでどうすりゃいいの?という読み替えがちょっと面倒。
なので、以下でざざっと書いてみる。
やることは「プレビュー」を無効にし、攻撃者が脆弱性を突く余地をなくすこと
Windowsでファイルのプレビュー*3をしようとすると、脆弱なライブラリを使い、結果コード実行に至る、というのがどうも本質のようなので、プレビューをなくすために何をすればいいのか?というにが「Workaround」に記述されている。
Windows Server 2016, Windows 10, and Windows Server 2019でのWorkaroundで記述されているのは、以下のこと。Windows 8.1とかでは用語が違うので、また確認してから追記してみることにする。
- Windows Explorerを起動し、「表示」タブを選択する
- 「プレビュー ウィンドウ」と「詳細ウィンドウ」のどちらも選択されない状態にする(clearする)
- オプションをクリックし、「フォルダと検索のオプションを変更」を選択する
- 「表示」タブを選択する
- 「詳細設定」中の「常にアイコンを表示し、縮小版は表示しない」をチェックし、有効にする
- Windows Explorerのすべてのインスタンスを閉じて、変更を有効にする
具体的にやる方法は、以下のような感じ。
手元の環境で、Windows 10の場合はこうやるんだな、というのを確認した。
とりあえず、(Windows 10とかで)やることはこんな感じなので、何かの参考になれば幸いである。
Window 8.1とWindows 7の場合(これ以降は、2020年3月25日03:32にまとめて追記)
もともとのアドバイザリは、Windows 8.1のWorkaroundとWindows 7のWorkaroundをまとめているが、Windows 8.1は書かれている方法ではWorkaround適用を行えない。「プレビューウィンドウ」と「詳細ウィンドウ」の無効化をする方法が、Windows 8.1の場合はWindow 10の場合と近いので、留意のこと。
具体的には、以下のような感じ。
Windows 7は以下のような感じになっている。
こちらは、Windows Explorerを起動後、「整理」→「レイアウト」と進めばOKだが、そもそもEOLなので、とっとと退役させることをおすすめする*4。
他の対策は?~WebDAVクライアントを無効にする、ATMFD.dllをリネームする、etc...
他にも対策はあるが、これは何をどう突っ込んでいいのかという感じ。
- WebDAVクライアントを無効にする
これは、WebClientサービスを無効にする、ということと同義。
でも、プレビューとかさせなければ済むので、フォルダオプションでプレビューウィンドウとか詳細ウィンドウを表示させなければいいようにも見える。
それ以前に、WebDAVクライアントを使う場合には、相応の理由があるはずなので、業務影響を考慮して無効化する必要がある。使わなきゃならないけど脆弱性は緩和したい場合は、フォルダオプションを変更すればいいはずだけど、もし万全を期してというのであれば、無効化した上で代替策を提示しよう。
その際には、以下のリンクが参考になる。
- ATMFD.dllをリネームする
これは、脆弱なAdobe Type Manager Libraryの実体であるATMFD.dllをリネームして、脆弱なライブラリを使わないようにする対策である。
ある意味本質的(?)とも言えるけど、削除してもいいんじゃないか?とも思うのは気のせいだろうか…。 - レジストリ編集し、ATMFD.dllを無効にする(Windows 8.1以前で有効らしい)
有効とあるが、「次のサブキーに移動し」と書かれているにもかかわらず、移動先のサブキーがないので、(試すならば)サブキー作成の上、値を書き込む必要がある。
Outlookのプレビューには影響するのか?~回答:影響しません
一つだけ気になったけど、影響なしとのことだったので。
Outlookのプレビューは、また別の仕組みを使っているという認識なので、これはまぁ正しいということで。
まとめ~今回の件も、アドバイザリを適切に読み解けば、「何がヤバくて」「どうすればいいか」という正しい恐れ方と当座の対策は見えてくるので落ち着こう
いろいろ書いたが、個人的に思うのは「Remote Code Execution」と書かれているからといって大騒ぎしても下手を打つだけなので、適切に対処したいのであれば、アドバイザリはちゃんと読もう。