Compartilhar via


Considerações de 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 para ajudar a protegê-las. 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 de nível de documento e projetos de suplemento VSTO. Consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

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

Um invasor pode pegar código confiável destinado a uma finalidade específica, por exemplo, baixar informações pessoais para um aplicativo de emprego, e reutilizá-lo 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 privilégios aumentados, quando aberto por um usuário diferente. Como alternativa, o invasor pode modificar os dados na planilha de forma que, quando enviados à vítima, ele se comporte inesperadamente. 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 para os usuários acessar informações que eles não devem 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 tal forma que ele tome 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 contenha 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 codificada. 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 senhas e sempre verifique as IDs do servidor em uma lista interna de servidores que são conhecidos por serem bons 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 de 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 ou ela será capaz de sair do aplicativo antes que qualquer coisa seja comprometida.

O código é bloqueado pelo protetor de modelo de objeto do Outlook

O Microsoft Office pode restringir o uso de código de 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 para fins mal-intencionados. Esse recurso de segurança é conhecido como o protetor de modelo de objeto do Outlook. Se um suplemento VSTO tentar usar uma propriedade ou método restrito enquanto o protetor do modelo de objeto estiver habilitado, o Outlook exibirá um aviso de segurança que permite que o usuário interrompa a operação ou permita que o usuário conceda acesso à propriedade ou ao método por um período limitado. Se o usuário parar a operação, os suplementos VSTO do Outlook criados usando soluções do Office no Visual Studio lançarão um COMExceptionarquivo .

O protetor de modelo de objeto pode afetar os suplementos do VSTO de maneiras diferentes, dependendo se o Outlook é usado com o Microsoft Exchange Server:

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

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

    A partir do Outlook 2007, o comportamento do protetor de modelo de objeto foi alterado para melhorar a experiência do desenvolvedor e do usuário e, ao mesmo tempo, ajudar 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 Application campo da ThisAddIn classe em seu projeto. Para obter mais informações sobre esse campo, consulte Suplementos do VSTO do programa.

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

O exemplo de código a seguir exibe um aviso de segurança se o protetor de modelo de objeto estiver habilitado. A To propriedade da classe é restrita pelo protetor do modelo de Microsoft.Office.Interop.Outlook.MailItem objeto. O Microsoft.Office.Interop.Outlook.MailItem objeto não é confiável porque o código o obtém de um Microsoft.Office.Interop.Outlook.Application que é criado usando o operador new , em vez de obtê-lo do Application campo.

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 restrita To de um Microsoft.Office.Interop.Outlook.MailItem objeto que é confiável pelo protetor de modelo de objeto. O código usa o campo confiável Application 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 não garante que o suplemento VSTO poderá acessar todo o modelo de objeto do ThisAddIn.Application 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 confiável ThisAddIn.Application .

Especificar em quais suplementos confiar ao usar o Exchange

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

O Outlook confia em um suplemento VSTO com base em um código hash da DLL do ponto de entrada do suplemento VSTO. Todos os suplementos VSTO do Outlook destinados ao tempo de execução 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 do VSTO destinado ao tempo de execução do Visual Studio Tools for Office para ser executado sem encontrar o protetor do modelo de objeto, todos os outros suplementos do VSTO destinados ao tempo de execução do Visual Studio Tools for Office também serão confiáveis. Para obter mais informações sobre como confiar que suplementos VSTO específicos sejam executados sem encontrar o protetor de 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 encerrar 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 encerrar todos os aplicativos que usam o Office, hospedados ou autônomos, quando as diretivas de segurança são alteradas.

As configurações da Central de Confiabilidade no Microsoft Office System não afetam Suplementos ou personalizações em nível de documento

Os usuários podem impedir que os suplementos do VSTO sejam carregados definindo uma opção na Central de Confiabilidade. No entanto, suplementos VSTO e personalizações em nível de 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 do VSTO sejam carregados usando a Central de Confiabilidade, os seguintes tipos de suplementos do VSTO não serão carregados:

  • Suplementos COM VSTO 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 restringir o carregamento de suplementos VSTO no Microsoft Office 2013 e no Microsoft Office 2010. Esses procedimentos não afetam os suplementos VSTO ou personalizações criadas usando as ferramentas de desenvolvimento do Office no Visual Studio.

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

  1. Escolha a guia Arquivo .

  2. Escolha o botão ApplicationNameOptions .

  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 de aplicativo sejam assinados por um editor confiável ou Desabilitar todos os suplementos de aplicativo.