Поделиться через


Вопросы безопасности для вспомогательных технологий

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

Характер вспомогательных технологических приложений требует, чтобы они пересекали границы процесса, и что они имеют доступ к процессам, которые выполняются на более высоком уровне целостности (IL), чем сами. (Приложение вспомогательных технологий выполняется в среднем IL.) Например, когда пользователь пытается выполнить задачу, требующую прав администратора, Windows представляет диалоговое окно с запросом пользователя на продолжение. Это диалоговое окно выполняется в более высоком il, чтобы защитить его от межпроцессного взаимодействия, чтобы вредоносное программное обеспечение не может имитировать входные данные пользователей. Аналогичным образом экран входа в систему на рабочем столе выполняется в более высоком il, чтобы предотвратить доступ к нему другими процессами.

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

Чтобы получить доступ к более высоким процессам IL, приложение вспомогательных технологий должно задать флаг UIAccess в манифесте приложения и запускаться пользователем с правами администратора.

Примечание.

Права доступа ограничены следующим образом:

  • Приложение, которое не имеет UIAccess в манифесте, начинается с среднего IL и не может получить доступ к пользовательскому интерфейсу процесса с повышенными привилегиями ("средний+" IL).
  • Приложение, которое имеет UIAccess в манифесте и запускается пользователем, который не входит в группу администраторов, запускается как "средний+" IL и не может получить доступ к пользовательскому интерфейсу с повышенными привилегиями (ничего не работает как высокий" IL, например приложения, запущенные с помощью правой кнопки мыши — запуск от имени администратора).>
  • Приложение имеет доступ к пользовательскому интерфейсу и запускается пользователем администратора как "высокий" IL и может получить доступ к пользовательскому интерфейсу с повышенными привилегиями, так как он имеет тот же IL.

UIAccess недостаточно для перемещения по границе IL.

Помимо доступа к более высоким процессам IL, приложение вспомогательных технологий с этими привилегиями может выполняться как самое первое приложение в z-порядке в любое время, что означает, что вспомогательное технологическое приложение может быть видимым и доступным всякий раз, когда пользователь нуждается в нем.

Внимание

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

Требования UIAccess для вспомогательных технологических приложений

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

Приложение вспомогательной технологии получает доступ к другим процессам, задав флаг UIAccess в манифесте приложения. Чтобы использовать флаг UIAccess, приложение вспомогательных технологий должно соответствовать следующим требованиям.

  • Требовать отображения, взаимодействия или отражения информации из другого приложения для предоставления информации для сценария специальных возможностей и (или)
  • Для получения или отображения этих сведений требуется выполнение в качестве верхнего окна.

Чтобы использовать UIAccess, приложению вспомогательных технологий необходимо:

  • Подписывая сертификат для взаимодействия с приложениями, работающими на более высоком уровне привилегий.
  • Доверяйтесь системе. Приложение должно быть установлено в безопасном расположении, в котором требуется запрос управления учетными записями пользователя (UAC) для доступа. Например, папка Program Files.
  • Создайте файл манифеста, содержащий флаг uiAccess.

UIAccess не следует использовать:

  • Приложения, которые не являются вспомогательными технологиями.

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

  • Приложения, которые просто хотят отображаться над другими приложениями в новом пользовательском интерфейсе Windows.

    Примечание.

    Приложения, разработанные для нового пользовательского интерфейса Windows, не имеют UIAccess как доступный вариант.

     

Настройка UIAccess в файле манифеста приложения

Чтобы получить доступ к защищенному системном пользовательскому интерфейсу, приложения должны создаваться с помощью файла манифеста, который содержит специальный атрибут в файле манифеста. Этот атрибут uiAccess включен в тег запрошенногоExecutionLevel, как показано в следующем примере кода.

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
        <requestedPrivileges> 
        <requestedExecutionLevel 
            level="highestAvailable" 
            uiAccess="true" /> 
        </requestedPrivileges> 
    </security> 
</trustInfo> 

Значение атрибута уровня в этом коде является только примером.

UIAccess по умолчанию имеет значение false. Если атрибут опущен или отсутствует манифест, приложение не может получить доступ к защищенному пользовательскому интерфейсу.

Дополнительные сведения о безопасности Windows, подписывание приложений и создании манифестов см. в статье "История разработчика Windows Vista и Windows Server 2008: требования к разработке приложений Windows Vista для управления учетными записями пользователей (UAC)".

Основы модели автоматизации пользовательского интерфейса