Adobe Reader X に関して NyaRuRu さんから突っ込みをいただいたので、Windows XP 上での Adobe Reader X について書こうと思ったのですが、その前に restrictied token について説明する必要があるため先に説明します。
CreateRestrictedToken 関数で作成する Restricted Token (制限トークン) での SID 制限の方法には deny-only SID (SID の無効化) と restricting SID (制限付き SID) の 2 種類が存在します。
まずは簡単な deny-only SID の方から。Deny-only SID とは、対象の SID を無効化します。無効化なので ACL に該当する SID が存在したとしても、無かったものとして扱われます。例えば、管理者権限を無効化するために BUILTIN\Administrators group SID を消しこむといった用途で使われますね。UAC の medium IL での管理者権限削除はこれを利用することによって実現されています。CreateRestrictedToken 関数では第 3 引数 DisableSidCount、第 4 引数 SidToDisable に対応します。
次にちょっとわかりにくい restricting SID の方。こちらはなんなのかというと Restrited と mark された SID のみが利用可能であるということです。
上は Windows XP mode でメモ帳 (notepad.exe) を「別のユーザーとして実行」→「許可されていないプログラムの動作からコンピュータとデータを保護する」を有効化して「現在のユーザー」で起動した aceess token です。
BUILTIN\Administrators が Deny されており、ほとんどの SIDs に Restricted flag がついているのが確認できます。それから NT AUTHORITY\RESTRICTED という見慣れない SID が存在しますね。
この状況では下記のように access check が行われます。
- ACL に BUILTIN\Administrators が含まれていても deny-only であるため無視される
- restricting SIDs 以外の SIDs を確認し、ACL に含まれる SID に対応した許可の ACE が含まれる場合のみ次に進む
- NT AUTHORITY\RESTRICTED SID が付与されている Restricted Token であるため、restricting SIDs を照合して restricting SIDs が存在するもののみ access が許可される
How Access Tokens Work
ここで注意してほしいのは、この process の実行 user である VIRTUALXP-17110\XPMUser の restircting SID が含まれていないことです。つまり、VIRTUALXP-17110\XPMUser の権限が無効化されているということになります。
わかり易く整理すると下表のような感じです。
SIDs | Enable |
Logon SID (S-1-5-5-0-71174) | Enabled |
Everyone | Enabled |
Local | Enabled |
NT AUTHORITY\Authenticated Users | Enabled |
NT AUTHORITY\REMOTE INTERACTIVE LOGON | Enabled |
VIRTUALXP-17110\Debugger Users | Enabled |
VIRTUALXP-17110\なし | Enabled |
BUILTIN\Users | Enabled |
NT AUTHORITY\INTERACTIVE | Enabled |
BUILTIN\Administrators | Disabled |
VIRTUALXP-17110\XPMUser | Disabled |
実行 user である VIRTUALXP-17110\XPMUser の SID が利用できないのがミソですね。この影響により、この SID で許可されている %UserProfile% や HKCU 配下のすべての権限が消滅します。
なお、restricting SID は CreateRestrictedToken 関数の第 7 引数 RestrictedSidCount、第 8 引数 SidsToRestrict を利用して作成します。
"RunAs" basic (and intermediate) topics
Running restricted -- What does the "protect my computer" option mean?