何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 591
  • 記事 - 18
  • コメント - 2182
  • トラックバック - 183
ニュース
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2009
サイト内検索
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

セキュリティが改善されたWindows Vista――それでも完全ではない(TechTarget)より:

Vistaの主要なセキュリティコントロール機能の1つに、ユーザーアカウント制御(UAC)と呼ばれる機能がある。UACは、プログラムのインストールなどの操作を実行する許可をユーザーに求めるダイアログボックスを表示する。ユーザーはその権限を認めるか、もしくはプログラムをインストールしないかを選択する。

ルトコウスカ氏はUACの脆弱性に関する説明の中で、「あらゆるアプリケーションインストールプログラムの実行に際して管理者権限が要求されるため、極めてシンプルなプログラム(同氏は例としてゲームの「テトリス」を挙げている)をインストールするのにも大きな権限が必要になる」と指摘する。「この要求はVistaが権限の分離で意図した狙いに反するものだ」と同氏は自身のブログでMicrosoftを批判している。

しかし、Microsoftが2006年に買収したツールスイート「Sysinternals」の開発者であるマーク・ルシノビッチ氏は、「潜在的な攻撃手段の存在は、その容易さや規模がどうであれ、セキュリティ上のバグではない」と反論する。この問題はVistaのデザインの一部であり、UACとプログラムは異なる整合性レベル(IL)で動作するため、セキュリティ上の欠陥と見なすべきではない、というのが同氏の主張だ。

「Windows Vistaで権限昇格機能とILがあえて導入されたのはなぜか。誰もがデフォルトでは標準ユーザーとして操作を行い、すべてのソフトウェアがその前提で書かれるような世界へわれわれを導くためである」と同氏は記している。

引用が長くなった。

私は、マーク・ルシノビッチ氏の言い分もわかるけど、ルトコウスカ氏の意見に賛成。特に、インストーラ自動昇格はいらない。

この、インストーラ自動昇格は、過去の資産を引き継ぐためにだけ必要なものです。「管理者として実行」をしたり、管理者としてログオンしてから実行すれば、この機能がなくてもかまわないのです。

もちろん、マーク・ルシノビッチ氏がおっしゃるとおり、誰もがデフォルトでは標準ユーザーとして操作を行い、すべてのソフトウェアがその前提で書かれるような世界へわれわれを導くためというのは、とても重要です。

ところが。このインストーラ自動昇格は、このとても重要なことを無効にしている。言い過ぎとしても、かなり危険にさらしていると思うのです。

実際、「実行時に管理者権限がいるなら、ファイル名に setup を含めればいいやん。」という話が!!!!怖すぎます。

逆に、install や setup が含まれるため、不要なのにインストーラとして動作させられる(監視される)ことも。。。

実際にはインストール動作を行わないため、「正しくインストールされませんでした」というようなメッセージが表示されます。一度「正しくインストールされました」を選ぶと二度と出てこないようですが、それでも、なんか、ねぇ?

Vista は、マイクロソフトが考えているセキュリティ対策の入り口にしか過ぎません。これは、マーク・ルシノビッチ氏の発言にも、その片鱗が伺えます。レガシーへの互換性を残している Vista および Windows Server 2008 は、まだ入り口なのです。

多くの人が、「管理者としてログオン」に慣れてしまいました。Windows 2000 で切り替えようとしたところ、多くのユーザが反対しました。そのための Millenium Edition です。XP を経て、Vista でようやく、「管理者としてログオン」を追い出せそうです(って、メジャー バージョンで見ると1つしか上がってないけど)。

「二兎を追うもの一兎も獲ず」とあります。セキュリティのために、利便性を損なわなければならない場合があります。UAC の昇格ダイアログも、今は開発者が「必要だから許可して」と出しています。これを、OS 側が「こんなことしようとしているんだけど、許可する?」と出せば、利便性は下がりますが、よりセキュアになります(情報量にも注目してくださいね)。このあたりの落としどころを、どこに持ってくるか。Vista はその試金石だと思います。


しかし、、、「完全ではない」って、なぁ。。。完全なものなど、有りはせんだろうに...

投稿日時 : 2007年6月21日 22:02
コメント
  • # re: 難しいやねぇ。。。
    RUN
    Posted @ 2007/06/22 0:13
    ん~
    >実行時に管理者権限がいるなら、ファイル名に setup を含めればいいやん
    これって、結局発想の仕方の問題かな~と思ってみた。

    管理者権限による締め付けをきつくしておけば、ユーザーはinstallやsetupが含まれるファイルだけを警戒しておけばよくなる。
    要するに、installやsetupが含まれないファイルは管理者権限が必要になるような悪さは出来ないという保障にもなるんじゃないかなと思った。

    それにinstallやsetupって含まれるのは、本来インストーラーだけの筈なわけだから、それが原因でインストーラーでないのに監視されると言うのはいちゃもんな気がするし
  • # re: 難しいやねぇ。。。
    tyappi
    Posted @ 2007/06/22 0:54
    > インストーラ自動昇格

    うん。これはいらない。
    ついでに仮想化もいらないです。

    ただ、これができたのは過去との互換性を最大限維持しようとなんとか頑張ったためで、しかたないかなぁ。。。と。

    気に入らなければ、無効化しちゃえばいいでしょうし。
    # で installer の自動検出を無効化する方法探ってたんですが、すぐにわからんです。継続調査決定。

    UAC に関しては最初の頃いらんかなぁ。。。と思ってたんですが、home user のためには絶対必要な機能ですね。
    XP で普段 Administrators group の member でない user を利用していると楽になったのがよくわかりますよ。
    とりあえず、最初は叩かれましたが Windows XP SP2 における Windows Firewall の成功のように後から振り返って見ると成功に終わるんじゃないかと思っています。

    逆に企業とかで管理されている computer の場合には、Technet Magazine で Mark Russinovich 様が書かれているように UAC なんぞは要りません。

    個人的に一番怖いのは user が警告の dialog に慣れてしまうこと。
    ここら辺難しいんですよね。

    > OS 側が「こんなことしようとしているんだけど、許可する?」

    それはそれで問題あると思います。
    Default で昇格を求めるのが果たして正解でしょうか?
  • # re: 難しいやねぇ。。。
    Jitta
    Posted @ 2007/06/22 7:45
    コメントありがとうございます。

    > 要するに、installやsetupが含まれないファイルは管理者権限が必要になるような悪さは出来ないという保障にもなるんじゃないかなと思った。
    いいえ、マニフェストで指定します。
    本文でも書いていますが、インストール動作をするか、監視されています。完全な互換性のための機能です。早ければ、次のバージョンでなくなるでしょう。

    他のところは、ちょっと考えさせてください。
  • # re: 難しいやねぇ。。。
    とっちゃん
    Posted @ 2007/06/22 13:21
    監視機能ははっきりいって不要です。

    とくに、インストーラの自動昇格なんか最初から必要なかったんじゃないの?という感じだし。

    全てがピックアップできないのならすべてをピックアップしなくても同じです。
    既に世に出て久しいものなら運用でカバーしてもらえばいいし、
    どうしても権限必要だっていうのなら、マニフェストつければいいだけのこと。

    ちなみに、監視機能だけ無効化はありません。>ちゃっぴさん


    「FirstTime User-Environment Setup Support Module.」
    ちなみにこれ...昇格必要だと思いますか?w


    仮想化については、まぁ一部のヘタレソフトに取ってはあったほうが有難いんでしょうけどw

    きちんと対応できていても、ユーザーがファイルダイアログとかでそこに保存しようとしてしまったり
    というだけで、仮想化が働いてしまいます。

    プログラム的に固定で扱ってるものはないのにも関わらず...w

    ま、マニフェストつければOKですが、Vistaが具体化する前のソフトには対処のしようもないわけでwww

    > OS 側が「こんなことしようとしているんだけど、許可する?」
    こっちは、.NET のセキュリティ属性みたいな仕組みがあればよいと思います。

    いわく、ネットにつなぐのか...
    いわく、Program Files に書き込みしたいのか...
    などなどw

    Nativeでどうやる?というのはありますけどww


    Managed についてはその辺の仕組みを一段階進めちまえば何とかなるとおもうw

    そうすれば、.NET 化のいい検討材料にできるしw
    ま、そのためには Office をなんとかしないといけないわけですがwww

  • # re: 難しいやねぇ。。。
    Jitta
    Posted @ 2007/06/22 20:27
    > ユーザーはinstallやsetupが含まれるファイルだけを警戒しておけばよくなる。
     これ、違います。
     マイクロソフトの文書(ただし、β1時点)では、「ヒューステリックに判断される」と書かれており、どんな文字列がそう判断されるのかは明らかにされていません。
    また、やってみた範囲では、ファイル名だけでなく、ファイルプロパティもみているようです。
     なんにしても、シールドアイコンが付くので、これによって「管理権が必要」であることはわかります。

    > それにinstallやsetupって含まれるのは、本来インストーラーだけの筈なわけだから
     そうでしょうか?
     確かに「セットアップの一手順」ですが、ドライバ CD-ROM の自動実行ファイルが installer.exe だったりしませんか?SetupLauncher.exe だったりしませんか?
    また、インストール後に「初期設定」を行うためのプログラムが、setupper.exe だったりしないでしょうか。
    こいつらは、インストーラではないのにインストーラだと判断され、監視対象になります。監視対象なので「昇格しますか?」と問い合わせがあるし、終了すると「正しくインストールされませんでした」と警告が表示されます。

     ちゃっぴさんも書かれていることを繰り返しますが、この「インストーラ自動昇格」は、「過去との互換性を最大限維持しようとなんとか頑張った」ものです。β段階で「いらない」と提案し、「互換性のために必要なのだ」と回答をもらっています。
    あくまでも互換性のための機能で、「誰もがデフォルトでは標準ユーザーとして操作を行い、すべてのソフトウェアがその前提で書かれるような世界」が実現されれば、あるいはその実現を早めるために、いずれ削除される機能です。


    > installer の自動検出を無効化する方法探ってたんですが、すぐにわからんです。
     仮想化を止める方法については、仮想化の説明で言及がありました。しかし、自動昇格については言及がありませんでした。そのため、用意されていないように思います。


    > それはそれで問題あると思います。
    > Default で昇格を求めるのが果たして正解でしょうか?
     今の、開発者側のアプローチとして、「この機能には管理者権限が必要なんだ」は、情報量の点、偽れるという点から、好ましくないと考えています。
    そのため、OS 側から「誰が作ったこのプログラムは、このようなことをしようとしている。これを許可するかい?」とする方が、情報量、詐欺防止の点で優れていると思います。
    ただ、こうするとユーザに、視覚的に通知できないですね。
     昨日、ノートン君がバッファ オーバーフローを起こしたのですが、これを検知したのは C++ Runtime です。このように、開発者に鍵を渡すのではなく、OS が戸を開けて招き入れる方が、より安全になるのではないかと考えます。
  • # re: 難しいやねぇ。。。
    ちゃっぴ
    Posted @ 2007/06/22 23:16
    無効化する方法みつけました。

    Installer の自動検出機能を無効にする方法
    http://blogs.wankuma.com/tyappi/archive/2007/06/22/81755.aspx

    ということで、厭なら無効化しましょうでいいかと。
    # 企業なら、仮想化とともに無効化必須ですね。

    あと、企業で UAC いらないなんて Mark Russinovich 様はおっしゃっていないので訂正します。

    企業で行うべきは user に Administrators group に所属している account を絶対に扱わせず、同時に昇格 prompt を表示させないようにするのが正しいですね。

    UAC を無効化するとせっかくの IE protected mode が利用できないので。
  • # re: 難しいやねぇ。。。
    RUN
    Posted @ 2007/06/23 15:12
    ほむ、ユーザーが警戒すべきファイルを絞り込む要素として機能しないのか、なら確かに必要性が低いな。

    >インストール後に「初期設定」を行うためのプログラムが、setupper.exe だったりしないでしょうか
    ここらへんはどうだろうね?
    setupとinstallがインストール用のファイルにつける名前なのはそれこそDos時代からのお約束毎のようなものだから、そこにあえて名前を被せた事を完全に擁護する気にならないのよね、自分の場合。

    今まで作られた物に関してはご愁傷様としか言えないし、
    これから作られるものに関しては、対象になるの分かっててつけてるんだからつけるほうが悪いでしょって事になるから。
  • # re: 難しいやねぇ。。。
    Jitta
    Posted @ 2007/06/23 21:11
    > 対象になるの分かっててつけてるんだからつけるほうが悪いでしょって事になるから
     それはマニフェストファイルで防ぐのが本筋。
  • # re: 難しいやねぇ。。。
    NyaRuRu
    Posted @ 2007/06/24 2:25
    記事の原文を見てみないと何とも言えませんが,「この問題はVistaのデザインの一部であり、UACとプログラムは異なる整合性レベル(IL)で動作するため、セキュリティ上の欠陥と見なすべきではない」の意味わかりますか?
    なんかよくわかっていない人が訳した感じがするのですが.

    Mark 氏は,昇格がセキュリティ境界でないことを以下で強く主張されています.
    http://www.microsoft.com/technet/technetmag/issues/2007/06/UAC/default.aspx?loc=jp#S8

    私なりに解釈すれば,Mark 氏がいいたいのは,UAC の昇格作業というのは,「これから起きることが一定の枠 (サンドボックス) を超えないこと」を保証するような代物ではない,ということではないでしょうか?
    たとえば「へぼいインストーラが C ドライブをまるごとぐちゃぐちゃにするのを防ぐために,Program Files 以下にのみアクセスを許可する」といったことを行いたいという需要に対して,「必要なときに管理者でログインすればよい」は役に立ちそうもありません.

    実際,以下のインストーラのバグは,UAC でも「管理者として実行」でもどうしようもなさそうですね.
    https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=240141

    ところで,以下でJittaさんおすすめとあった「ユーザーを分けてしまう方法」ですが,「管理者権限を持ったユーザーで UAC オンのまま使う」ことに対する利点って何なのでしょう?
    http://blogs.wankuma.com/shannon/archive/2007/06/23/81834.aspx#81882
  • # re: 難しいやねぇ。。。
    Jitta
    Posted @ 2007/06/24 21:07
    NyaRuRuさん、コメントありがとうございます。

    > ところで,以下でJittaさんおすすめとあった「ユーザーを分けてしまう方法」ですが,「管理者権限を持ったユーザーで UAC オンのまま使う」ことに対する利点って何なのでしょう?
     あれ?「UAC オンのまま、一般ユーザ アカウントでログオンする」といっているはずだけどなぁ?

     「UAC オンのまま、一般ユーザ アカウントでログオンする」として。

     まずは、不用意に権限を与えないということ。
    マニフェストによる昇格動作には、「管理者権限が必要」「与えられた最高特権」「昇格不要」とあります。ここで、「与えられた最高特権」ですが、一般ユーザの場合、昇格プロンプトが出ません。管理者の場合、出ます。
    不必要に管理者特権を与えられない。これが一つの利点と考えます。
     また、本文の中で、「現在の UAC の仕組みは、開発者が許可を求める形式。しかし、OS が許可を与える形式が望ましい」としているところに留意願います。
    その上で、開発者がユーザに対して「昇格させて」とお願いすることで、「何かする」という危機感をユーザに与えられると思います。
    この、「何かする」というのが必要な時というのは、ホームユースではほとんどないと思います。実際私は、家では制限ユーザ アカウントを使用しています。
    必要なのは、ソフトウェアのアップデートくらいです。Windows Update がシステム アカウントで動いているのに、Norton が制限ユーザで動いているのが不満。

     マイクロソフトは、Windows Server 2008 が、32bit の最後のサーバ OS だといっています。ということは、次のサーバ OS からは、少なくともドライバは署名が必須になります。
    この流れが、すべてのアプリケーションに及ぶと思います。
    まぁ、ガジェットなど、マイクロソフト自身が「開発者にとって高価なので一般的ではないので不要」といっている部分もありますけど。
     まぁそういう部分はまだ長く残りそうだけど、それが実現したとすると、「昇格プロンプト」という仕組みも、もう少し変わってくるように思います。
    たぶん、「頻繁に出過ぎる」という批判によって変わったところが、もう少し使いやすい状態で復活するのではないかと。(いや、どんなだったか知らないので、全くの想像なんだけど)
  • # re: 難しいやねぇ。。。
    Jitta
    Posted @ 2007/07/04 7:02
    別件で調べていたら、中さんところの「VS2005のセットアップが起動しない」という記事がひっかかった。HKLM/SOFTWAERE/MICROSOFT/Windows/CURRENTVERSION/APP PATHS (携帯から記憶を頼りに記入)に setup.exe というエントリーがあって、そこに他のソフトが書いてあると。
    自分のをみると、標準ユーザーの場合はrunasをする、という設定がされている!これの互換性なのか!?
タイトル  
名前  
Url
コメント