Sign In
Заметки о Windows, Exchange, и о всем остальном
Options
Blog Home
Email Blog Author
Share this
RSS for posts
Atom
RSS for comments
Search Blogs
Advanced search options...
Search In:
Everything
Blogs
Forums
People
Groups
Places
Pages
Date range:
All Time
Last Year
Last 6 Months
Last 3 Months
Last Month
Last Week
Last Two Days
Tags
Exchange Server
Virtual PC
Windows Vista
Безопасность
Оптимизация
Разное
Разработка
Archive
Archives
March 2007
(3)
February 2007
(5)
January 2007
(1)
December 2006
(6)
September 2006
(2)
August 2006
(3)
July 2006
(3)
June 2006
(3)
UAP
TechNet Blogs
>
Заметки о Windows, Exchange, и о всем остальном
>
UAP
UAP
Rate This
vitalipro
23 Jun 2006 11:51 PM
Comments
5
User Account Protection (UAP) - это одно из самых важных дополнений в системе безопастности Windows Vista. Более старое название этой возможности: LUA (Least-privileged User Account).
Задача UAP очень проста: предотвратить исполнение неизвестного кода в контексте администратора без явного согласия пользователя, даже если учетная запись пользователя, работающего в данный момент на компьютере, имеет права администратора.
Достигается это путем запуска процесса explorer.exe, который обслуживает рабочий стол, с ограниченными правами. Все что запускается из этого процесса тоже будет унаследовать ограниченный права.
Полный и разделенный маркеры идентификации пользователя
В Windows Vista в коде есть список системных групп которые имеют какие-либо повышенный привелегии, например: Administrators, Backup Operators. Этот список нельзя расширить или сузить.
Для пользователей, которые состоят в одной или нескольких из этих групп, создается два маркера идентификации пользователя (tokens): полный
(full token)
и разделенный
(split token)
. Полный маркер содержит все группы в который состоит пользователь, он ничем не отличается от маркера, который создается в предшествующих версиях Windows. Разделенный маркер создается из полного путем установления флага "только для запрета доступа" для всех групп в маркере пользователя, которые находятся в списке групп с повышенными привелегиями.
Таким образом процесс работающий с разделенным маркером не будет иметь доступа к ресурсам, для которых контрольный список доступа (access control list) включает только группы с повышенными привелегиями. В то же время, если ресурс в своем контрольном списке доступа содежрит запись запрещающая доступ, например, администраторам, то разделенный маркер также как и полный не будут иметь доступа к такому ресурсу.
Как запустить программу с повышенными привелегиями
В контекстном меню для всех программ теперь есть новый пункт "Run Elevated". Не знаю как это переведут на русский, но что-то вроде "запустить с повышенными привелегиями".
Какие-то программы в принципе не могут работать с разделенным маркером, например, дефрагментация диска или архивация диска. Поэтому в Windows Vista добавлен новый сервис: Application Information Service (сервис информации о приложениях). В нем накоплены "знания" (зачастую полученные экспериментальным путем) о требования различных приложений. Приложения разбиты в 3 категории:
- приложения, которым требуется полный маркер для полноценного функционирования;
- приложения, которые могут работать и с полным, и с разделенным маркером, при этом будут представлять различный набор функциональности;
- приложения, которым не нужен полный маркер, они могут полноценно фунционировать и с разделенным.
Как происходит запуск программ с повышенными привелегиями
Если процесс уже работает с полным маркером, то тут все просто: все, что запускается из этого процесса, тоже будет работать с полным маркером.
Если процесс, у которого есть только разделенный маркер, пытается запустить программу, требующую повышенных, то происходит следующее. CreateProcess пытается запустить процесс, при этом система запрашивает сервис информации о приложениях может ли данное приложение работать с разделенным маркером. Если нет, то CreateProcess вернет новый код об ошибке, специально добавленный для этого случая.
После этого вы можете вызвать CreateProcess снова при этом уже потребовав выполнения программы с полным маркером.
Система получив такой запрос показывает окно пользователю с вопросом "согласны ли вы запустить данное приложение с повышенными привелегиями". Если пользователь отказывается, то CreateProcess возвращает ошибку. Если соглашается, то запускается система запускает процесс с полным маркером пользователя (который у нее имеется поскольку она - система).
Замечу, что окно для подтверждения и запуск процесса с повышенными привелегиями производится системой. Поэтому приложения с разделенным маркером никак не могут повлиять на процесс принятия решения и никогда не получают полный маркер идентификации пользователя.
Еще одна особенность запуска процесса с полным маркером из процесса с разделенным маркером - это то, что многие параметры CreateProcess при этом игнорируются, например: потоки ввода/вывода, приоритет. Это сделано, чтобы избежать какого-либо контроля со стороны процесса работающего с разделенным маркером.
Если вы используете ShellExecute, то вам не придется заботится обо всем этом. В Windows Vista вызов ShellExecute модифицирован и уже содержит всю логику, описанную выше.
Очереди оконных сообщений (Window message queues)
Важным элементом User Account Protection является то, что очереди оконных сообщений для процессов с полным и разделенным маркером изолированы. Процессы с разделенным маркером могут посылать оконные сообщения другим процессам с разделенными маркерами, но не могут посылать сообщения процессам с полным маркером. Процессы с полным маркером могут посылать оконный сообщения и процессам с полным маркером и процессам с разделенным маркером.
Таким образом предостващена возможность контроля со стороны процессов с разделенным маркером над процессами с полным маркером через очереди сообщений. В частности одним из следствий этого является то, что процесс с разделенным маркером не может послать сообщение OK в окно, спрашивающее подтверждения запуска процесса с полным маркером.
5 Comments
Windows Vista
,
Безопасность
Comments
Comments
Loading...
Leave a Comment
Name
Comment
Please add 6 and 8 and type the answer here:
Post