Блог Сергея Байдачного

Мой блог о технологиях

Введение в SilverLight 4: Повышение доверия

4 комментария

Как страшно жить! При создании SilverLight 2 и 3, в Microsoft задумывались о том, чтобы реализовать возможность размещения приложений в различных группах безопасности кода (подобие Code Access security). Данный подход не только не был реализован, но и принадлежность всех SilverLight-приложений к единому контексту безопасности (Web «песочнице») позиционировалось как преимущество технологии. Ведь если в данном контексте нет прав, например, на форматирование жесткого диска, то даже при наличии ошибок в приложении разработчика, возможность для атаки будет отсутствовать.

В SilverLight 4 ситуация координально изменилась. Теперь приложениям, устанавливаемым для работы вне браузера, можно назначать контекст безопасности с повышенными правами. Чтобы сделать это, достаточно немного изменить конфигурационный файл, установиви атрибут ElevatedPermissions в значение Required:

<OutOfBrowserSettings.SecuritySettings>
   <SecuritySettings ElevatedPermissions="Required" />
</OutOfBrowserSettings.SecuritySettings>

При инсталяции такого приложения пользователь получает вот такое окно:

image

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

Если говорить о пользователях Интернет, то давайте рассмотрим, какими правами обладают приложения с повышенным доверием.

Расширенные возможности работы в полноэкранном режиме

В стандартных SilverLight-приложениях нельзя перейти в полноэкранный режим без реакции на событие, инициированное пользователем. Кроме того, в полноэкранном режиме действуют ограничения, связанные с клавиатурой (невозможен ввод).

Если Ваше приложение запущенно в режиме с повышенным доверием, то все ограничения на полноэкранный режим снимаются: режим можно включать в любом месте программы, интерфейс реагирует на ввод с клавиатуры, как и обычный интерфейс. Кроме этого, теперь пользователь не сможет выйти из полноэкранного режима, нажав Esc. Это сделано для того, чтобы дать возможность определить собственное поведение для Esc. Поэтому разработчик должен помнить о том, что пользователю необходимо предоставить альтернативных способ покинуть приложение.

Отсутствие сообщений о доступе к ресурсам

При работе с буфером обмена и другими внешними ресурсами (камера, микрофон), пользователь не будет получать сообщения, позволяющие разрешить или запретить доступ. При этом, такие классы как Clipboard, можно использовать в любом месте кода.

Запросы между доменами

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

Доступ к некоторым папкам

В режиме с повышенным доверием, приложение получает полный контроль к некоторым специальным папкам, ассоциированными с пользователем: MyDocuments, MyVideos, MyPictures, MyMusic. Пути к указанным папкам можно получить, используя статический класс Environment. При этом нужно отметить, что SilverLight-приложение работает только с папками, но не с библиотеками (Win 7).

Данная возможность хоть и ограничена, но одна из самых опасных. Я не вижу никаких ограничений, запрещающих мне записать исполняемый файл в одну из этих папок, а затем запустить его. Если при этом пользователь имеет выключенным нотификации UAC (Windows 7), то права такого приложения будут неограниченные.

Взаимодействие с COM

И, наконец, самая интересная возможность – доступ к COM API.

С одной стороны это означает, что теперь разработчик может получить доступ к COM-модели таких продуктов как Word и Excel. Это позволит создавать документы «на лету» и заполнять их данными, выбранными пользователем из внешних хранилищ.

С другой стороны, пользователь обычно имеет достаточно большой спектр COM-объектов, установленных по умолчанию. Например, WScript, позволяющий запускать приложения из любой директории на вашей машине (даже те, которые Вы можете скопировать, используя предыдущую возможностьJ):

dynamic cmd = ComAutomationFactory.CreateObject("WScript.Shell");
cmd.Run(string.Format(writerApp, @ArgumentFileBox.Text),1, true);

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

В завершении темы хочу отметить, что объект Application имеет специальное свойство HasElevatedPermissions, которое позволяет проверить, запущено ли это приложение с повышенным доверием. Свойство имеет смысл, если Вы будете делать инсталяции сразу двух типов приложений, работающих вне браузера (с повышенным доверием и стандартное).

Реклама

Written by Sergiy Baydachnyy

15.01.2010 в 13:11

Опубликовано в SilverLight

Tagged with

комментария 4

Subscribe to comments with RSS.

  1. […] Читать всю правду в моем блоге о технологиях Опубліковані Friday, January 15, 2010 1:12 PM від Sergiy Baydachnyy […]

  2. Пока бравзеры позволяют скачать и запустить .exe после предупреждения — смысла ограничевать инсталяцию silverlight аппликаций с full trust нет.

    yuriy

    23.01.2010 at 23:41

  3. А если я динамически скомпилю программу и запущу. Кто мне мешает. Если .NET установлен, никаких проблем.

    Андрей

    04.02.2010 at 23:54


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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: