Partilhar via


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

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

Aplica-se a: as informações neste tópico se aplicam a projetos em nível de documento e projetos de suplemento do VSTO. Confira Recursos disponibilizados pelo aplicativo do Office e pelo tipo de projeto.

O código confiável é reaproveitado em um documento novo e mal-intencionado

Um invasor pode pegar um código confiável destinado a uma finalidade específica, por exemplo, baixar informações pessoais para um aplicativo de emprego e reutilizá-las em outro documento, como uma planilha. O código não sabe que o documento original não está em execução e pode abrir outras ameaças, como revelar informações pessoais ou executar código com mais privilégios, quando aberto por um usuário diferente. Como alternativa, o invasor pode modificar os dados na planilha de modo que, quando enviados à vítima, eles se comportem de maneira inesperada. Ao alterar os valores, fórmulas ou características de apresentação de uma planilha vinculada ao código, é possível que um usuário mal-intencionado ataque outro usuário enviando um arquivo modificado. Também pode ser possível que os usuários acessem informações que não deveriam ver modificando valores na planilha.

Como o local do assembly e o local do documento devem ter evidências suficientes para serem executados, esse ataque não é fácil de montar. Por exemplo, documentos em anexos de email ou em servidores de intranet não confiáveis não têm permissões suficientes para serem executados.

Para tornar esse ataque possível, o próprio código deve ser escrito de forma a tomar decisões com base em dados potencialmente não confiáveis. Um exemplo é a criação de uma planilha que tem 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 a esse servidor usando autenticação SQL e uma senha SA embutida em código. Um invasor pode substituir o conteúdo da célula oculta por um nome de computador diferente e obter a senha SA. Para evitar esse problema, nunca codifique as senhas e sempre verifique os IDs do servidor em uma lista interna de servidores que são conhecidos por serem confiáveis antes de acessar o servidor.

Recomendações

  • Sempre valide a entrada e os dados, sejam eles provenientes do usuário, do documento, de um banco de dados, de um serviço Web ou de qualquer outra fonte.

  • Tenha cuidado ao expor tipos específicos de funcionalidade, como obter dados privilegiados em nome do usuário e colocá-los em uma planilha desprotegida.

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

  • Pode ser uma boa ideia exibir um aviso quando o documento for aberto se o aplicativo executar ações privilegiadas. Por exemplo, você pode criar uma tela inicial ou uma caixa de diálogo na inicialização informando que o aplicativo acessará informações pessoais e fazer com que o usuário opte por continuar ou cancelar. Se um usuário final receber esse aviso de um documento aparentemente inocente, ele poderá sair do aplicativo antes que algo seja comprometido.

O código é bloqueado pela proteção do modelo de objeto do Outlook

O Microsoft Office pode impedir que códigos usem determinadas propriedades, métodos e objetos no modelo de objeto. Ao restringir o acesso a esses objetos, o Outlook ajuda a impedir que worms e vírus de email usem o modelo de objeto com más intenções. Esse recurso de segurança é conhecido como proteção do modelo de objeto do Outlook. Se um suplemento VSTO tentar usar uma propriedade ou método restrito enquanto a proteção do modelo de objeto estiver habilitada, o Outlook exibirá um aviso de segurança que permite que o usuário interrompa a operação ou conceda acesso à propriedade ou ao método por um período limitado de tempo. Se o usuário interromper a operação, os suplementos VSTO do Outlook criados com soluções do Office no Visual Studio lançarão um COMException.

A proteção do modelo de objeto pode afetar os suplementos VSTO de maneiras diferentes, caso o Outlook seja usado com o Microsoft Exchange Server ou não:

  • Se o Outlook não for usado com o Exchange, um administrador poderá habilitar ou desabilitar a proteção do modelo de objeto para todos os suplementos VSTO no computador.

  • Se o Outlook for usado com o Exchange, um administrador poderá habilitar ou desabilitar a proteção do modelo de objeto para todos os suplementos VSTO no computador, ou o administrador poderá especificar que determinados suplementos VSTO podem ser executados sem encontrar a proteção do modelo de objeto. Os administradores também podem modificar o comportamento da proteção do modelo de objeto para determinadas áreas do modelo de objeto. Por exemplo, os administradores podem permitir automaticamente que os suplementos VSTO enviem emails programaticamente, mesmo que a proteção do modelo de objeto esteja habilitada.

    A partir do Outlook 2007, o comportamento da proteção do modelo de objeto foi alterado para melhorar a experiência do desenvolvedor e do usuário, ajudando a manter o Outlook seguro. Para obter mais informações, consulte Alterações de segurança de código no Outlook 2007.

Minimizar avisos de proteção do modelo de objeto

Para ajudar a evitar avisos de segurança ao usar propriedades e métodos restritos, verifique se o suplemento VSTO obtém objetos do Outlook do campo Application da classe ThisAddIn em seu projeto. Para obter mais informações sobre esse campo, consulte Suplementos VSTO do programa.

Somente objetos do Outlook obtidos desse objeto podem receber confiança da proteção do modelo de objeto. Por outro lado, os objetos obtidos de um novo objeto Microsoft.Office.Interop.Outlook.Application não são confiáveis, e as propriedades e métodos restritos gerarão avisos de segurança se a proteção do modelo de objeto estiver habilitada.

O exemplo de código a seguir exibirá um aviso de segurança se a proteção do modelo de objeto estiver habilitada. A propriedade To da classe Microsoft.Office.Interop.Outlook.MailItem é restrita pela proteção do modelo de objeto. O objeto Microsoft.Office.Interop.Outlook.MailItem não é confiável porque o código o obtém de um Microsoft.Office.Interop.Outlook.Application que é criado usando o novo operador, em vez de obtê-lo do campo 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);
}

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

Observação

Se o Outlook for usado com o Exchange, a obtenção de todos os objetos do Outlook de ThisAddIn.Application não garante que o suplemento VSTO poderá acessar todo o modelo de objeto do Outlook. Por exemplo, se um administrador do Exchange definir o Outlook para negar automaticamente todas as tentativas de acessar informações de endereço usando o modelo de objeto do Outlook, o Outlook não permitirá que o exemplo de código anterior acesse a propriedade To, mesmo que o exemplo de código use o campo ThisAddIn.Application confiável.

Especificar em quais suplementos confiar ao usar o Exchange

Quando o Outlook é usado com o Exchange, os administradores podem especificar que determinados suplementos VSTO podem ser executados sem encontrar a proteção do modelo de objeto. Os suplementos VSTO do Outlook criados usando soluções do Office no Visual Studio não podem ser confiados individualmente, eles só podem ser confiados como um grupo.

O Outlook confia em um suplemento VSTO com base em um código de hash da DLL do ponto de entrada do suplemento VSTO. Todos os suplementos VSTO do Outlook direcionados ao runtime do Visual Studio Tools for Office usam a mesma DLL de ponto de entrada (VSTOLoader.dll). Isso significa que, se um administrador confiar em qualquer suplemento VSTO direcionado ao runtime do Visual Studio Tools for Office para ser executado sem encontrar a proteção do modelo de objeto, todos os outros suplementos VSTO direcionados ao runtime do Visual Studio Tools for Office também serão confiáveis. Para obter mais informações sobre como confiar em suplementos VSTO específicos para serem executados sem encontrar a proteção do modelo de objeto, consulte Especificar o método que o Outlook usa para gerenciar recursos de prevenção contra vírus.

As alterações de permissão não entram em vigor imediatamente

Se o administrador ajustar as permissões para um documento ou assembly, os usuários deverão sair e reiniciar todos os aplicativos do Office para que essas alterações sejam impostas.

Outros aplicativos que hospedam aplicativos do Microsoft Office também podem impedir que as novas permissões sejam impostas. Os usuários devem sair de todos os aplicativos que usam o Office, hospedados ou autônomos, quando as políticas de segurança forem alteradas.

As configurações da Central de Confiabilidade no sistema do Microsoft Office não afetam suplementos ou personalizações no nível do documento

Os usuários podem impedir que os suplementos VSTO sejam carregados definindo uma opção na Central de Confiabilidade. No entanto, os suplementos VSTO e as personalizações no nível do documento criadas usando soluções do Office no Visual Studio não são afetados por essas configurações de confiança.

Se o usuário impedir que os suplementos VSTO sejam carregados usando a Central de Confiabilidade, os seguintes tipos de suplementos VSTO não serão carregados:

  • Suplementos VSTO COM gerenciados e não gerenciados.

  • Documentos inteligentes gerenciados e não gerenciados.

  • Suplementos VSTO de automação gerenciados e não gerenciados.

  • Componentes de dados em tempo real gerenciados e não gerenciados.

    Os procedimentos a seguir descrevem como os usuários podem usar a Central de Confiabilidade para impedir que os suplementos VSTO sejam carregados no Microsoft Office 2013 e no Microsoft Office 2010. Esses procedimentos não afetam os suplementos VSTO ou as personalizações criados usando as ferramentas de desenvolvimento do Office no Visual Studio.

Para desabilitar os suplementos do VSTO nos aplicativos do Microsoft Office 2010 e do Microsoft Office 2013

  1. Selecione a guia Arquivo.

  2. Escolha o botão Opções de ApplicationName.

  3. No painel de categorias, escolha Central de Confiabilidade.

  4. No painel de detalhes, escolha Configurações da Central de Confiabilidade.

  5. No painel de categorias, escolha Suplementos.

  6. No painel de detalhes, selecione Exigir que os Suplementos do Aplicativo sejam Assinados pelo Editor Confiável ou Desabilitar todos os Suplementos do Aplicativo.