Considerações de segurança específicas para soluções do Office

Os recursos de segurança fornecidos pela Microsoft.NET Framework e o Microsoft Office podem ajudar a proteger suas soluções Office contra possíveis ameaças à segurança. Este tópico explica algumas dessas ameaças e fornece recomendações para ajudar a proteger contra eles. Ele também inclui informações sobre como as configurações de segurança Microsoft Office afetam soluções do Office.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Microsoft Office 2010 e o sistema 2007 do Microsoft Office. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Confiável o código é redefinido em um novo documento mal-intencionado

Um invasor poderá assumir o código confiável que destina-se um propósito específico (por exemplo, baixando informações pessoais para um emprego) e reutilizá-lo em outro documento (como uma planilha). O código não sabe que o documento original não está sendo executado e pode abrir outras ameaças (como revelar informações pessoais ou executar códigos com privilégios maiores) quando aberto por outro usuário. Como alternativa, o invasor simplesmente pode modificar os dados na planilha que, quando enviadas para a vítima, ele se comporta inesperadamente. Alterando os valores, fórmulas ou características de apresentação de uma planilha vinculada ao código, é possível que um usuário malicioso atacar outro usuário, enviando um arquivo modificado. Também é possível que os usuários acessem as informações que não deveriam ver modificando os valores na planilha.

  • Como o local do assembly e o local do documento devem ter provas suficientes para executar, esse ataque não é fácil de montar. Por exemplo, documentos em anexos de email ou em servidores de intranet não confiável não tem permissões suficientes para executar.

  • Para tornar esse ataque possível, o próprio código deve ser escrito de tal forma que ele faz decisões com base em dados potencialmente não confiáveis. Um exemplo é a criação de uma planilha que tenha uma célula oculta que contém o nome de um servidor de banco de dados. O usuário envia a planilha para uma página ASPX, que tenta se conectar ao servidor usando a autenticação de SQL e uma senha de SA embutido. Um invasor pode substituir o conteúdo da célula oculto com um nome de computador diferente e obter a senha do SA. Para evitar esse problema, nunca embutir senhas e sempre verificar IDs de servidor contra uma lista interna de servidores que são reconhecidamente boa antes de acessar o servidor.

Recommendations

  • Sempre valide entrada de dados e, se ele vem de um usuário, o documento, um banco de dados, um serviço da Web ou qualquer outra fonte.

  • Tenha cuidado ao expor os tipos específicos de funcionalidades, como, por exemplo, a obtenção de dados privilegiados no nome do usuário e colocá-lo em uma planilha desprotegida.

  • Dependendo do tipo de aplicativo, pode fazer sentido para verificar se o documento original está em execução antes de executar qualquer código (por exemplo, verificar que ele seja executado a partir de um documento armazenado em um local conhecido e seguro).

  • Pode ser uma boa idéia para exibir um aviso quando o documento será aberto se seu aplicativo executa quaisquer ações privilegiadas. Por exemplo, você pode criar uma tela de abertura ou de uma caixa de diálogo de inicialização dizendo que o aplicativo acessar informações pessoais e solicite que o usuário optar por continuar ou Cancelar. Se um usuário final recebe um aviso desse tipo de um documento aparentemente inocente, ele ou ela poderá encerrar o aplicativo antes de qualquer coisa é comprometida.

Código é bloqueado pelo Outlook Object Model Guard.

Microsoft Office pode restringir o código que usa certos objetos, métodos e propriedades no modelo de objeto. Restringindo o acesso a esses objetos, o Outlook ajuda a evitar que vírus e worms de email usando o modelo de objeto para fins mal-intencionados. Esse recurso de segurança é conhecido como o protetor de modelo de objeto do Outlook. Se um suplemento tenta usar um método ou propriedade restrita, enquanto o object model guard estiver habilitado, o Outlook exibe um aviso de segurança que permite ao usuário interromper a operação ou permite que o usuário conceder acesso à propriedade ou método para um período de tempo limitado. Se o usuário parar a operação, os suplementos do Outlook é criado usando Visual Studio Tools for Office lançará um COMException.

O object model guard pode afetar o add-ins de maneiras diferentes, dependendo se o Outlook é usado com Microsoft Exchange Server de:

  • Se o Outlook não for usado com o Exchange, o administrador pode ativar ou desativar o object model guard para todos os suplementos no computador.

  • Se o Outlook é usado com o Exchange, um administrador pode habilitar ou desabilitar o object model guard para todos os suplementos no computador ou o administrador pode especificar que certos suplementos podem ser executado sem encontrar object model guard. Os administradores também podem modificar o comportamento do object model guard para certas áreas do modelo de objeto. Por exemplo, os administradores podem permitir automaticamente que suplementos enviar email programaticamente, mesmo se o object model guard estiver ativado.

O Outlook 2007 altera o comportamento do object model guard para melhorar a experiência do desenvolvedor e usuário e ajudar a manter o Outlook seguro. Para obter mais informações, consulte As alterações de segurança de código no Outlook 2007.

Minimizar os avisos de guarda do modelo de objeto

Para ajudar a evitar os avisos de segurança ao usar os métodos e propriedades restritas, certifique-se de que seu suplemento obtém-se de objetos do Outlook a Application campo de ThisAddIn classe no projeto. Para obter mais informações sobre esse campo, consulte Os suplementos de nível de aplicativo de programação..

Somente os objetos do Outlook obtidos esse objeto podem ser confiável object model guard. Em contraste, os objetos que são obtidos de uma nova Microsoft.Office.Interop.Outlook.Application objeto não são confiáveis e os métodos e propriedades restritas irá gerar avisos de segurança se object model guard estiver ativado.

O exemplo de código a seguir exibe um aviso de segurança se object model guard está habilitado. O To propriedade da Microsoft.Office.Interop.Outlook.MailItem classe é restrito pelo protetor de modelo de objeto. O Microsoft.Office.Interop.Outlook.MailItem objeto não é confiável porque o código obtém de um Microsoft.Office.Interop.Outlook.Application que é criado usando o new operador, em vez de obtenção da Application campo.

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);
}

O exemplo de código a seguir demonstra como usar restrita To propriedade de um Microsoft.Office.Interop.Outlook.MailItem objeto que é confiável pelo protetor de modelo de objeto. O código usa a confiável Application campo para obter o 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);
}
ObservaçãoObservação

Se o Outlook é usado com o Exchange, em seguida, obtendo todos os objetos do Outlook de ThisAddIn.Application não garante que o add-in será capaz de acessar o modelo da objeto inteiro do Outlook. Por exemplo, se um administrador do Exchange configura o Outlook para negar automaticamente todas as tentativas de acessar informações de endereço usando o modelo de objeto do Outlook, em seguida, Outlook não permitirá que o exemplo de código anterior acessar o To propriedade, mesmo que o exemplo de código usa a confiável ThisAddIn.Application campo.

Especificando quais suplementos para confiança ao usar o Exchange

Quando o Outlook é usado com o Exchange, os administradores podem especificar que certos suplementos podem ser executado sem encontrar object model guard. Suplementos do Outlook criados usando Visual Studio Tools for Office não pode ser confiável individualmente; eles só podem ser confiáveis como um grupo.

Outlook confia em um suplemento com base em um código hash da DLL de ponto de entrada do add-in. Todos os suplementos de Outlook que se destinam a Visual Studio Tools for Office runtime usar a mesma DLL de ponto de entrada (VSTOLoader.dll). Isso significa que, se um administrador confia qualquer suplemento que se destina a Visual Studio Tools for Office runtime a execução sem encontrar object model guard, em seguida, todos os outros suplementos que se destina a Visual Studio Tools for Office runtime também são confiáveis. Para obter mais informações sobre como confiar em suplementos específicos para executar sem encontrar object model guard, consulte especificar o método que o Outlook usa para gerenciar recursos de prevenção de vírus.

Alterações de permissão não terão efeito imediatamente

Se o administrador ajusta as permissões para um documento ou de um assembly, os usuários deverão sair e reinicie todos os aplicativos do Office para essas alterações devem ser aplicadas.

Outros aplicativos que hospedam aplicativos de Microsoft Office também podem impedir que as novas permissões do que está sendo imposta. Os usuários devem encerrar todos os aplicativos que usam o Office, hospedado ou autônomo, quando as diretivas de segurança são alteradas.

Configurações da Central de confiabilidade no sistema de Microsoft Office não afetam suplementos ou personalizações em nível de documento

Os usuários podem evitar suplementos carregamento, definindo uma opção na Trust Center. No entanto, os suplementos de nível de aplicativo e personalizações em nível de documento criado usando Visual Studio Tools for Office não são afetados por essas configurações de confiança.

Se o usuário impede suplementos carregamento usando o Trust Center, os seguintes tipos de suplementos não serão carregado:

  • Gerenciado e suplementos de COM.

  • Marcas inteligentes gerenciadas e não gerenciadas.

  • Documentos inteligentes gerenciados e não gerenciados.

  • Gerenciado e automação suplementos.

  • Componentes gerenciados e dados em tempo real.

ObservaçãoObservação

As marcas inteligentes estão obsoletas no Excel 2010 e Word 2010. For more information, see Visão geral sobre marcas inteligentes.

Os procedimentos a seguir descrevem como os usuários podem usar o Trust Center para restringir o add-ins de carregamento do sistema de Microsoft Office de 2007. Esses procedimentos não afetam os suplementos ou personalizações criadas por meio de Visual Studio Tools for Office.

Para desativar os suplementos em 2010 de Microsoft Office de aplicativos, Excel 2007, PowerPoint 2007 ou Word 2007

  1. Clique o arquivo guia (para aplicativos de 2010 de Microsoft Office) ou o Botão de Microsoft Office (para 2007 aplicativos de Microsoft Office).

  2. Clique o ApplicationName opções botão.

  3. No painel de categorias, clique em Trust Center.

  4. No painel de detalhes, clique em Configurações da Central de confiabilidade.

  5. No painel de categorias, clique em Add-ins.

  6. No painel de detalhes, selecione suplementos de aplicativo exigir a ser assinado por um editor confiável ou desativar todos os aplicativos suplementos.

Para desativar os suplementos no InfoPath 2007, o Outlook 2007, o Project 2007 ou o Visio 2007

  1. Sobre o Ferramentas menu, clique em Trust Center.

  2. No painel de categorias, clique em A segurança de Macro.

  3. No painel de detalhes, selecione sem avisos e desabilitar todas as Macros ou avisos para macros assinadas; todas as macros não assinadas são desativadas.

  4. No painel de categorias, clique em Add-ins.

  5. No painel de detalhes, selecione Aplicar configurações de segurança de macro para instalado add-ins.

Consulte também

Outros recursos

Protegendo as soluções do Office