В Windows 8 появилось новое средство безопасности — контейнеры AppContainer. Оно создавалось для управления UWP приложениями.

Процессы AppContainers

Мобильные приложения обычно распространяются из магазина приложений. Например, для системы Android есть магазин «Play Маркет«. Обычно после того, как пользователь выбирает и устанавливает какое-нибудь приложение, то ему показывают разрешения которые требуются этому приложению. Примерно тоже самое сделали в Windows, так появились UWP-приложения из магазина «Microsoft Store».

Microsoft Store

Это не обычные приложения, процессы которые они запускают отличаются от обычных процессов. И называются такие процессы «AppContainers«. А отличаются они от обычных процессов следующим:

  • уровень целостности их равен Low, что ограничивает доступ ко многим объектам;
  • процесс всегда создается внутри задания (Job). Одно задание на каждое UWP-приложение. Задания позволяют быстро приостанавливать и возобновлять работу приложения;
  • маркер доступа содержит особый SID AppContainer, представляющий собой хеш имени пакета UWP. В строковом формате он начинается с S-1-15-2;
  • маркер доступа содержит набор возможностей (Capability), с которыми вы согласились при установки приложения из магазина:
Внутреннее устройство Windows. AppContainer, изображение №2

Находим эти процессы в Process Explorer

Увидеть такие процессы можно с помощью Process Explorer. Для лучшего поиска можно отобразить столбец с информацией Integrity:

Внутреннее устройство Windows. AppContainer, изображение №3

Примеры таких приложений, установленных по умолчанию:

  • Calculator;
  • Cortana;
  • Edge.

Если посмотреть маркер доступа одного из таких процессов (на вкладке Security), то можно заметить SID контейнера:

Внутреннее устройство Windows. AppContainer, изображение №4

Также выше на рисунке можно заметить флаги Capability — возможности этого приложения. Одна из возможностей содержит такой-же sid контейнера, это возможность быть контейнером, она есть у всех приложений UWP.

Алгоритм проверки прав доступа для контейнеров изменен. Для доступа к объектам проверяется не SID владельца, а SID контейнера и возможности контейнера. При этом SID владельца может проверятся только для запрещенных правил в DACL объекта. То-есть, если «Калькулятор» будет запущен пользователем, то он не будет иметь все права этого пользователя. Для того чтобы «Калькулятор» получил доступ к объекту, объект должен явно разрешить доступ к себе для SID контейнера или для его возможностей (Capability).

Среда безопасности AppContainer

Как вообще может функционировать приложение, не имеющее доступа даже к базовой файловой системе, реестру и ресурсам диспетчера объектов? Для таких ситуаций Windows создает отдельную среду исполнения (jail), для каждого контейнера. Пакеты UWP могут содержать несколько исполняемых файлов, которые все относятся к одному контейнеру и работают в одном контейнере. Это позволяет им совместно использовать один SID и обмениваться данными друг с другом.

Диспетчер объектов используя SID контейнера создает подкаталог, который становится приватным для контейнера. То есть приложение думает что на компьютере есть только этот каталог и работает в нем. В этом каталоге будут различные подкаталоги необходимые для приложения. А также в этом каталоге будет находиться файл реестра settings.dat, который выполняет функции локального реестра приложения. Этот подкаталог и создает тюрьму (jail) для приложения.

Некоторые важные объекты в системе разрешают доступ к себе контейнерам на чтение или на чтение и выполнение, например:

  • %SystemRoot%\System32;
  • HKLM\Software\Microsoft\Windows\CurrentVersion;
  • некоторые com-объекты.

В Windows 10 версии 1607 появились ограниченные контейнеры. Они имеют меньше доступа к другим частям системы, но и функционал у них меньше.


Вернуться к оглавлению

Сводка
AppContainer
Имя статьи
AppContainer
Описание
В Windows 8 появилось новое средство безопасности — контейнеры AppContainer. Оно создавалось для управления UWP процессами

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *