Использование минимальных привилегий в Windows Vista


В новой операционной системе обычным пользователям работать проще
После неоднократных задержек официальный выпуск Windows Vista наконец приближается. Ко времени подготовки данной статьи компания Microsoft выпустила несколько промежуточных сборок этой операционной системы, в том числе почти полнофункциональную Vista Community Technology Preview (CTP). В этой версии нам удалось впервые по-настоящему познакомиться с новыми функциями и средствами обеспечения безопасности, которые компания планирует включить в Vista. Одним из фундаментальных изменений в системе безопасности будет режим работы с минимальными привилегиями, реализованный через компонент User Account Control (UAC — контроль учетных записей). В предшествующих бета-версиях Vista компонент UAC назывался Least-Privileged User Account.

В статье «Довольствоваться малым», опубликованной в Windows IT Pro/RE № 1 за 2006 г., были определены эти минимальные привилегии и показаны оптимальные способы их применения в Windows XP. Принцип минимальных привилегий состоит в том, чтобы выделять пользователю или фрагменту программы только те привилегии, которые необходимы для выполнения задания — не меньше и заведомо не больше. Опасная программа может принести гораздо больше вреда, если выполняется в контексте учетной записи с широкими привилегиями, а зараженные вирусом или просто содержащие ошибки процессы, наделенные многочисленными привилегиями, могут доставить куда больше неприятностей.

До выхода Vista остается немного, и пришло время заново оценить эту концепцию в свете новой функциональности, с помощью которой будет гораздо проще придерживаться принципа минимальных привилегий. Вспомним, как развивались методы работы с минимальными привилегиями, а затем рассмотрим новые компоненты Vista, в том числе UAC и Admin Approval Mode (AAM), которые определяют динамику новой Windows.



Проблемы прошлого
Недостаток XP и предшествующих версий — невозможность применять минимальные привилегии без строгой дисциплины со стороны как пользователей, так и администраторов. Например, администраторы XP, желающие внедрить минимальные привилегии, должны создать две учетные записи: простую учетную запись пользователя (ограниченную в привилегиях) и учетную запись с административными полномочиями (привилегированную). Кроме того, они должны использовать ограниченную запись для повседневной работы — обращений в Web, чтения электронной почты, работы с документами Microsoft Office — и переключаться на привилегированную учетную запись только для выполнения административных задач.

Конечно, в XP и Windows 2000 переключаться между сеансами просто, но все же администраторам гораздо удобнее задействовать одну привилегированную учетную запись для всей повседневной работы. При использовании единственной учетной записи администратору приходится запоминать лишь один набор учетных записей. В интерфейсы XP и Windows 2000 интегрированы инструменты для работы минимальных привилегий, такие как служба Secondary Logon, Fast User Switching (FUS) и команда Runas (более подробно об этом рассказано в статье «Довольствоваться малым»).

Более серьезная проблема заключается в том, что не только администраторы XP, но и рядовые пользователи этой операционной системы обычно применяют одну-единственную учетную запись для административного доступа. Работать с ограниченной учетной записью в XP неудобно, так как операционная система не позволяет выполнять с учетной записью пользователя простые административные задачи, такие как изменение временной зоны, установка дополнительных шрифтов или изменение режима энергопотребления. По этой причине администраторы часто предоставляют рядовым пользователям административные привилегии. На экране 1 показано предупреждение XP о попытке пользователя с ограниченной учетной записью изменить системное время.

Экран 1. Предупреждение о невозможности смены времени в XP
В результате те пользователи и администраторы XP, которые пренебрегают безопасностью ради удобства работы и не желают постоянно переключаться между двумя учетными записями, открывают свои системы для различных атак. Признаемся: все мы не раз использовали встроенную локальную учетную запись администратора для регистрации на автономной рабочей станции XP.


Переопределение ограниченных учетных записей
Фундаментальное изменение в Vista заключается в том, что компания Microsoft переопределила возможности ограниченных учетных записей. Например, в Vista пользователю ограниченной в привилегиях учетной записи разрешено менять системное время и временные зоны, изменять параметры экрана, устанавливать дополнительные шрифты и корректировать режим энергопотребления. В сущности, благодаря этим изменениям отпадает необходимость в группе Power Users, которая удалена из Vista. Примеры задач Vista, для которых требуется учетная запись с расширенными привилегиями, — установка программного обеспечения и изменение разделов диска.

Кроме того, каждая учетная запись Vista — даже встроенная учетная запись администратора и другие привилегированные учетные записи административного уровня — поначалу имеет только ограниченные пользовательские привилегии. При необходимости в сеансе регистрации в системе пользователи могут поднять свои привилегии до уровня администратора, как — будет объяснено ниже. Начиная с Vista Beta 2 эта возможность стала стандартной для Vista, так как контроль учетных записей активизирован по умолчанию. Возможность задействовать административные учетные записи с первоначально ограниченными привилегиями пользователя появилась благодаря изменениям в Vista, в частности процессу создания маркеров доступа для пользователей привилегированных учетных записей. Маркер доступа содержит сведения о привилегиях пользователя и присоединяется к сеансу регистрации пользователя. Когда пользователь привилегированной учетной записи регистрируется в Vista, операционная система создает отфильтрованный маркер, который содержит только привилегии пользователя ограниченной учетной записи и является маркером пользователя по умолчанию в сеансе регистрации. Vista может расширить отфильтрованный маркер до полного маркера, если пользователю нужно выполнить административную задачу или запустить приложение, требующее привилегированного доступа. Полный маркер содержит сведения обо всех правах привилегированной учетной записи пользователя.


Переопределение административных действий
В Vista яснее проведено различие между действиями, требующими административных привилегий и не требующими их: все операции, для которых необходимы административные привилегии, отмечены пиктограммой щита (экраны 2 и 3). На экране 2 показано диалоговое окно Date and Time Properties системы Vista. Отметим, что только кнопка Change Date and Time требует административных привилегий; любой пользователь вправе изменить временную зону. На экране 3 показано диалоговое окно Vista System. Как и в XP, для изменения имени компьютера и активации Windows требуются административные привилегии; в Vista оба действия отмечены пиктограммой щита. Административные кнопки Windows, отмеченные значком щита, называются кнопками разблокирования (unlock button).

Экран 2. Диалоговое окно Date and Time Properties в Vista
На типичном предприятии только сотрудники службы поддержки будут использовать кнопки разблокирования, если им нужно дистанционно управлять настольными компьютерами. В домашних условиях использовать кнопки разблокирования будут только родители, например, чтобы изменить настройки для детей. В Vista сотрудник службы поддержки может, например, разблокировать панель управления без предварительной регистрации сотрудника. Владельцы ограниченных учетных записей и дети не могут использовать кнопку разблокирования, потому что не знают паролей привилегированных учетных записей.

Экран 3. Диалоговое окно System операционной системы Vista
Когда пользователь нажимает кнопку разблокирования, выбирает действие или запускает программу установки, требующую административных привилегий, поведение Vista будет различным для пользователей с ограниченными и привилегированными учетными записями. Если пользователь работает с ограниченной учетной записью, Vista запрашивает альтернативные административные учетные данные; если пользователь имеет административные привилегии, то Vista попросит подтверждения. На экранах 4 и 5 показаны диалоговые окна Vista при попытках пользователя соответственно с ограниченной и привилегированной учетной записью изменить системную дату и время.

Экран 4. Приглашение повысить привилегии в Vista
  • В окне на экране 4 пользователь с ограниченной учетной записью может выбрать одну из административных учетных записей и ввести административные учетные данные или отменить действие, связанное с повышением привилегий.
  • В диалоговом окне на экране 5 пользователь с административными привилегиями может выразить согласие, просто разрешив или отменив действие.
Объекты групповой политики (GPO) Vista располагают параметрами, с помощью которых администраторы могут изменить обычные приглашения Vista для ограниченных и привилегированных учетных записей. Параметры настройки GPO, предназначенные для контроля учетных записей (они начинаются со слов User Account Control), находятся в GPO-контейнере Security SettingsLocal PoliciesSecurity Options.

Специалисты Microsoft назвали такой способ повышения привилегий на основе приглашения AAM. Благодаря AAM пользователи и администраторы могут реализовать минимальные привилегии в едином сеансе регистрации. Больше не требуется многократно повторять сеансы регистрации с ограниченной и привилегированной учетной записью.

Экран 5. Приглашение подтвердить повышение привилегий в Vista
Диалоговые окна ввода учетных данных или подтверждения (экраны 4 и 5) могут появляться в ходе сеанса регистрации пользователя несколько раз, при каждой попытке выполнить действие, помеченное пиктограммой щита. Vista не запоминает предыдущих шагов, выполненных для повышения привилегий до административного уровня. Повышенные привилегии, связанные с определенной задачей (например, установка новой программы), автоматически отменяются после завершения задачи. Поэтому AAM существенно сокращает поверхность атаки Vista. Кроме того, AAM обеспечивает важное преимущество для административных пользователей, которые теперь могут выполнять повседневные задачи как обычные пользователи и переключаться на административные привилегии только при необходимости или по запросу.


Изоляция процессов
Важная скрытая функция контроля учетных записей, которая также существенно сокращает поверхность атаки Vista, — изоляция привилегий пользовательского интерфейса (User Interface Privilege Isolation). Изоляция процессов достигается благодаря тому, что процессы, выполняемые в контексте безопасности ограниченной учетной записи пользователя, не могут вмешиваться в процессы, выполняемые в контексте безопасности пользователя привилегированной учетной записи.

UIPI защищает систему от атак, в ходе которых вредные мобильные программы (например, черви, вирусы, «троянские кони»), функционирующие в контексте безопасности ограниченной учетной записи, используют обмен сообщениями между процессами Windows, чтобы вставить свои фрагменты в процесс, выполняемый в контексте безопасности привилегированной учетной записи. В предыдущих версиях Windows такие атаки были возможны, так как любой процесс мог послать сообщение любому другому процессу в той же системе (Windows не определяет источник межпроцессных сообщений), а приложения слишком часто проектировались для запуска в контексте пользователя привилегированной учетной записи. Дополнительные сведения об изоляции процессов UAC и UIPI можно найти в статье Microsoft «Developer Best Practices and Guidelines for Applications in a Least Privileged Environment» (http://msdn.microsoft.com/windowsvista/default.aspx_pull_/library/en-us/dnlong/html/accprotvista.asp.htm).


Приложения и UAC
До сих пор мы рассматривали только пользователей и администраторов и влияние UAC на них. Но административные привилегии требуются не только для действий пользователей и администраторов; определенным приложениям для полноценной работы также необходимы расширенные привилегии. Vista располагает несколькими механизмами, которые отмечают приложение как нуждающееся в административных привилегиях на этапе выполнения.

  • В зависимости от свойств данного приложения, Vista автоматически относит приложения к категории нуждающихся в административных привилегиях на этапе выполнения. Например, к административной категории автоматически относятся программы установки.
  • В процессе проектирования разработчик может отметить программу как требующую административных привилегий на этапе выполнения. Это делается в файле объявлений. Полный список инструкций по построению UAC-совместимых приложений приведен в документе «Developer Best Practices and Guidelines for Applications in a Least Privileged Environment».
  • Администратор может установить на компьютере Vista утилиту, которая отмечает приложение как нуждающееся в административных привилегиях на этапе выполнения. При таком подходе администратор может запускать старые приложения с административными полномочиями, не внося изменений в их исходный текст. Дополнительные сведения об установке утилиты, обеспечивающей совместимость приложений, можно найти в статье Microsoft «Understanding and Configuring User Account Control in Windows Vista Beta 2» (http://www.microsoft.com/technet/windowsvista/deploy/appcompat/acshims.mspx.htm). Чтобы выяснить требования старых приложений к правам, компания Microsoft предоставила новую версию инструмента Application Verifier. Application Verifier 3.2 можно загрузить по адресу http://www.microsoft.com/downloads/details.aspx_.htm| FamilyID=bd02 c19c-1250-433c-8c1b-2619bd93b3 a2&DisplayLang=en.
Приложения, нуждающиеся в административных привилегиях, отмечаются символом щита поверх обычной пиктограммы в интерфейсе Vista (экран 6).

Экран 6. Приложения Vista, помеченные значком щита
Независимо от того, помечено ли приложение как нуждающееся в административных привилегиях на этапе выполнения, пользователи могут потребовать запустить приложение в контексте безопасности учетной записи администратора. На экране 7 показано, как можно запросить однократный запуск программы в контексте безопасности привилегированной учетной записи, выбрав из контекстного меню пункт Run as administrator. Это меню появляется по щелчку правой кнопки мыши на значке программы.

Пользователи могут настроить приложение на постоянное выполнение с административными привилегиями: достаточно установить флажок Run this program as an administrator на вкладке Compatibility окна Properties приложения (экран 8). Эти параметры доступны пользователям как ограниченных, так и привилегированных учетных записей. В режиме Run this program as an administrator поведение AAM не изменяется: система по-прежнему просит пользователей ограниченных учетных записей ввести административные учетные данные, а пользователей привилегированных учетных записей — подтвердить действие.


Виртуализация файловой системы и реестра
Vista может прозрачно обслуживать приложения, которые отмечены как нуждающиеся в административных привилегиях на этапе выполнения и должны записывать данные в раздел реестра или каталог файловой системы, для доступа к которым требуются административные привилегии. Это возможно благодаря функциям виртуализации файловой системы и реестра UAC. UAC незаметно создает необходимые приложению данные в каталоге файловой системы или разделе реестра, доступном из ограниченной учетной записи. Виртуализация UAC автоматически перенаправляет приложения к виртуальным местам хранения, когда нужно прочитать или записать данные.

  • Для виртуализации реестра используется раздел реестра HKEY_USERSUser_SID_ClassesVirtualStore. Виртуализация реестра действует только для приложений, которые пытаются обратиться к ветви реестра HKEY_LOCAL_MACHINESOFTWARE.
  • Для виртуализации файловой системы используется папка %localappdata%virtualstore. Виртуализация файловой системы действует только для приложений, которые пытаются обратиться к папкам %systemroot% или %programfiles%.
Виртуализация UAC не обеспечивает ни окончательное, ни полное решение проблем UAC-совместимости старых программ. Некоторые программы просто непригодны для виртуализации и не могут корректно работать с Vista. Кроме того, нельзя быть уверенным, что виртуализация UAC будет применяться в будущих версиях операционной системы. Это два важных довода в пользу проектирования программ, корректно функционирующих в контексте безопасности ограниченной учетной записи, и выделения определенных приложений как нуждающихся в административных привилегиях.

Экран 7. Запрос Run as administrator из контекстного меню приложения
Очевидно, минимальные привилегии UAC отразятся на всех пользователях Vista: обычных пользователях, администраторах и даже программистах. UAC — еще один компонент Windows, который должен обеспечить более надежную защиту сразу после установки операционной системы, аналогично, например, брандмауэру Windows, который активизируется по умолчанию в Windows XP Service Pack 2 (SP2) и более поздних версиях. Общий эффект UAC заключается в том, что пользователям потребуется меньше усилий, чтобы безопасно работать с Windows. Однако этого нельзя сказать об администраторах и программистах. Такие приемы, как AAM, могут привести к тому, что владельцам привилегированных учетных записей будет утомительно вводить учетные данные. В Vista большая ответственность ложится на программистов: они должны обеспечить надежную и корректную работу в Vista как старых, так и новых приложений.