連載
» 2018年01月16日 05時00分 公開

その知識、ホントに正しい? Windowsにまつわる都市伝説(101):ユーザーアカウント制御(UAC)の奇妙な体験――デスクトップは暗転しない? (1/2)

Windows Vistaで導入された「ユーザーアカウント制御(UAC)」。Windows Vistaではオン/オフしかできませんでしたが、Windows 7以降は4つのレベルで挙動を調整できるようになりました。その1つに「デスクトップを暗転しない」がありますが、これが推奨されない理由、ご存じですか?

[山市良,テクニカルライター]
「Windowsにまつわる都市伝説」のインデックス

Windowsにまつわる都市伝説

Windows Vista/7のUACではデスクトップが暗転する

 Windowsでは、ローカルコンピュータに管理者権限を持つ管理者ユーザーと、管理者権限を持たない一般ユーザーを分け、日常的な作業は一般ユーザーでログオンして行うことが推奨されてきました。これは、Windowsに限らず、推奨されることです。

 しかし、Windows XPのときには、管理者権限が必要なときにログオンし直したり、「別のユーザーとして実行」や「RunAs」コマンドで資格情報を入力したりすることが煩わしかったため、日常的に管理者権限を持つユーザーでログオンしておき、管理権限を必要としない作業も実行するという利用形態が多く見られました。その結果、マルウェアへの感染がシステム全体に影響するというリスクが増えることになりました。

 Windows Vistaで導入された「ユーザーアカウント制御(User Account Control:UAC)」機能により、たとえ管理者権限を持つユーザーでログオンした場合でも、通常は権限が制限された状態(管理グループや特権割り当ての削除)でプログラムを実行するようになりました。そして、管理者権限を必要とする際に「ユーザーアカウント制御」ダイアログボックスを表示して確認を求めるようになりました。

 管理者権限を持つユーザーは「続行」ボタンをクリックすることで、権限を昇格(無効化されていた管理グループや特権の取得)できます。一般ユーザーは、管理者権限を持つユーザーの資格情報の入力が要求されます(後者は「肩越し昇格」とも呼ばれます)。たとえ管理者権限を持つユーザーであっても、その管理者権限を行使するには“ワンクッション”必要になります。単にボタンをクリックするだけのことなのですが、それだけでも悪意のある攻撃が成功する確率はずっと低くなります。

 Windows Vistaでは「ユーザーアカウント制御」ダイアログボックスが表示される際、デスクトップが暗転して、「ユーザーアカウント制御」ダイアログボックス(および入力システム)以外は操作できなくなります(画面1)。Windows Vistaでは、この既定の動作の他、UACをオフにすることができました(上記の理由によりオフにすることは推奨されません)。

画面1 画面1 Windows Vistaの「ユーザーアカウント制御」ダイアログボックス。昇格プロンプト以外は暗転して操作できない

Windows 8以降、デスクトップは暗転しない(暗転しているように見える)

 Windows 7以降は、次の4つのレベルでUACの挙動を調整できるようになりました。

  • 常に通知する
  • アプリがコンピュータに変更を加えようとする場合のみ通知する(既定)
  • アプリがコンピュータに変更を加えようとする場合のみ通知する(デスクトップを暗転しない)
  • 通知しない

 Windows 8以降もWindows 7と同じ4つのレベルで調整できますが、さらに新しい挙動が加わっています。以下の画面2は、Windows 10の「ユーザーアカウント制御」ダイアログボックスですが、Windows 8/8.1も同様です。

画面2 画面2 Windows 10の「ユーザーアカウント制御」ダイアログボックス。デスクトップは暗転しているように見えるが、デスクトップ上にあったウィンドウやタスクバーが見えない

 前出の画面1と見比べて、何か気が付きませんか。デスクトップ上に開いていたウィンドウやメニュー、タスクバーの類いが何一つ表示されていません。実は、デスクトップを暗転しているように見えて、実際には暗転しない(暗転したように見せる)挙動に変更されたのです。

 Windows VistaでUACと同時に実装された「整合性レベル(Integrity Level:IL)」と「ユーザーインタフェース特権の分離(User Interface Privilege Isolation:UIPI)」により、悪意のあるコードが「ユーザーアカウント制御」ダイアログボックスを操作することは困難になっています。

 あるプログラム(プロセス)のウィンドウを操作するには、操作元のプロセスが操作対象のプロセスと同じか、またはそれ以上のILを持つ必要があるからです。つまり、既に管理者権限を持っているプロセスでなければ、「ユーザーアカウント制御」ダイアログボックスを操作することはできません。

 別の言い方をすると、「既に管理者権限を持つプロセス」を使える人は、「ユーザーアカウント制御」ダイアログボックスを操作することに興味はないでしょう。もっと別の悪いことをこっそりとできるからです。既定のUACの設定を「アプリがコンピュータに変更を加えようとする場合のみ通知する(デスクトップを暗転しない)」に緩和することは、ILとUIPIの壁を取り払ってしまうことになるため、決して推奨されません。

 Windows 8以降の“暗転しているように見えるデスクトップ”の正体は、プログラムが実行されていたのとは別のデスクトップ(オブジェクト)です。Windowsは、異なるデスクトップ間のメッセージング(マウスカーソルの位置やキー入力などのやりとり)を許可していません。つまり、UACにはILとUIPIの壁に加えて、さらに「デスクトップの壁」が追加されたのです。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

「Windows 7」サポート終了 対策ナビ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。