|
|
「攻撃可能なポイントを最小限に」−−Service HardeningWindows Vista Security IN & OUT
|
![]() [画像のクリックで拡大表示] |
ただ,SDLにしたがってWindows Vistaの脅威分析をした際,Windows XPのような,サービスを起動するアカウントだけに頼った権限の管理では粒度が粗すぎると判断された。より細かく権限を管理するために,必要な権限 (RequiredPrivilege)と呼ばれる情報を各サービスで持つことにした。この結果,サービスごと(厳密にはサービスをホストするsvchost.exeの単位)に,起動アカウントと権限を制御できるようになった。Local Systemで起動しても,その中で使用しない権限がある場合には起動と同時にその権限(特権)を破棄し,制限付きのLocal Systemアカウントで実際のサービスが実行される。各サービスがどのような特権を要求しているかを確認するには,sc qprivsコマンドを使う(sc qprivs <サービス名>を実行)。「管理者として実行」などで使用されるSecondly Logonサービスの必要としている特権を実際に確認すると図2のようになる。
![]() [画像のクリックで拡大表示] |
Serverサービスなども見てみると,特に必要な特権がリストされない。これらのサービスは指定されたアカウントの持つ全権限を使うため,特に必要とする権限を指定していない。また,Local Serviceは特権だけではなくネットーワークを通じた通信を行えなくなっている。Local Systemを持つサービスの一部はファイアウォールとの連携により通信が制限されている。
では,サービスとファイアウォールの連携とは具体的にどんなものか。それを説明する前に,Windows XPのファイアウォールについて触れておこう。
Windows XPのWindows Firewallでは,フィルタリング・ルールは特定のプロセス,またはすべてのプロセスを対象に設定する。つまり,サービスの通信を制限するには,サービスが独自の実行ファイルによる完全に独立したサービスである必要がある。Svchost.exeなどでホストされているサービスに対しては,個々に制限を行うことはできない。
これに対してWindows Vistaでは,サービス名を使ってサービスを特定し,個々のサービスごとにルールを設定できるようになっている。これにより,高い権限を持つサービスのうち外部からのネットワーク・アクセスが不要なものは,ファイルウォールでアクセスを制限されている。ファイアウォールの詳細なルールは[セキュリティが強化されたWindowsファイアウォール]で確認することができるが,Windows標準のサービスについては個々には列挙されておらず,別途レジストリで管理されている(図3)。
![]() [画像のクリックで拡大表示] |
独自にサービス向けのファイアウォールのルールを作成する場合は,まず,[セキュリティが強化されたWindowsファイアウォール]でルールを追加する(図4)。次にルールのプロパティから,ファイアウォールのルールを特定のサービスと関連付ける(図5)。外向けの通信(out-bound)を制限しておくと,サービスが悪用された場合でも,別の不正なプロスグラムを仕込まれない限り,他のパソコンへの攻撃は止められる。
![]() [画像のクリックで拡大表示] |
![]() [画像のクリックで拡大表示] |
ここまでは主にサービスの悪用を防ぐ方法を解説したが,Vistaではサービスが悪用された際のローカル・リソースを守るための改善も施されている。主にファイルやレジストリである。ファイルやレジストリのアクセス制限は,ACL(アクセス・コントロール・リスト)に基づいて実行する。ACLの設定は基本的にユーザーやグループ単位に行うが,XPではサービスを選択することはできなかった。このACLにサービスを追加するには,ユーザーと同様にサービスにも識別のためのSIDを持たせる必要があり,S-1-5-80-{サービス名のSHA1}が与えられている。実際のSIDはsc showsid <サービス名>で確認することができる(図6)。SIDにはNone, Restricted, UnRestrictedの三つのタイプがあるが,タイプはsc qsidtype <サービス名>で確認できる(表1)。
![]() [画像のクリックで拡大表示] |
![]() [画像のクリックで拡大表示] |
Restrictedに設定した場合は,明示的にServiceのSIDに書き込み許可を与えないとファイルなどへの書き込みが制限される。実際にMpsSvc(Windows Firewall)は,SID TypeがRestrictedに設定されている。これにより,もしWindows Firewallにぜい弱性があり,不正なコードが実行されたとしても,レジストリや他のファイルを変更することはできない。例外としてログ・ファイルだけはNT Service\MpsSvcに明示的にアクセス権が与えられており,サービスから書き込みができる(図7)。
![]() [画像のクリックで拡大表示] |
Windows Vistaのサービスは,基本的にService Hardeningが施されている。しかし,攻撃等の傾向がOSからアプリケーションに移っている現状を考えると,OS標準ではない,各社が作成するサービスについても,適切な制限が行われることを期待したい。