Контроль учетных записей ( UAC) является обязательным контролем доступа функции принуждения введен с Microsoft «s Windows Vista и Windows Server 2008 операционных системами, с более расслабленной версией также присутствуют в Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2 и Windows 10. Он направлен на повышение безопасности Microsoft Windows за счет ограничения прикладного программного обеспечения с правами обычного пользователя до тех пор, пока администратор не разрешит увеличение или повышение прав. Таким образом, только приложения, которым доверяет пользователь, могут получить административные привилегии, а вредоносные программы не должны компрометировать операционную систему. Другими словами, учетной записи пользователя могут быть назначены права администратора, но приложения, которые запускает пользователь, не наследуют эти привилегии, если они не одобрены заранее или пользователь явно не авторизует это.
UAC использует обязательный контроль целостности, чтобы изолировать запущенные процессы с разными привилегиями. Чтобы уменьшить возможность взаимодействия приложений с более низкими привилегиями с приложениями с более высокими привилегиями, в сочетании с контролем учетных записей пользователей используется другая новая технология, изоляция привилегий пользовательского интерфейса, чтобы изолировать эти процессы друг от друга. Одним из наиболее ярких примеров использования этого является «Защищенный режим» Internet Explorer 7.
Операционные системы на мэйнфреймах и на серверах на протяжении десятилетий различали суперпользователей и пользователей. У этого был очевидный компонент безопасности, но также и административный компонент, поскольку он предотвращал случайное изменение настроек системы пользователями.
Рано Microsoft домой операционная система (например, MS-DOS, Windows 95 - 98 и Windows Me ) не имеет понятия о различных пользовательских учетных записях на одном компьютере. Последующие версии приложений Windows и Microsoft поощряли использование пользователей без прав администратора, однако для некоторых приложений по-прежнему требовались права администратора. Microsoft не сертифицирует приложения как совместимые с Windows, если для них требуются права администратора; такие приложения не могут использовать логотип, совместимый с Windows, на своей упаковке.
Задачи, требующие прав администратора, вызовут запрос UAC (если UAC включен); они обычно отмечены значком щита безопасности с 4-мя цветами логотипа Windows (в Vista и Windows Server 2008) или двумя панелями - желтым и двумя синими (Windows 7, Windows Server 2008 R2 и новее). В случае исполняемых файлов на значок будет накладываться защитный экран. Следующие задачи требуют прав администратора:
Общие задачи, такие как изменение часового пояса, не требуют прав администратора (хотя изменение самого системного времени требует, поскольку системное время обычно используется в протоколах безопасности, таких как Kerberos ). Ряд задач, которые требовали прав администратора в более ранних версиях Windows, таких как установка критических обновлений Windows, больше не требуют прав администратора в Vista. Любую программу можно запустить от имени администратора, щелкнув ее значок правой кнопкой мыши и выбрав «Запуск от имени администратора», за исключением пакетов MSI или MSU, поскольку в силу их характера, если потребуются права администратора, обычно отображается запрос. Если это не удастся, единственный обходной путь - запустить командную строку от имени администратора и запустить оттуда пакет MSI или MSP.
Управление учетными записями пользователей запрашивает учетные данные в режиме безопасного рабочего стола, где весь экран временно затемнен, Windows Aero отключена и только окно авторизации на полной яркости, чтобы представить только пользовательский интерфейс с повышенными правами (UI). Обычные приложения не могут взаимодействовать с Secure Desktop. Это помогает предотвратить спуфинг, например наложение другого текста или графики поверх запроса на повышение высоты, или настройку указателя мыши для нажатия кнопки подтверждения, когда это не то, что предполагал пользователь. Если административные действия происходят из свернутого приложения, запрос защищенного рабочего стола также будет минимизирован, чтобы предотвратить потерю фокуса. Можно отключить Secure Desktop, хотя это нежелательно с точки зрения безопасности.
В более ранних версиях Windows приложения, написанные с предположением, что пользователь будет работать с правами администратора, испытывали проблемы при запуске с ограниченными учетными записями пользователей, часто из-за того, что они пытались писать в общесистемные или системные каталоги (например, программные файлы) или реестр. ключи (особенно HKLM ). UAC пытается смягчить это с помощью виртуализации файлов и реестра, которая перенаправляет записи (и последующие чтения) в расположение для каждого пользователя в профиле пользователя. Например, если приложение пытается выполнить запись в каталог, такой как «C: \ Program Files \ appname \ settings.ini», в который у пользователя нет разрешения на запись, запись будет перенаправлена в «C: \ Users \ username. \ AppData \ Local \ VirtualStore \ Program Files \ appname \ settings.ini ". Функция перенаправления предоставляется только для 32-разрядных приложений без повышенных прав и только в том случае, если они не включают манифест, запрашивающий определенные привилегии.
Есть ряд настраиваемых параметров UAC. Можно:
Окна командной строки, запущенные с повышенными привилегиями, будут иметь префикс заголовка окна со словом «Администратор», чтобы пользователь мог определить, какие экземпляры запущены с повышенными привилегиями.
Различают запросы на повышение прав от подписанного исполняемого файла и неподписанного исполняемого файла; а если первое, то является ли издатель «Windows Vista». Цвет, значок и формулировка подсказок в каждом случае различаются; например, попытка передать большее чувство предупреждения, если исполняемый файл беззнаковый, чем в противном случае.
Функция «Защищенный режим» Internet Explorer 7 использует UAC для работы с «низким» уровнем целостности (стандартный пользовательский токен имеет уровень целостности «средний»; повышенный (администраторский) токен имеет уровень целостности «высокий»). Таким образом, он эффективно работает в изолированной программной среде, не имея возможности писать в большую часть системы (кроме папки временных файлов Интернета) без повышения прав через UAC. Поскольку панели инструментов и элементы управления ActiveX запускаются в процессе Internet Explorer, они также будут работать с низкими привилегиями и будут сильно ограничены в том, какой ущерб они могут нанести системе.
Программа может запрашивать повышение несколькими способами. Один из способов для разработчиков программ - добавить в XML-документ раздел requiredPrivileges, известный как манифест, который затем встраивается в приложение. Манифест может указывать зависимости, визуальные стили, а теперь и соответствующий контекст безопасности:
lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?gt; lt;assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"gt; lt;v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3"gt; lt;v3:securitygt; lt;v3:requestedPrivilegesgt; lt;v3:requestedExecutionLevel level="highestAvailable"/gt; lt;/v3:requestedPrivilegesgt; lt;/v3:securitygt; lt;/v3:trustInfogt; lt;/assemblygt;
Установка атрибута level для requiredExecutionLevel на «asInvoker» заставит приложение работать с токеном, который его запустил, «highAvailable» представит запрос UAC для администраторов и запустится с обычными ограниченными привилегиями для стандартных пользователей, а «requireAdministrator» потребует повышения прав.. Как в режиме highAvailable, так и в режиме requireAdministrator, отсутствие подтверждения приводит к тому, что программа не запускается.
Исполняемый файл, помеченный как " requireAdministrator
" в своем манифесте, не может быть запущен из процесса без повышенных прав с использованием CreateProcess()
. Вместо этого ERROR_ELEVATION_REQUIRED
будет возвращен. ShellExecute()
или ShellExecuteEx()
должен использоваться вместо него. Если HWND
не указан, то диалоговое окно будет отображаться как мигающий элемент на панели задач.
Не рекомендуется проверять манифест исполняемого файла, чтобы определить, требует ли он повышения прав, поскольку повышение прав может потребоваться по другим причинам (установка исполняемых файлов, совместимость приложений). Однако можно программно определить, требуется ли для исполняемого файла повышение прав, используя CreateProcess()
и задав для dwCreationFlags
параметра значение CREATE_SUSPENDED
. Если требуется отметка, то ERROR_ELEVATION_REQUIRED
будет возвращено. Если повышение не требуется, будет возвращен успешный код возврата, после чего можно будет использовать TerminateProcess()
его для вновь созданного приостановленного процесса. Однако это не позволит обнаружить, что исполняемый файл требует повышения прав, если он уже выполняется в процессе с повышенными правами.
Новый процесс с повышенными привилегиями может быть порожден из приложения.NET с помощью команды " runas
". Пример с использованием C # :
System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "C:\\Windows\\system32\\notepad.exe"; proc.StartInfo.Verb = "runas"; // Elevate the application proc.StartInfo.UseShellExecute = true; proc.Start();
В "" родном приложении Win32 этот же runas
глагол можно добавить к оператору ShellExecute()
or ShellExecuteEx()
call:
ShellExecute(hwnd, "runas", "C:\\Windows\\Notepad.exe", 0, 0, SW_SHOWNORMAL);
В отсутствие конкретной директивы, указывающей, какие привилегии запрашивает приложение, UAC будет применять эвристику, чтобы определить, нужны ли приложению права администратора. Например, если UAC обнаруживает, что приложение является программой установки, по таким подсказкам, как имя файла, поля управления версиями или наличие определенных последовательностей байтов в исполняемом файле, при отсутствии манифеста предполагается, что приложению требуется администратор. привилегии.
UAC - удобная функция; он не вводит границы безопасности и не предотвращает выполнение вредоносных программ.
Лео Дэвидсон обнаружил, что Microsoft ослабила контроль учетных записей в Windows 7 через освобождение от около 70 программ для Windows от отображающего UAC подсказки и представила доказательство концепции для повышения привилегий.
Стефан Кантак представил доказательство концепции повышения привилегий с помощью обнаружения установщика UAC и установщиков IExpress.
Стефан Кантак представил еще одно доказательство концепции выполнения произвольного кода, а также повышения привилегий с помощью автоматического повышения уровня UAC и установки двоичных файлов.
Были жалобы, что уведомления UAC замедляют выполнение различных задач на компьютере, таких как первоначальная установка программного обеспечения в Windows Vista. Можно отключить UAC во время установки программного обеспечения и снова включить его позже. Однако это не рекомендуется, поскольку, поскольку виртуализация файлов и реестра активна только при включенном UAC, пользовательские настройки и файлы конфигурации могут быть установлены в другое место (системный каталог, а не пользовательский каталог), если UAC переключен. прочь, чем они были бы в противном случае. Кроме того, «Защищенный режим» Internet Explorer 7, при котором браузер работает в изолированной программной среде с более низкими привилегиями, чем обычный пользователь, полагается на UAC; и не будет работать, если UAC отключен.
Аналитик Yankee Group Эндрю Джакит сказал, за шесть месяцев до выпуска Vista, что «хотя новая система безопасности многообещающая, она слишком болтливая и раздражающая». К моменту выпуска Windows Vista в ноябре 2006 года Microsoft резко сократила количество задач операционной системы, запускающих запросы UAC, и добавила виртуализацию файлов и реестра, чтобы уменьшить количество устаревших приложений, запускающих запросы UAC. Однако Дэвид Кросс, менеджер продуктового подразделения Microsoft, заявил на конференции RSA Conference 2008, что UAC на самом деле был разработан, чтобы «раздражать пользователей» и вынудить независимых поставщиков программного обеспечения сделать свои программы более безопасными, чтобы запросы UAC не запускались. Программное обеспечение, написанное для Windows XP, и многие периферийные устройства больше не будут работать в Windows Vista или 7 из-за значительных изменений, внесенных при введении UAC. Вариантов совместимости также было недостаточно. В ответ на эту критику Microsoft изменила активность UAC в Windows 7. Например, по умолчанию пользователям не предлагается подтвердить многие действия, инициированные только с помощью мыши и клавиатуры, такие как использование апплетов панели управления.
В скандальной статье автор New York Times Gadgetwise Пол Бутен сказал: «Отключите чрезмерно защищающий контроль учетных записей пользователей Vista. Эти всплывающие окна подобны тому, как ваша мать парит над вашим плечом, пока вы работаете». Журналист Computerworld Престон Гралла охарактеризовал статью в NYT как «... один из худших технических советов из когда-либо выпущенных».