職場で、ちょっとした監視アプリを作ろうかという話があがった。その中に、「ガジェットはどうか」という話があった。その関係で、調べた成果が静的サイトにあがっている。
あるドキュメントを訳していてぶつかった疑問。なんというか、ええのか?
Internet Explorer 7 には、保護モードというモードがある。これ、サイトごとに設定できるなら、とても有効なのに。。。要は、保護モードが有効な「ゾーン」だと、ActiveX やスクリプトが動作しない。妙なものを入れられたり、スクリプトから Cookie を覗かれたり、WMI オブジェクトを作ってマネージメントを勝手に行われるなどのことがない、というわけだ。
で、その上で、ガジェット。
ガジェットは、極々荒く言うと、Windows Sidebar が簡易ウェブ サーバ(あるいはブラウザ)となって実行される HTML コンテンツとスクリプト、である。.gadget ファイルは、いくつかの HTML ファイルと、設定ファイル、スクリプト ファイルなどを ZIP 圧縮したものだ。拡張子を .zip に変更すれば、XP でも中身を確認できる。ごく一部なら、XP でも IE を使って実行できる。
さて、問題の文書がこちら、「Windows Vista Sidebar Security」。この中に、こんなことが書いてある。
Because code signing certificates are costly and not commonly used among developers who are likely to create HTML gadgets, there are no requirements that gadgets must be digitally signed.
コード署名証明書は、HTMLガジェットを作製するであろう開発者にとって、値段が高くて一般的に用いられないので、ガジェットはデジタル署名されなければならないという必要はありません。
ふんふん。これは、まあ、いい。確かにコード署名は高いし、そもそも個人には発行しない機関が多い。で、次がこれ。
HTML content in the Sidebar is downloaded first as part of a package of resources and configuration files, and then executed from the local computer. The download process is similar to downloading applications (.exe files) from the Internet.
サイドバーのHTMLコンテンツは、リソースと構成ファイルからなるパッケージの一部として、最初にダウンロードされ、そしてローカルコンピュータから実行されます。ダウンロード・プロセスは、インターネットからアプリケーション(.exeファイル)をダウンロードすることに似ています。
なるほど。実行ファイルと同じように、ダウンロードして、ローカルで実行されるわけです。ローカルで実行すると言っても、IE6 SP2 以降であれば、ローカルで実行される ActiveX を遮断する機能も持っています。特に問題はないでしょう。
問題はない?本当に?
問題がないなら、こんなエントリを作らない。というわけで、仰天の内容は次。
Because gadgets have a similar download and installation process to other executable code, it is appropriate to provide gadgets with a similar set of capabilities when run. The MSHTML runtime is configured like the set of permissions given to HTML Applications or the Local Machine Zone security configuration. For example, gadgets are configured in several ways that are different from web pages. Because gadgets are treated as executable code, they can create any installed ActiveX objects because the option "Initialized and script ActiveX controls not marked safe for scripting" is configured as such. Another option configured differently from web pages is "Access data sources across domains" because gadgets can be more useful when they aggregate data from various locations.
ガジェットには他の実行可能コードに類似したダウンロードとインストールプロセスがあるので、ガジェットが動作するとき、類似したセキュリティ設定を提供することは適切です。MSHTML ランタイムは、HTML アプリケーションまたはローカル マシン ゾーン セキュリティ構成に与えられる許可セットのように構成されます。たとえば、ガジェットはウェブ・ページと異なるいくつかの方法で構成されます。ガジェットは実行可能コードとみなされるので、「スクリプトを実行しても安全だとマークされていない ActiveX コントロールの初期化とスクリプトの実行」オプションがそのように構成され、ガジェットはインストール済みのすべての ActiveX オブジェクトでもつくることができます。ウェブ ページと異なって構成されるもう一つのオプションは、いろいろな場所からのデータは、ガジェットがより役に立つものとなり得ることがあるので、「ドメインを超えてデータ送信側にアクセスします」ことです。
ええのか?ホンマにええのか?なんか、間違ってないか?
HTML とスクリプトをセットにして送りつけ、「これ見て」と送った場合、スクリプトは実行されない。しかし、ガジェットとして送った場合、そのスクリプトは実行される。
ええのか?ホンマにええのか?なんか、間違ってないか?
あ、メールで送ったのでは、実行されないかもしれない。メール サービスによっては、メールの添付ファイルにあるスクリプトを削ってしまうものがあるようだ。だから「ガジェットをメールで送るな、ウェブ サイトからダウンロードできるようにしろ」と、開発概要に書いてある。
救いは、ガジェットの配布プロセスでは ActiveX の登録はできないため、新たな ActiveX は実行されない、ってことか。また、署名の有無にかかわらず、ガジェットから ActiveX をダウンロードすることはできない。ガジェットだけ侵入させて、そのガジェットによってダウンロードさせてやろう、ということはできないわけだ。
しかし、WMI はオブジェクト化され、実行できる。もちろん、システムの設定を変更するようなものは、UAC に引っかかるが。とはいうものの、ファイルの一覧くらいはとれる。どんなものがインストールされているのかわかる。ユーザ(のアカウント)が所有者であるファイルを消すこともできる。
一体全体、「Trust Worthy Computing」は、どこに行ってしまったのやら。いや、きちんとレビューされたならそれはそれでいい。問題は、レビューされた内容がアナウンスされていないこと。レビューで出てきたセキュリティ リスクに対して、どのように考え、どう対処したのかがわからないこと。
そんなわけで。やはり「標準ユーザでアカウントを作って常用」「UAC はオンで!」「バックアップは数世代保存」を、自衛のために実行して欲しい(開発環境は除く)。
あ、ドメイン超え通信は、UAC や標準ユーザ アカウントで何とかできる問題ではない。その辺は、ファイヤー ウォールで何とかするとか、新しいソフトを入れたらしばらくは妙な通信をしていないかネットワーク トラフィックを監視するなど、しなければならない。
投稿日時 : 2007年7月12日 21:44