MS16-065: Descrição vulnerabilidade de divulgação de informações de protocolo TLS/SSL (CVE-2016-0149): 10 de Maio de 2016

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 3155464
Sumário
Existe uma vulnerabilidade de divulgação de informações o protocolo de segurança de camada de transporte e o protocolo de camada segura de Sockets (TLS/SSL), conforme implementados o componente de encriptação do Microsoft .NET Framework. Um intruso que explorasse com sucesso esta vulnerabilidade poderia desencriptar tráfego TLS/SSL encriptado.

Para explorar a vulnerabilidade, um intruso teria primeiro injectar dados não encriptados para o canal de segurança e, em seguida, efectuar um ataque de (MiTM) de man-in-the-middle entre o cliente de destino e um servidor legítimo. Esta actualização resolve a vulnerabilidade modificando a forma como o que o componente de encriptação .NET envia e recebe pacotes de rede encriptadas.

Esta vulnerabilidade é fixada como parte do Boletim de segurança Microsoft MS16-065. Esta actualização altera a forma que o componente de encriptação do .NET Framework envia e recebe pacotes de rede encriptadas.

A tabela seguinte contém hiperligações para a entrada padrão para cada vulnerabilidade na lista de vulnerabilidades e exposições comuns.

Título de vulnerabilidadeNúmero CVEDivulgadas publicamenteExplorada
Vulnerabilidade de Ocultação de TLS/SSLDE 2016-CVE-0149SimNão

Resolução da vulnerabilidade

A alteração introduzida no Boletim de segurança Microsoft MS16-065 faz com que o TLS primeiros gravar após o handshake a ser dividida. Isto faz com que o SslStream, WebRequest (HttpWebRequest, FtpWebRequest), SmtpClient e HttpClient (onde com base em HttpWebRequest) transmissões em sequência para devolver um único byte para ler primeiro, imediatamente seguidos pelos bytes restantes (n-1) no leituras sucessivas. Esta alteração de comportamento ocorre apenas para aplicações que utilizam TLS 1.0 + cifragem progressiva, mas não quando utilizar TLS 1.1 ou TLS 1.2.

Nota Como um pré-requisito, tem de instalar Boletim de segurança Microsoft MS12-006 Para activar esta actualização.

Esta alteração pode fazer com que algumas aplicações baseadas no .NET Framework para dividir. Este artigo descreve duas abordagens que pode utilizar para actualizar a aplicação funcione correctamente depois de aplicar Boletim de segurança Microsoft MS16-065.

Factores atenuantes para problemas de compatibilidade

Opção 1: Mudar para o protocolo TLS 1.2

Esta opção faz com que a aplicação utiliza o protocolo TLS 1.2 quer modificando o registo ou configurar programaticamente a versão do protocolo.
  • Modificar o registo

    Importante Siga os passos nesta secção cuidadosamente. Poderão ocorrer problemas graves se modificar o registo incorretamente. Antes de o modificar, criar uma cópia de segurança do registo para restauro no caso de ocorrerem problemas.

    O .NET Framework 4.0 e as aplicações de 4.5.x do .NET Framework que estão em execução no .NET Framework 4.5 e versões posteriores podem mudar o protocolo predefinido para a TLS 1.2, o TLS 1.1 e o TLS 1.0, activando a chave de registo SchUseStrongCrypto . Esta chave de registo é discutida na secção Acções sugeridas o Segurança da Microsoft 2960358 consultivo tópico no Web site da Microsoft TechNet.

    Importante Esta alteração de registo só funcionará caso se verifiquem as seguintes condições:
    • Aplicações que utilizem APIs baseadas em ServicePointManager são não a definição de ServicePointManager.SecurityProtocol valor explicitamente. Os exemplos dessas classes incluem System.Net.Http.HttpClient, System.Net.FtpWebRequest, System.Net.HttpWebRequeste System.Net.Mail.SmtpClient. Definir o ServicePointManager.SecurityProtocol no código tem precedência sobre o registo.
    • Aplicações estão a utilizar o SslStream AuthenticateAsClient(String) sobrecarga.

  • Configurar programaticamente a versão do protocolo

    O .NET Framework 4.0 e 4.5 aplicações que estão em execução no .NET Framework 4.5 e versões posteriores e que utilizam o SslStream AuthenticateAsClient(String,X509CertificateCollection,SslProtocols,Boolean) deve ser recompilada sobrecarga, especificando SslProtocols.Tls12, SslProtocols.Tls11e SslProtocols.Tls como o terceiro parâmetro. Para obter uma descrição completa de como utilizar a classe de SslStream, consulte o Classe SslStream tópico no Web site da Microsoft para programadores (MSDN).

    Nota O .NET Framework 4.6 e versões posteriores utilizam TLS 1.2, o TLS 1.1 e o TLS 1.0 como as predefinições de protocolo. Este assunto é discutido do Segurança da Microsoft 2960358 consultivo tópico no Web site da Microsoft TechNet.

Opção 2: Dividir do identificador de pacotes

Esta actualização faz com que um único registo a ser dividida em vários registos. Por conseguinte, se uma aplicação espera que o registo completo esteja disponível numa única chamada de leitura , esses pedidos poderão quebrar. Para se certificar de que a aplicação funciona correctamente, certifique-se de que a aplicação processa pacotes de divisão por efectuar a chamada de Stream.Read correctamente. Pode utilizar o código de exemplo disponível Aqui uma referência para a correcção da aplicação para efectuar correctamente a leitura de chamada.

Para um exemplo de pedido HTTP que mostra a diferença no comportamento anterior (com a mitigação) e depois (sem as medidas de atenuação) actualizações 3147461 e 3147458 foram instalados, consulte a secção "Mais informação".

Para obter um exemplo do método Stream.Read completo, consulte o Método de Stream.Read (Byte[],Int32,Int32) tópico no Web site da Microsoft para programadores (MSDN).

Soluções para problemas de compatibilidade de aplicações

Aviso Estas medidas podem tornar um computador ou de uma rede mais vulnerável a ataques por utilizadores mal intencionados ou software malicioso como vírus. Não é recomendada a estas soluções alternativas, mas fornece estas informações para que possa implementar estas soluções alternativas à sua própria responsabilidade. Utilize estas soluções na sua conta e risco.

Método 1: Actualizar chaves de registo (disponíveis para todas as versões do .NET Framework)



Desactivar a estrutura SCH_SEND_AUX_RECORD (Globally Unique Identifier)
Para todas as aplicações, adicione a seguinte subchave de registo:
Localização do registo:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>

Nome DWORD: SchSendAuxRecord
Dados do valor: 0

Nota O marcador de posição de <version_number>é v4.0.30319 ou v2.0.50727, dependendo da versão.

Para aplicações de 32 bits executados em computadores de 64 bits, adicione também a seguinte subchave de registo:
</version_number>
Localização do registo:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>

Nome DWORD: SchSendAuxRecord
Dados do valor: 0

Nota O marcador de posição de <version_number>é v4.0.30319 ou v2.0.50727, dependendo da versão.

</version_number>
Solução alternativa
Para desactivar temporariamente o modo de segurança descrito neste artigo, clique na hiperligação adequada para transferir um ficheiro. reg e, em seguida, faça duplo clique sobre o ficheiro transferido. reg para efectuar as alterações de registo.

Para aplicações de filtragem de Microsoft .NET Framework 3.5:

Para aplicações de filtragem de Microsoft .NET Framework 4.0 e versões posteriores:

Para voltar a activar o modo de segurança descrito neste artigo, clique na hiperligação adequada para transferir um ficheiro. reg e, em seguida, faça duplo clique sobre o ficheiro transferido. reg para efectuar as alterações de registo.

Para aplicações de filtragem de Microsoft .NET Framework 3.5:

Para aplicações de filtragem de Microsoft .NET Framework 4.0 e versões posteriores:

Para mais informações sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo seguinte para visualizar o artigo na Base de Dados de Conhecimento Microsoft:
119591 Como obter ficheiros de suporte da Microsoft a partir de serviços online
A Microsoft analisou este ficheiro quanto à presença de virus. A Microsoft utilizou o software de deteção de vírus mais atual, que estava disponível na data em que o ficheiro foi publicado. O ficheiro está armazenado em servidores com segurança melhorada que ajudam a impedir alterações não autorizadas ao ficheiro.


Desactivar a estrutura SCH_SEND_AUX_RECORD para aplicações individuais
Para todas as aplicações, adicione a seguinte subchave de registo:
Localização do registo:
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

Nome DWORD: Caminho totalmente qualificado para .exe a aplicação (por exemplo, C:\MyApp\MyApp.exe)
Dados do valor: 0

Nota O marcador de posição de <version_number>é v4.0.30319 ou v2.0.50727, dependendo da versão.

Para aplicações de 32 bits executados em computadores de 64 bits, adicione também a seguinte subchave de registo:
</version_number>
Localização do registo:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\<version_number>\System.Net.ServicePointManager.SchSendAuxRecord

Nome DWORD: Caminho totalmente qualificado para .exe a aplicação (por exemplo, C:\MyApp\MyApp.exe)
Dados do valor: 0 (o único valor válido é 0. Qualquer outro valor será ignorado.)

Nota O marcador de posição de <version_number>é v4.0.30319 ou v2.0.50727, dependendo da versão.

</version_number>

Método 2: Alterar a configuração ao nível da aplicação (disponível apenas para o .NET Framework versão 4.6 e posteriores)

Começando a 4.6. .NET Framework, pode alterar a configuração de um nível da aplicação através das alterações de configuração ou registo de código ou aplicação.

4.6 de Framework .NET, pode definir o parâmetro utilizando qualquer um dos seguintes métodos. Estes exemplos desactivar a funcionalidade de segurança.
  • Através de programação

    A primeira coisa que deve fazer a aplicação está a executar o seguinte código. Isto acontece porque o Gestor do serviço de ponto será inicializado apenas uma vez.
    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true);
  • Configuração da aplicação

    Para alterar a configuração da aplicação, adicione a seguinte entrada:
    <runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/></runtime>
  • Chave de registo (global do computador)

    Localizações do registo:
    HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AppContext
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\AppContext

    Valor: Switch.System.Net.DontEnableSchSendAuxRecord
    Tipo: Cadeia de caracteres
    Valor: VERDADEIRO

    Nota Switch.System.Net.DontEnableSchSendAuxRecord = False para todas as aplicações.
Mais Informação
Segue-se um padrão de comunicação de cliente/servidor amostra antes e depois de instalar esta actualização. Esta informação é fornecida para ilustração para identificar quaisquer ruptura da aplicação devido a instalação desta correcção.

Sem medidas de atenuaçãoCom a mitigação
[Servidor] em espera para ligações (127.0.0.1:4431)
[Cliente] Ligar a localhost:4431
[Servidor] Cliente ligado.
[Cliente] Ligado. Autenticar...
[Servidor] Cliente autenticado.
[Cliente] Enviar o pedido (94 Bytes)
[Cliente] A aguardar resposta...

[Servidor] 94 bytes recebidos:<GET></GET>
Anfitrião: contoso.com
Agente do utilizador: Aplicação de testes

>>>
[Servidor] Respondeu com 476 bytes.

[Cliente Bytes 1: 476] Resposta:<HTTP .1="" 200=""></HTTP>

>>>>>
[Servidor] em espera para ligações (127.0.0.1:4431)
[Cliente] Ligar a localhost:4431
[Servidor] Cliente ligado.
[Cliente] Ligado. Autenticar...
[Servidor] Cliente autenticado.
[Cliente] Enviar o pedido (94 Bytes)
[Cliente] A aguardar resposta...
[Servidor] Recepção 1 bytes: <G>>><b00> </b00> </G>
[Servidor] Bytes recebidos de 93:<ET></ET>
Anfitrião: contoso.com
Agente do utilizador: Aplicação de testes

>>>
[Servidor] Respondeu com 476 bytes.
[Cliente Bytes de 1: 1] Resposta: <H>>>><b00> </b00> </H>
[Cliente 2: 475 Bytes] Resposta:<TTP .1="" 200=""></TTP>

>>>>>

Propriedades

ID do Artigo: 3155464 - Última Revisão: 05/10/2016 21:57:00 - Revisão: 1.0

Microsoft .NET Framework 4.6.1, Microsoft .NET Framework 4.6, Microsoft .NET Framework 4.5.2, Microsoft .NET Framework 3.5.1, Microsoft .NET Framework 3.5, Microsoft .NET Framework 2.0 Service Pack 2

  • kbsecvulnerability kbsecurity kbsecbulletin kbfix kbexpertiseinter kbbug atdownload kbmt KB3155464 KbMtpt
Comentários