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


Рекомендации по обеспечению безопасности для решений Office

Обновлен: Ноябрь 2007

Средства безопасности, доступные в платформе Microsoft .NET Framework 2003, Microsoft Office 2003 и системе 2007 Microsoft Office, могут обеспечить защиту от различных возможных угроз безопасности в решениях Visual Studio Tools for Office. Тема объясняет некоторые из этих угроз и обеспечивает рекомендации по тому, каким образом защититься от них. Она также включает информацию о том, как действуют параметры безопасности решений Microsoft Office Visual Studio Tools for Office.

Надежный код перенаправляется в новый, потенциально вредоносный документ

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

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

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

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

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

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

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

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

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

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

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

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

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

Более полная документация по системе безопасности объектной модели Outlook 2003, включая список запрещенных методов и свойств, приведена в разделе Что нового в Microsoft Office Outlook 2003 для разработчиков?. Дополнительные сведения о параметрах безопасности Outlook для администраторов Exchange см. в разделе Настройка Outlook 2003 для предотвращения вирусов.

1thd35d7.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

Private Sub UntrustedCode()
    Dim application As New Microsoft.Office.Interop.Outlook.Application
    Dim mailItem1 As Microsoft.Office.Interop.Outlook.MailItem = _
        TryCast(application.CreateItem( _
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem),  _
        Microsoft.Office.Interop.Outlook.MailItem)
    mailItem1.To = "someone@example.com"
    MessageBox.Show(mailItem1.To)
End Sub
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 Sub TrustedCode()
    Dim mailItem1 As Microsoft.Office.Interop.Outlook.MailItem = _
        TryCast(Me.Application.CreateItem( _
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem),  _
        Microsoft.Office.Interop.Outlook.MailItem)
    mailItem1.To = "someone@example.com"
    MessageBox.Show(mailItem1.To)
End Sub
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);
}
1thd35d7.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

Изменение разрешений происходит не сразу

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

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

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

Пользователи могут предотвратить загрузку надстроек путем установки параметров в Центре управления безопасностью. Однако надстройки уровня приложения и настройки уровня документа, созданные при помощи Visual Studio Tools for Office, не подвергаются влиянию этих надежных параметров.

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

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

  • Управляемые и неуправляемые смарт-теги.

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

  • Управляемая и неуправляемая автоматизация надстроек.

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

Следующие процедуры описывают, каким образом пользователи могу использовать Центр управления безопасностью для запрета загрузки надстроек в системе Microsoft Office 2007. Ниже перечислены процедуры, на которые не действуют надстройки или настройки, созданные с помощью Visual Studio Tools for Office.

Отключение надстроек в Excel 2007, PowerPoint 2007, или Word 2007

  1. Нажмите кнопку Microsoft Office.

  2. Нажмите кнопку ПараметрыИмяПриложения.

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

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

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

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

Отключение надстроек в InfoPath 2007, Outlook 2007, или Visio 2007

  1. В меню Сервис выберите пункт Центр управления безопасностью.

  2. В области категорий нажмите Безопасность макросов.

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

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

  5. В области деталей выберите Применить настройки безопасности макросов к установке надстроек.

См. также

Основные понятия

Безопасность в решениях Office (система 2007)

Другие ресурсы

Безопасность в решениях Office

Безопасность в решениях Office (система 2003)