Depois de aplicar a atualização de segurança 3141780, .NET Framework aplicativos encontram erros de exceção ou falhas inesperadas ao processar arquivos que contêm SignedXml

Aplica-se a
.NET Framework 4.6.1 .NET Framework 4.6.2 .NET Framework 3.5.1

Resumo

Depois de instalar qualquer uma das atualizações de segurança 3141780 (descritas no boletim de segurança MS16-035 da Microsoft), .NET Framework aplicativos podem encontrar erros de exceção ou falhas inesperadas quando estão processando arquivos que contêm SignedXml.

Mais informações

ImportanteEsse método, seção ou tarefa contém etapas que informam como modificar o Registro. No entanto, podem ocorrer problemas graves se você modificar o registro incorretamente. Portanto, fique atento e siga estas etapas com atenção. Para se proteger ainda mais, faça o backup do registro antes de modificá-lo. Dessa forma, se ocorrer algum problema, você poderá restaurar o Registro. Para obter mais informações sobre como fazer o backup e a restauração do Registro, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft:

322756 Como fazer o backup e a restauração do Registro no Windows

Cenário 1

Sintomas do Cenário 1

As aplicações geridas devolvem uma exceção de erro com a seguinte assinatura:

Observação

System.Security.Cryptography.CryptographicException: Não é possível resolve Uri [FileOrUrl].

                
Exemplo

System.Security.Cryptography.CryptographicException: Não é possível resolve Uri testfile.xml.

Resolução do Cenário 1

Os clientes podem aplicar a seguinte chave de registo ao seu sistema:

Entrada de registo

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security@SignedXmlAllowDetachedSignature=1

. Arquivo Reg disponível para download

Para resolve este problema, clique na ligação apropriada e, em seguida, faça duplo clique no ficheiro transferido para efectuar as alterações de registo.

SignedXml-ExternalReferences.reg (processo de 32 bits no sistema de 32 bits e processo de 64 bits no sistema de 64 bits)

SignedXml-ExternalReferences.Wow6432.reg (processo de 32 bits no sistema de 64 bits)

Anotações

  • Esta entrada de registo deve ser uma entrada DWORD.
  • Esta entrada do registo restaura o comportamento anterior de abrir ou transferir um recurso externo ao documento que está a ser verificado para calcular o seu resumo.

Aviso A ativação desta chave de registo pode permitir vulnerabilidades de segurança, incluindo Negação de Serviço, Negação de Serviço de Reflexão Distribuída, Divulgação de Informações, Ignorar Assinatura e Execução Remota de Código.

Cenário 2

Sintomas do cenário 2

A verificação da assinatura falha quando se esperava que o êxito fosse esperado.

Resolução do cenário 2

Se o conteúdo contiver o seguinte bloco de assinatura, considere aplicar a entrada de registo fornecida:

Exemplo de bloco de assinatura

<Documento>

…

<Assinatura: xmlns="http://www.w3.org/2000/09/xmldsig#">

<signedInfo>

<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />

<Algoritmo SignatureMethod = "http://www.w3.org/2000/09/xmldsig#rsa-sha1" />

<Referência URI="...">

<Transformações>

<transform algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116" /></transforma DigestMethod><Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>...</DigestValue/Reference<>/SignedInfo<>SignatureValue>...<></SignatureValue></Signature> ...

</documento>

Entrada de registo

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\SafeTransformMethods@XmlDsigXPathTransform=http://www.w3.org/TR/1999/REC-xpath-19991116

. Arquivo Reg disponível para download

Para resolve este problema, clique na ligação apropriada e, em seguida, faça duplo clique no ficheiro transferido para efectuar as alterações de registo.

XmlDSigXPathTransform.reg (processo de 32 bits no sistema de 32 bits e processo de 64 bits no sistema de 64 bits)

XmlDSigXPathTransform.Wow6432.reg (processo de 32 bits no sistema de 64 bits)

Se o bloco de assinatura contiver o seguinte texto, considere aplicar a entrada de registo fornecida:

Exemplo de bloco de assinatura

<Documento>

…

<Assinatura: xmlns="http://www.w3.org/2000/09/xmldsig#">

<signedInfo>

<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />

<Algoritmo SignatureMethod = "http://www.w3.org/2000/09/xmldsig#rsa-sha1" />

<Referência URI="...">

<Transformações>

<transform algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116" /></transforma DigestMethod><Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>...</DigestValue></Reference></SignedInfo><SignatureValue>...</SignatureValue></Signature>...
</documento>

Entrada de registo

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\SafeTransformMethods@XmlDsigXsltTransform=http://www.w3.org/TR/1999/REC-xslt-19991116

. Arquivo Reg disponível para download

Para resolve este problema, clique na ligação apropriada e, em seguida, faça duplo clique no ficheiro transferido para efectuar as alterações de registo.

XmlDSigXsltTransform.reg (processo de 32 bits no sistema de 32 bits e processo de 64 bits no sistema de 64 bits)

XmlDSigXsltTransform.Wow6432.reg (processo de 32 bits no sistema de 64 bits)

Observação Por padrão, somente as transformações de assinatura XML fornecidas pelo .NET Framework e não aceitam entrada do documento assinado estão habilitadas. Para habilitar transformações de aceitação de entrada ou transformações personalizadas, o URI registrado para essa transformação deve ser especificado como os dados de um valor REG_SZ digitado dentro dessa chave do Registro. O nome do valor não é processado e pode ser qualquer coisa que o administrador do computador escolher.

Aviso As transformações XPath e XSLT permitem que o remetente do documento construa documentos que são computacionalmente caros. Isto pode originar uma situação de Negação de Serviço.