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


Конкретные рекомендации по безопасности решений Office

Средства безопасности, предоставляемые Microsoft .NET Framework и Microsoft Office, помогают защитить решения Office от различных угроз безопасности. В этом разделе описываются некоторые из этих угроз и даются рекомендации по защите от них. Здесь также приводятся сведения о влиянии параметров безопасности Microsoft Office на решения Office.

Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO. См. сведения о функциях, доступных по Приложение Office и типу проекта.

Доверенный код перепрофилируется в новом вредоносном документе

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

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

Чтобы такая атака была возможна, сам код должен быть написан таким образом, чтобы он мог принимать решения на основе потенциально ненадежных данных. Примером является создания листа со скрытой ячейкой, содержащей имя сервера базы данных. Пользователь преобразует лист в ASPX-страницу, которая пытается подключиться к серверу с помощью проверки подлинности SQL и жестко заданного пароля SA. Злоумышленник может заменить содержимое скрытой ячейки именем другого компьютера и получить пароль SA. Чтобы избежать этой проблемы, не следует жестко кодировать пароли; кроме того, перед получением доступа к серверу следует всегда проверять идентификаторы серверов по внутреннему списку серверов, которые заведомо правильные.

Рекомендации

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

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

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

  • Может быть полезно отображать предупреждение при открытии документа, если приложение выполняет какие-либо привилегированные действия. Например, можно создать экран-заставку или окно запуска, сообщающее, что приложение получит доступ к личным сведениям, и пользователь должен будет выбрать продолжение или отмену. Если конечный пользователь получит такое предупреждение из кажущегося безобидным документа, он сможет выйти из приложения, прежде чем что-либо будет повреждено.

Код блокируется охраной объектной модели Outlook

Microsoft Office может запретить коду использовать определенные свойства, методы и объекты в объектной модели. Ограничив доступ к этим объектам, Outlook помогает предотвратить использование объектной модели для вредоносных целей червей и вирусов электронной почты. Эта функция безопасности называется системой безопасности объектной модели Outlook. Если надстройка VSTO пытается использовать ограниченное свойство или метод во время включения объектной модели, Outlook отображает предупреждение системы безопасности, позволяющее пользователю остановить операцию или разрешить пользователю предоставлять доступ к свойству или методу в течение ограниченного периода времени. Если пользователь останавливает операцию, надстройки VSTO Outlook, созданные с помощью решений Office в Visual Studio, будут создавать исключение COMException.

Система безопасности объектной модели может по-разному влиять на надстройки VSTO, в зависимости от того, используется ли Outlook с Microsoft Exchange Server.

  • Если Outlook не используется с Exchange, администратор может включать или отключать систему безопасности объектной модели для всех надстроек VSTO на компьютере.

  • Если Outlook используется с Exchange, администратор может включать или отключать систему безопасности объектной модели для всех надстроек VSTO на компьютере, а также может указать, что определенные надстройки VSTO могут выполняться без задействования системы безопасности объектной модели. Администраторы также могут изменять поведение системы безопасности объектной модели в некоторых областях объектной модели. Например, администраторы могут автоматически разрешить надстройкам VSTO отправлять электронную почту программным способом, даже если объектная модель включена.

    Начиная с Outlook 2007 поведение объектной модели было изменено, чтобы улучшить взаимодействие с пользователем и разработчиком, продолжая поддерживать безопасность Outlook. Дополнительные сведения см. в разделе "Изменения безопасности кода" в Outlook 2007.

Свести к минимуму предупреждения для защиты объектной модели

Чтобы избежать излишних предупреждений системы безопасности при использовании ограниченных свойств и методов, убедитесь, что ваша надстройка VSTO получает объекты Outlook из поля Application класса ThisAddIn в проекте. Дополнительные сведения об этом поле см. в разделе "Программные надстройки VSTO".

Система безопасности объектной модели считает надежными только объекты Outlook, полученные из этого объекта. Напротив, объекты, полученные из нового объекта Microsoft.Office.Interop.Outlook.Application, не считаются надежными, и ограниченные свойства и методы будут вызывать появление предупреждений системы безопасности объектной модели, если она включена.

Следующий пример кода отображает предупреждение системы безопасности, если система безопасности объектной модели включена. Свойство To класса Microsoft.Office.Interop.Outlook.MailItem ограничивается системой безопасности объектной модели. Объект Microsoft.Office.Interop.Outlook.MailItem недоверен, так как код получает его из созданного Microsoft.Office.Interop.Outlook.Application с помощью нового оператора вместо получения из Application поля.

private void UntrustedCode()
{
    Microsoft.Office.Interop.Outlook.Application application =
        new Microsoft.Office.Interop.Outlook.Application();
    Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
        application.CreateItem(
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
        Microsoft.Office.Interop.Outlook.MailItem;
    mailItem1.To = "someone@example.com";
    MessageBox.Show(mailItem1.To);
}

В следующем примере кода показано, как использовать ограниченное свойство To объекта, доверенного Microsoft.Office.Interop.Outlook.MailItem объектной моделью. Код использует доверенное поле Application для получения Microsoft.Office.Interop.Outlook.MailItem.

private void TrustedCode()
{
    Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
        this.Application.CreateItem(
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
        Microsoft.Office.Interop.Outlook.MailItem;
    mailItem1.To = "someone@example.com";
    MessageBox.Show(mailItem1.To);
}

Примечание.

Если Outlook используется с Exchange, получение всех объектов Outlook из ThisAddIn.Application не гарантирует, что надстройка VSTO будет иметь доступ ко всей объектной модели Outlook. Например, если администратор Exchange задает Outlook автоматически запрещать все попытки доступа к сведениям об адресе с помощью объектной модели Outlook, Outlook не позволит предыдущему примеру кода получить доступ к свойству To, даже если в примере кода используется доверенное ThisAddIn.Application поле.

Укажите, какие надстройки будут доверять при использовании Exchange

При использовании Outlook с Exchange администраторы могут указать, что определенные надстройки VSTO могут выполняться без участия системы безопасности объектной модели. Надстройки VSTO Outlook, созданные с помощью решений Office в Visual Studio, не могут быть доверенными по отдельности; они могут быть доверенными только как группа.

Outlook доверяет надстройке VSTO на основе хэш-кода библиотеки DLL точки входа надстройки VSTO. Все надстройки VSTO Outlook, предназначенные для среды выполнения набор средств Visual Studio для Office, используют одну и ту же библиотеку DLL точки входа (VSTOLoader.dll). Это означает, что если администратор доверяет любой надстройке VSTO, которая предназначена для выполнения набор средств Visual Studio для Office среды выполнения, не сталкиваясь с объектной моделью, то все остальные надстройки VSTO, предназначенные для среды выполнения набор средств Visual Studio для Office, также являются доверенными. Дополнительные сведения об указании конкретных доверенных надстроек VSTO, которым разрешается выполняться без системы безопасности объектной модели, см. в разделе Выбор метода, используемого Outlook для управления функциями антивирусной защиты.

Изменения разрешений не вступают в силу немедленно

Если администратор настраивает разрешения для документа или сборки, пользователи должны закрыть и перезапустить все приложения Office, чтобы изменения вступили в силу.

Кроме того, применение новых разрешений могут запрещать другие приложения, размещающие приложения Microsoft Office. При изменении политик безопасности пользователи должны выйти из всех приложений, использующих Office, как размещенных, так и автономных.

Параметры центра управления безопасностью в системе Microsoft Office не влияют на надстройки или настройки на уровне документов

Пользователи могут запретить загрузку надстроек VSTO, установив соответствующий параметр в центре управления безопасностью. Тем не менее эти параметры доверия не влияют на надстройки VSTO и настройки уровня документа, созданные с помощью решений Office в Visual Studio.

Если пользователь запрещает загрузку настройки VSTO с помощью центра управления безопасностью, не будут загружаться следующие типы надстроек VSTO:

  • управляемые и неуправляемые надстройки VSTO модели COM;

  • управляемые и неуправляемые смарт-документы;

  • управляемые и неуправляемые надстройки VSTO автоматизации;

  • управляемые и неуправляемые компоненты данных в режиме реального времени.

    В следующих процедурах описано, как пользователи могут использовать Центр управления безопасностью для ограничения загрузки надстроек VSTO в Microsoft Office 2013 и Microsoft Office 2010. Эти процедуры не влияют на надстройки VSTO и настройки, созданные с помощью средств разработки Office в Visual Studio.

Отключение надстроек VSTO в приложениях Microsoft Office 2010 и Microsoft Office 2013

  1. Перейдите на вкладку Файл .

  2. Нажмите кнопку "Параметры applicationName".

  3. В области категорий нажмите Центр управления безопасностью.

  4. В области сведений нажмите Параметры центра управления безопасностью.

  5. В области категорий нажмите Надстройки.

  6. В области сведений установите флажок Все надстройки приложений должны быть подписаны надежными издателями или Отключить все надстройки приложений.