** 本記事は、Yet another zero-day (sort of) in Windows “search URL” handling の翻訳です。最新の情報は英語記事をご覧ください。**
Follina という奇妙な名前の脆弱性による混乱が落ち着いた頃に、新たな Windows のゼロデイセキュリティホールが登場しました。
しかし、これはゼロデイ脆弱性そのものではなく、あくまで「一種の」脆弱性と言えるものです。
ソフォスでは、今回の事例が一部で騒がれているほど驚異的で危険なものだとは確信していません (だからこそ、上記では曖昧な表現をしています)。しかし、当然ながら、Windows が扱う数多くの独自の URL タイプを悪用する方法の研究が盛んになっています。
URL スキームの再確認
前回の事例を復習しましょう。
Follina バグは、現在では CVE-2022-30190 として知られており、Windows OS がサポートする風変わりで非標準的なURL に関係します。
簡単に言うと、ほとんどの URL は、ユーザーやユーザーが使用しているソフトウェアに対して、アクセス先、アクセスの仕方、アクセス後に要求するファイルを指示する構造になっています。
たとえば、以下の URL があったとしましょう。
https://example.com/ask/forthis.item
この URL は、https: というスキームを使って example.com
というサーバーに接続し、/ask/forthis.item
というファイルを要求するように指示しています。
同様に以下の URL があったとしましょう。
file:///Users/duck/thisone.txt
この URL は、ローカルコンピューターの /Users/duck
ディレクトリにある thisone.txt
というファイルを表示するように指示しています。
また、以下の URL は、
ldap://192.169.1.79:8888/Runthis
TCP ポート 8888 経由で 192.168.1.79
に位置するサーバーに LDAP ルックアップを行い、Runthis
というオブジェクトを検索するように指示しています。
しかし、Windows には「プロトコルハンドラ」と呼ばれる、独自の URL スキーム (最初のコロンより前の文字) を記した長大なリストが搭載されており、特殊な URL を参照することでさまざまな非標準の活動を引き起こすことができます。
たとえば、Follina バグは、システム診断に関連する ms-msdt:
という URL スキームを悪用したものでした。
この ms-msdt:
スキームは、「Microsoft サポート診断ツール (MSDT) を起動する」ことを意味します。今では無意味な機能のようですが、実装された当時の名残だと考えられます。Microsoft サポート診断ツールは、MSDT.EXE というプログラムであり、動作不良が生じたアプリのトラブルシューティングをする際に、一連の基本手順を実行します。
しかし、多数のサイバー犯罪者によって、Outlook や Office で開かれたドキュメントや電子メールに埋め込まれた URL を用いて ms-msdt:
プロトコルハンドラが悪用できることが発見されています。
不正な ms-msdt:
URL を利用すると、攻撃者はコンピューター上で秘密裏に MSDT.EXE アプリを起動するだけでなく、不正な PowerShell スクリプトコードを大量に送り込み、任意のマルウェアを強制的に実行できます。
コンピューターのトラブルシューティングを助けるはずの MSDT が、攻撃者によってマルウェアの感染に悪用されているのです。
非標準的な URL
Microsoft に搭載されている、奇妙で不思議な Windows 固有の URL スキームは ms-msdt:
だけではないようです。
標準、非標準を問わず、数多くの「ヘルパー」URL スキームが存在し、Windows レジストリの項目を経由してプロトコルハンドラに連携されています。
これらのレジストリキーは、誰かが関連する URL へのアクセスを試みた時に、特殊な動作が発生することを意味します。
たとえば、有名な例では、https:
から始まる URL にアクセスすると、ブラウザが起動していない場合に自動的に起動されます。
また、上記で説明したように、ms-msdt:
から始まる URL にアクセスすると MSDT.EXE が起動します。しかし、今週の初めにこの事実を知っていた人はほとんどいなかったでしょう。(ソフォスでも知られておらず、Follina バグが広まるまでこの種の URL にはまったく馴染みがありませんでした。)
最近、@hackerfantastic というサイバーセキュリティ研究者が、search-ms:
と呼ばれる Windows の URL スキームが ms-msdt:
と同様、サイバー犯罪者による攻撃に悪用される可能性があることを明らかにしました。
上記の通り、予期せぬリモートコードの実行に直接関係するわけではないため、「ゼロデイ脆弱性」そのものであるとは言い難い面もありますが、ゼロデイ脆弱性に類するものであり、この種の URL が機能しないようにブロックする必要があるかもしれません。
search-ms: URL の悪用
簡単に言うと、search-ms:
URL は自動で Windows 検索をポップアップし、実行します。手動でタスクバーの虫眼鏡アイコンをクリックし、文字を入力して結果を待つのと同様です。
この URL を DOC ファイルや RTF ファイルなどのドキュメントに埋め込むことで、攻撃者は 標的にドキュメントを開かせ、関連する一見正式な検索結果のリストを自動的にポップアップさせることができます。この手法は Follina バグと同様です。
Microsoft Office 2019 / Windows 10 / search-ms: URI handler exploitation and post-exploitation steps to SYSTEM. pic.twitter.com/r512uF3vQ4
— hackerfantastic.crypto (@hackerfantastic) June 1, 2022
攻撃者は細工されたドキュメントに特別な URL を埋め込むことで、検索バーのタイトルに表示されるテキストや、表示されるファイルを事前に選択できます。
表示されるファイルは C:\Users\duck\mypreso.ppt
のようにローカルに保存されているファイルである必要はなく、\\live.sysinternals.com\psshutdown.exe
や \\example.org\dodgy.exe
のようにリモートファイル (UNC パス) であっても構いません。
もちろん、検索結果が表示されるだけで自動的に悪意のあるファイルが開かれるわけではありません。あくまで「一種の」ゼロデイ脆弱性であるとしたのはこのためです。
上記の Twitter の動画からわかるように、ファイルを選択し、ダブルクリックで実行し、表示されたセキュリティの警告に対処する必要があります。
しかしながら、この手法は、怪しげな Web リンクを記載した電子メールを送信する、という従来の方法よりももっともらしく見えるため、より危険性が高くなっています。
ポップアップするウィンドウはブラウザでも電子メールのクライアントでもありません。
その代わりに、ローカルコンピューターで普通に検索を実行した時と同様の画面が表示されます。一見して Web リンクだとわかるようなものは一切含まれていません。
対策
- ファイル名をダブルチェックしてからファイルを開きましょう。特に、自ら意図して検索を開始したのでない場合は、Windows の検索ダイアログに表示されるファイルが信頼できるローカルファイルだと思い込まないようにしましょう。少しでも疑問を感じたら、そのままにしておきましょう。
- Windows のファイル拡張子を表示するオプションをオンにしましょう。厄介なことに、Windows はデフォルトでファイル拡張子を表示しないようにしているため、たとえば
risky.exe
のようなファイルは単にrisky
として表示されます。つまり、readme.txt.exe
のように意図的にリネームされたファイルも、一見して無害そうなreadme.txt
として表示されることになります。エクスプローラーを開き、[表示] > [ファイル名拡張子] から設定を変更できます。 - リモートファイルの名前は、Web リンクのように明確だとは限りません。Windows では、ドライブ名または UNC パスからファイルにアクセスできます。UNC パスは、
\\MAINSRV
のようにサーバー名や内部ネットワークを参照することが多いですが、\\files.example.com
や\\198.51.100.42
のようにインターネット上のリモートサーバーを参照することもできます。UNC パスで指定したリモートファイルをダブルクリックすると、指定したサーバーからバックグラウンドでファイルがダウンロードされるだけでなく、ダウンロード完了後は自動的に開かれます。 - レジストリエントリ
HKEY_CLASSES_ROOT\search-ms
の削除を検討してください。この方法は、Follina バグに対してms-msdt
エントリを削除するのに類似した対応策です。エントリを削除することにより、search-ms:
URL をクリックした時に検索ウィンドウが開かなくなります。レジストリエントリを削除してしまえば、search-ms:
URL は特別な意味を持たなくなるので、クリックしても何も起きなくなります。 - 本サイトをこまめに確認してください。今後数日から数週間のうちに、Windows 独自のURL がサイバー犯罪者によって悪意のある行動、あるいは直接的な破壊目的で使用されたり、単に現状のシステムの限界に挑戦している研究者によって発見されたりして、再度サイバーセキュリティのニュースになる可能性は十分あります。